很多时候,运行或调试一个DPDK程序,正常退出或强制退出后,发现有些Hugepages没有释放到Linux系统,就类似如下情况:
root@ubuntu:~/Work/DPDK/examples/helloworld# grep -i HugePages_ /proc/meminfo
HugePages_Total: 1024
HugePages_Free: 1020
HugePages_Rsvd: 0
HugePages_Surp: 0
这里HugePages_Total - Hugepages_Free = 4,即有4个大页内存被之前的程序占用而没释放掉。
这次4个还比较少,如果上次运行的程序占用的很多,比如700个,再次运行同样的程序就会出现大页内存不够用的情况。
当程序退出后,如何释放掉这些曾经占用的大页内存呢?
很简单,只需要运行一次DPDK的example helloworld就可以了。
root@ubuntu# cd DPDK/examples/helloworld
root@ubuntu# make
root@ubuntu# ./build/helloworld
之后再次查看系统重大页内存:
root@ubuntu:~/Work/DPDK/examples/helloworld# grep -i HugePages_ /proc/meminfo
HugePages_Total: 1024
HugePages_Free: 1024
HugePages_Rsvd: 0
HugePages_Surp: 0
这次HugePages_Total和HugePages_Free就相等了!