На коробке у нас 38 ГБ памяти. После того, как я установил количество огромных страниц (2048 КБ) равным 17290, я обнаружил, что использовалась почти вся память. Но я не запускал никакого процесса. Как это могло произойти? Какое количество огромных страниц я должен установить?
2 ответа
Вы зарезервировали почти всю свою память для огромных страниц TLB. Это почти не оставляет памяти для хранения фактических данных. Рекомендуемый размер составляет примерно 1/1000 от того, что вы установили.
Этот вопрос старый, но я думаю, что другой ответ неверен. В зависимости от того, насколько точно были выделены огромные страницы, если все сделано правильно в то время
echo 17290 > /proc/sys/vm/nr_hugepages
или что-то подобное, то, что было замечено, было предполагаемым поведением и документально подтверждено. Абсолютно нормально зарезервировать количество огромных страниц, которые, по его мнению, необходимы для рабочей нагрузки, и что почти вся свободная память уходит в описанном сценарии, как и ожидалось:
Страницы, которые используются как огромные страницы, зарезервированы внутри ядра и не могут использоваться для других целей. Огромные страницы не могут быть выгружены под давлением памяти.
https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt
Другие делают то же самое:
Установите для параметра ядра vm.nr_hugepages подходящее значение. В этом случае мы решили использовать 12 ГБ и установить параметр на 6144 (6144 * 2M = 12 ГБ). Вы можете запустить: echo 6144> /proc /sys /vm /nr_hugepages
https://blog.pythian.com/performance-tuning-hugepages-in-linux/