DPDK 17.11.1修改CONFIG_RTE_MAX_LCORES后仍限128核,如何解决?
我来帮你解决DPDK 17.11.1在大核心数系统上的核心检测问题。你遇到的情况其实是该版本的两个关键默认配置限制导致的,只修改CONFIG_RTE_MAX_LCORES是不够的,下面是具体的解决步骤:
1. 修改核心相关的两个关键配置
在dpdk/config/common_base文件中,你需要同时调整以下两个配置项:
CONFIG_RTE_MAX_LCORES:控制DPDK能管理的逻辑核心总数,你已经修改过这个,但还需要配合下面的参数才能生效。CONFIG_RTE_LCORE_ID_MAX:这是DPDK允许的最大逻辑核心ID值,17.11.1版本默认是127,所以ID超过127的核心会被直接过滤,这就是你改了总数仍看不到高编号核心的核心原因。
假设你的系统有256个核心,可以把这两个值调整为:
CONFIG_RTE_MAX_LCORES=256 CONFIG_RTE_LCORE_ID_MAX=255 # 注意核心ID从0开始,所以最大ID为总数减1
2. 调整NUMA节点配置(适配你的CPU 6场景)
你的网卡插在CPU 6上,对应的NUMA节点编号通常也是6。DPDK 17.11.1默认的CONFIG_RTE_MAX_NUMA_NODES是4,这会导致编号大于3的NUMA节点无法被识别,因此需要修改这个参数:
CONFIG_RTE_MAX_NUMA_NODES=8 # 数值至少要大于你的NUMA节点编号6
3. 重新编译DPDK
修改完配置后,需要彻底清理旧的编译产物,再重新编译:
make clean make install T=x86_64-native-linuxapp-gcc # 根据你的实际平台调整编译目标
4. 启动时明确指定目标核心
编译完成后,启动DPDK应用时要显式指定高编号核心,避免默认只检测前128个核心。推荐用直观的核心列表方式:
# 假设CPU 6对应的核心ID是192-223(实际用lscpu命令查看准确范围) ./your_dpdk_app --lcores='192-223' --socket-mem=2048,0,0,0,0,0,2048 # 给NUMA节点6分配足够大页内存
5. 验证核心识别结果
启动应用后,可以在日志中查看DPDK识别的核心列表,或者使用DPDK自带的dpdk-lscpu工具(需提前编译),确认高编号核心和NUMA节点6已被正确加载。
另外,记得确保系统已开启大页内存、禁用CPU节能模式等基础优化,这些会直接影响DPDK的性能表现。
内容的提问来源于stack exchange,提问作者Ramneek
相关产品推荐
相关产品推荐

