Перенастройка Huge Pages на CentOS 7
Непонятная для меня ситуация, есть виртуалка с ОЗУ 16Гб, ставим туда чистую CentOS 7, конкретно сейчас 7.9.2009, включаю в /etc/sysctl.conf
# 8Гб HP vm.nr_hugepages = 4096 # cat /proc/meminfo | grep Huge AnonHugePages: 8192 kB HugePages_Total: 4096 HugePages_Free: 4096 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB # sysctl -a | grep nr_hugepages vm.nr_hugepages = 4096 vm.nr_hugepages_mempolicy = 4096
И вроде все в порядке, проходит время сервер отдают под другую задачу, для чего ему не нужно столько ресурсов. Меняю в /etc/sysctl.conf
значение на 3Гб то есть vm.nr_hugepages = 1536
, после перезагрузки все те же команды показывают 1536. И по всем показателям top/htop все именно так.
Теперь меняем количество ОЗУ у виртуалки, было 16Гб теперь достаточно 6Гб, перегружаемся, получаем кернел-паник или что-то вроде этого, опытным путем устанавливаем что это происходит если ОЗУ меньше 8Гб.
Загружаемся, вообще стираем в /etc/sysctl.conf
указания количества больших страниц, пробуем syctl -w vm.nr_hugepages=0
, перегружаемся, получаем по прежнему
# cat /proc/meminfo | grep Huge AnonHugePages: 8192 kB HugePages_Total: 4096 HugePages_Free: 4096 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB # sysctl -a | grep nr_hugepages vm.nr_hugepages = 4096 vm.nr_hugepages_mempolicy = 4096
То есть, ядро по прежнему считает что ему нужно 8Гб Huge pages и посему крашится если ОЗУ меньше.
Вопрос где оно это запоминает и как это перенастраивать?
Думаю в сторону initrd, ибо потенциально сервер несколько раз обновлялся пока настройки были выставлены в 4096, но только потому что вообще непонятно на что думать.