记一次dpdk 16.11版本移植错误排查

编译报错

移植后cmd_thread_init()报错,修改cmd使用的管理核。

server启动后报段错误,tx_buffer初始化失败。

增大hugepage,报错remap失败。

reboot设备,修改server的启动参数,绑定网卡到dpdk,启动成功。

段错误

rte_mempool_get段错误,猜测是因为同时操作mempool的线程绑定在了一个lcore上。

查看进程的各个线程极其核分布的命令:

ps -T -P 1168

发现没有异常。

debug报错信息不全,显示missing debug info

修改文件/etc/yum.repos.d/CentOS-Debuginfo.repo  

enabled=1  

安装debuginfo

yum install nss-softokn-debuginfo --nogpgcheck  

debuginfo 安装相应包:  

debuginfo-install 相应包名  

如出现:  

debuginfo-install: command not found  

则先安装yum-utils:  

yum install yum-utils    

如遇见yum不能使用的情况 请检查是否与安装的python版本有关。

rte_pktmbuf_alloc段错误

只要直接执行rte_pktmbuf_alloc()就会段错误。

gdb发现注册mempool的操作的全局变量  rte_mempool_ops_table 中的ops没有注册成功,全部为空。

同一位置:

原因

新版的dpdk的mempool的各个操作的指针在初始化的时候,采用construtor、used的方式预处理函数,在lMakefile中增加-Wl、--whole-archive  -Wl、--no-whole-archive,静态库中的该注册函数才能成功调用。


版权声明:本文为realmardrid原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。