我有一个使用hugepage的应用程序,由于某些bug,应用程序突然崩溃了。 崩溃后,由于应用程序没有正确释放largepage,因此sys文件系统中的freepagepage号不会增加。
$ sudo cat /sys/kernel/mm/hugepages/hugepages-2048kB/free_hugepages
0
$ sudo cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
1024
有没有办法用武力释放大页?
答案 0 :(得分:6)
有时需要检查已挂载hugetlbfs的所有目录。 所以,
按命令mount | grep huge
查找已安装的目录。
检查除/dev/hugepages
之外的所有目录。
删除所有2M大小的文件。 (2M是巨页的大小)
答案 1 :(得分:1)
使用'ipcs -m'列出共享内存段。 使用'ipcrm'删除剩余的共享内存段。
希望有所帮助....
答案 2 :(得分:1)
HugeTLB可以用于共享内存(而Mark J. Bobak的回答可以解决这个问题)或者在hugetlb文件系统中创建的应用程序mmaps文件。如果应用程序在没有删除这些文件的情况下崩溃,它们就会存活并保持相应的内存“已分配”。
检查hugeTLB文件系统,看看该应用程序是否有任何剩余文件。删除它们会释放内存。
答案 3 :(得分:0)
如果您按照以下说明操作,则可以摆脱分配的大页:
1)让我们检查重启时可以免费使用的大页面
dpdk@dpdkvm:~$ ls /mnt/huge/
empty
dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ cat /proc/meminfo
...
HugePages_Total: 256
HugePages_Free: 256
...
2)使用错误的参数启动dpdk应用程序,产生错误
dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ sudo ./build/kni -c 0x03 -n 2 -- -P -p 0x03 --config="(0,0,1),(1,0,1)"
...
EAL: Error - exiting with code: 1
Cause: No supported Ethernet device found
3)当我检查大页面时,没有任何免费的
dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ cat /proc/meminfo
...
HugePages_Total: 256
HugePages_Free: 0
...
4)现在,当我检查挂载的hugepage目录时,我可以看到dpdk应用程序没有返回给操作系统的文件。
dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ ls /mnt/huge/
...
rtemap_0 rtemap_137 rtemap_176 rtemap_214 rtemap_253 rtemap_62
...
5)最后,如果您删除以rtemap开头的文件,您可以重新提供大页面
dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ sudo rm /mnt/huge/*
[sudo] password for dpdk:
dpdk@dpdkvm:~/dpdk-1.8.0/examples/kni$ cat /proc/meminfo
...
HugePages_Total: 256
HugePages_Free: 256
...
答案 4 :(得分:-3)
您的hugetlb可能由共享内存或mmap文件使用。 尝试删除共享内存或卸载hugetlb fs