【运维案例】鲲鹏916上dpdk启动失败,内存分配,网卡驱动相关报错

产品:openEuler

版本:openEuler22.03 LTS

分类:内核/网络

来源:现网

问题描述

客户在鲲鹏916上dpdk启动失败,报错如下图;了解到该dpdk编译环境在鲲鹏920上编译正常,同时在鲲鹏920上编译出的文件在鲲鹏916上可正常运行

定位过程:

根据报错查看板卡与OS的兼容性,网卡驱动,大页内存分配,均未发现异常;
结合同样编译环境在920上成功,916上失败的现象,定界为硬件差异导致的编译参数变化;
查看debug日志,发现在NUMA3上分配内存失败;执行dpdk-testpmd,发现探测到的核心数与实际核心数不符;

查找与核心数相关的参数RTE_MAX_LCORE,发现配置文件meson.build中有根据CPU类型进行预设

问题根因:

鲲鹏916和920的cpu类型不同,在编译时执行了不同的编译选项


客户的环境有64核,但默认只给了16
异常:
[root@gzgwu-1 app]# ./dpdk-testpmd --log-level=pmd.net.mlx5:8
EAL: Detected 16 lcore(s)
EAL: Detected 1 NUMA nodes
正常:
[root@gzgwu-1 app]# /usr/gzgwu/etc/dpdk/app-oe22.aarch64/dpdk-testpmd --log-level=pmd.net.mlx5:8
EAL: Detected 64 lcore(s)
EAL: Detected 4 NUMA nodes

只检测到1个numa,导致在numa3上申请内存失败
mlx5_pci: probe of PCI device 000d:31:00.0 aborted after encountering an error: Cannot allocate memory

解决方案:

在config\arm\meson.build文件中将RTE_MAX_LCORE参数改为64

3 Likes