我可以限制 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 的分配相等。
我有两个程序,一个是基于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 的分配相等。