Как освободить огромные страницы из аварийного приложения

У меня есть приложение, которое использует огромный сайт, и приложение внезапно зависло из-за какой-то ошибки. После сбоя, поскольку приложение не освобождает огромную страницу должным образом, номер свободной огромной страницы не увеличивается в файловой системе 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. Так,

  1. найти смонтированный каталог по команде mount | grep huge,

  2. проверить каждый каталог, кроме особенно /dev/hugepages,

  3. удалить все файлы размером 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

Другие вопросы по тегам