我可以限制 dpdk 的大页面大小吗?

Can I limit the hugepages size of dpdk?

我有两个程序,一个是基于dpdk的。并且都使用大页面。但是 dpdk 默认用完所有大页面。我找不到任何关于如何设置 dpdk 可以使用的大页面大小的文档。有什么方便的方法吗?不行就得研究dpdk源码修改了

当然,命令行选项很少。最简单的是-m <megabytes>,但如果你有几个NUMA节点,它的内部逻辑可能会完全错误。

我建议改用 —socket-mem <mbytes,mbytes,...>,它允许为每个 NUMA 节点分配特定数量的兆字节。

详情请见:https://doc.dpdk.org/guides/linux_gsg/linux_eal_parameters.html

要添加,也可以使用此添加到上面@andriy 提到的任何内容来隐式设置硬限制 /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages 2MB 大页面大小

类似的1G我们也可以做到,但这要看支持。

一些注意事项,直到 DPDK 18.11 选项 -m--socket-mem 与 @andriy 所述的一样。但随着 DPDK 19.11 的发布,内部逻辑发生了巨大的变化。

对于高于 18.11 模式的版本,使用 --legacy-mem 模拟旧内存模型。但如果传统模式不是选择,请使用 --socket-limit.

假设平台是x86(2MB和1GB),据我所知2MB可以动态更改,而1GB不能动态分配。因此,在内核 cmd 行中传递的任何选项都将导致所有 NUMA 的分配相等。