DPDK 应用程序停止后无法修改大页面大小
Can't modify hugepage size once DPDK application is stopped
我是 运行 DPDK 应用程序,为此我使用脚本分配大页面。分配和启动应用程序很好。但是后来当我停止应用程序并通过删除挂载点并在 nr_hugepages 下修改 numa 系统来释放大页面时。
稍后,当我尝试分配更多大页面时,它似乎不起作用。
我是如何释放大页面的:
echo 0 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
echo 0 > sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
echo "Unmounting /mnt/huge and removing directory"
grep -s '/mnt/huge' /proc/mounts > /dev/null
if [ $? -eq 0 ] ; then
sudo umount /mnt/huge
fi
if [ -d /mnt/huge ] ; then
sudo rm -R /mnt/huge
fi
然后当我尝试向 nr_hugepages 写入任何新值时,但它没有任何值。它停留在以前的值
# echo 0 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
# echo 0 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
#
# cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
2048
# cat /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
2048
# cat /sys/devices/system/node/node0/meminfo | fgrep Huge
Node 0 AnonHugePages: 10240 kB
Node 0 HugePages_Total: 2048
Node 0 HugePages_Free: 1024
Node 0 HugePages_Surp: 0
# cat /sys/devices/system/node/node1/meminfo | fgrep Huge
Node 1 AnonHugePages: 145408 kB
Node 1 HugePages_Total: 2048
Node 1 HugePages_Free: 1024
Node 1 HugePages_Surp: 2048
# cat /proc/sys/vm/nr_hugepages
2048
# echo 0 > /proc/sys/vm/nr_hugepages
# cat /proc/sys/vm/nr_hugepages
0
# cat /sys/devices/system/node/node0/meminfo | fgrep Huge
Node 0 AnonHugePages: 10240 kB
Node 0 HugePages_Total: 2048
Node 0 HugePages_Free: 1024
Node 0 HugePages_Surp: 2048
# cat /sys/devices/system/node/node1/meminfo | fgrep Huge
Node 1 AnonHugePages: 145408 kB
Node 1 HugePages_Total: 2048
Node 1 HugePages_Free: 1024
Node 1 HugePages_Surp: 2048
# cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
2048
# cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
4096
如果有人早些时候遇到过这个问题,你做了什么来摆脱这个问题?任何指示或解决方法都会有很大帮助。
进程退出后删除大页面映射文件。搜索 /dev/hugepages
或 /mnt/huge
或挂载为 hugetlbfs 的任何其他地方以查找带有 rte_
前缀的文件。这些位置中的每个文件都至少占用一个大页面。
我是 运行 DPDK 应用程序,为此我使用脚本分配大页面。分配和启动应用程序很好。但是后来当我停止应用程序并通过删除挂载点并在 nr_hugepages 下修改 numa 系统来释放大页面时。
稍后,当我尝试分配更多大页面时,它似乎不起作用。
我是如何释放大页面的:
echo 0 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
echo 0 > sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
echo "Unmounting /mnt/huge and removing directory"
grep -s '/mnt/huge' /proc/mounts > /dev/null
if [ $? -eq 0 ] ; then
sudo umount /mnt/huge
fi
if [ -d /mnt/huge ] ; then
sudo rm -R /mnt/huge
fi
然后当我尝试向 nr_hugepages 写入任何新值时,但它没有任何值。它停留在以前的值
# echo 0 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
# echo 0 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
#
# cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
2048
# cat /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
2048
# cat /sys/devices/system/node/node0/meminfo | fgrep Huge
Node 0 AnonHugePages: 10240 kB
Node 0 HugePages_Total: 2048
Node 0 HugePages_Free: 1024
Node 0 HugePages_Surp: 0
# cat /sys/devices/system/node/node1/meminfo | fgrep Huge
Node 1 AnonHugePages: 145408 kB
Node 1 HugePages_Total: 2048
Node 1 HugePages_Free: 1024
Node 1 HugePages_Surp: 2048
# cat /proc/sys/vm/nr_hugepages
2048
# echo 0 > /proc/sys/vm/nr_hugepages
# cat /proc/sys/vm/nr_hugepages
0
# cat /sys/devices/system/node/node0/meminfo | fgrep Huge
Node 0 AnonHugePages: 10240 kB
Node 0 HugePages_Total: 2048
Node 0 HugePages_Free: 1024
Node 0 HugePages_Surp: 2048
# cat /sys/devices/system/node/node1/meminfo | fgrep Huge
Node 1 AnonHugePages: 145408 kB
Node 1 HugePages_Total: 2048
Node 1 HugePages_Free: 1024
Node 1 HugePages_Surp: 2048
# cat /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
2048
# cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
4096
如果有人早些时候遇到过这个问题,你做了什么来摆脱这个问题?任何指示或解决方法都会有很大帮助。
进程退出后删除大页面映射文件。搜索 /dev/hugepages
或 /mnt/huge
或挂载为 hugetlbfs 的任何其他地方以查找带有 rte_
前缀的文件。这些位置中的每个文件都至少占用一个大页面。