DPDK内存初始化失败


dpdk应用程序启动失败,信息提示:

Current CONFIG_RTE_MAX_MEMSEG=256 is not enough
Please either increase it or request less amount of memory.
PANIC in rte_eal_init():
Cannot init memory

罪魁祸首是内存碎片,app无法申请到足够多的连续大块内存,只能申请到很多小块内存。以至于内存块数目超过了系统设置的256个。

最佳解决办法:

dpdk-getting-started-guide.pdf这个文档的2.3.2节中提到

The allocation of hugepages should be done at boot time or as soon as possible after systemboot to prevent memory from being fragmented in physical memory.To reserve hugepages atboot time, a parameter is passed to the Linux* kernel on the kernel command line.

就是申请大页内存应该在系统启动时,或系统启动后尽快申请,避免内存被割裂。

可以在/boot/grub/grub.conf中的kernel行,追加

default_hugepagesz=1G hugepagesz=1G hugepages=4

使用1G的大页,大页内存4G。

In the case of a dual-socket NUMA system, the number of hugepages reserved at boot time is generally divided equally between the two sockets (on the assumption that sufficient memory is present on both sockets).

在双槽NUMA系统下,hugepage内存被均分给了两个槽。

优质内容筛选与推荐>>
1、Spring 计划
2、有的放矢,用好软件开发的目标管理
3、JavaTCP粘包、拆包
4、FILEUTILS 介绍
5、imx6q开机自动启动用户qt应用


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号