Как освободить огромные страницы из аварийного приложения
У меня есть приложение, которое использует огромный сайт, и приложение внезапно зависло из-за какой-то ошибки. После сбоя, поскольку приложение не освобождает огромную страницу должным образом, номер свободной огромной страницы не увеличивается в файловой системе sys.
$ sudo cat /sys/kernel/mm/hugepages/hugepages-2048kB/free_hugepages
0
$ sudo cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
1024
Есть ли способ освободить огромные страницы силой?
5 ответов
HugeTLB может быть использован либо для общей памяти (и ответ Марка Дж. Бобака с этим справится), либо для файлов приложения mmaps, созданных в файловой системе hugetlb. Если приложение аварийно завершает работу без удаления этих файлов, они сохраняются и сохраняют соответствующую память "выделенной".
Проверьте огромную файловую систему TLB и посмотрите, есть ли какие-либо оставшиеся файлы из приложения. Удаление их освободит память.
Иногда нужно проверить все каталоги, которые были подключены hugetlbfs. Так,
найти смонтированный каталог по команде
mount | grep huge
,проверить каждый каталог, кроме особенно
/dev/hugepages
,удалить все файлы размером 2М. (2M это размер огромной страницы)
Используйте 'ipcs -m', чтобы получить список сегментов общей памяти. Используйте 'ipcrm', чтобы удалить оставшиеся сегменты общей памяти.
Надеюсь, это поможет....
Следуя приведенным ниже инструкциям, вы можете избавиться от выделенных огромных страниц:
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) Теперь, когда я проверяю смонтированный каталог огромный страниц, я вижу файлы, которые не возвращаются ОС приложением 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) Наконец, если вы удалите файлы, начиная с rte map, вы можете вернуть огромные страницы
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
...
Ваш hugetlb может использоваться общей памятью или файлами mmap. попробуйте удалить общие воспоминания или размонтировать hugetlb fs