Мы устанавливаем SAP HANA на RAID- машине. В рамках этапа установки упоминается, что
To disable the usage of transparent hugepages set the kernel settings
at runtime with echo never > /sys/kernel/mm/transparent_hugepage/enabled
Так что вместо времени выполнения, если я хочу сделать это постоянным изменением, я должен добавить вышеупомянутую строку в /proc/vmstat
файл?
Ответы:
Чтобы сделать такие параметры, как этот перманент, вы обычно добавляете их в файл
/etc/sysctl.conf
. Вы можете увидеть полный список доступных опций с помощью этой команды:пример
Вы можете посмотреть
hugepage
в выводе так:Это не там?
Однако просматривая вывод я не увидел
transparent_hugepage
. Погуглив немного больше, я наткнулся на эту страницу Oracle, где обсуждается именно эта тема. Страница озаглавлена: Настройка HugePages для Oracle в Linux (x86-64) .В частности, на этой странице они упоминают, как отключить функцию огромной страницы .
выдержка
Или вы можете добавить команду в свой
/etc/rc.local
файл.Я думаю, что я выбрал бы второй вариант, так как первый рискует быть сброшенным при переходе с одного ядра на другое.
Вы можете подтвердить, что это сработало с помощью следующей команды после перезагрузки:
источник
cat /sys/kernel/mm/transparent_hugepage/enabled
равен[always] madvise never
, тогда статусalways
или что он включен (обратите внимание на[]
квадратные скобкиalways
)sudo update-grub
чтобы получить новые настройки, «записанные в камне». +1 за указание строки файла grub.Я просто хотел добавить к этому вопросу, поскольку я пытался отключить прозрачные огромные страницы в CentOS v6, чтобы включить TokuDB для MariaDB. Я добавил скрипт, упомянутый @slm,
/etc/rc.local
и он отключил прозрачные огромные страницы. Однако из-за того, как скрипты запуска работают в Linux,/etc/rc.local
выполняется после запуска всех сервисов. Поэтому прозрачные огромные страницы были отключены после того, как MariaDB уже был запущен, и движок TokuDB не инициализировался. Единственный другой способ отключить прозрачные огромные страницы - добавитьtransparent_hugepage=never
в параметр ядра.Я заметил комментарий @ Rwky
You can make the first option survive kernel updates by adding transparent_hugepage=never to the GRUB_CMDLINE_LINUX_DEFAULT option in /etc/default/grub on most distributions.
и обнаружил, что CentOS не поддерживает/etc/default/grub
файл и беспокоился обtransparent_hugepage=never
исчезновении параметров ядра при его обновлении. Но не волнуйтесь, CentOS настроен на сохранение любых изменений параметров ядра в grub, поэтому при обновлении они сохраняются.Кроме того, правильный способ изменения параметров ядра для grub - с
grubby
. Я создал этот простой скрипт для добавленияtransparent_hugepage=never
в каждое ядроgrubby
:источник
etc/sysctl.conf
поскольку она будет последовательно применяться к любому ядру, которое может быть когда-либо установлено на коробке.grub-mkconfig
с правами root, чтобы сгенерировать фактический файл конфигурации для grub./etc/default/grub.d/50-cloudimg-settings.cfg
файл вместо того,/etc/default/grub
чтобы он работал./etc/rc.local
но это не работает для меня. Можете ли вы объяснить корень случай для меня./etc/rc.local is executed after all the services are started
его нужно отключить на уровне ядраВот реализация, использующая puppet:
источник
Все вышеперечисленное не работает для меня на EC2 Ubuntu 16.04, но это сработало:
источник
Поскольку строка ядро
transparent_hugepage=never
отключает только половину того , что мне нужно (как, для раздражающего MongoDB неисправного / журналов), что я не упорствовать черезsystemd
сценарий запуска , но теперь есть:echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
. Это работает либо в загрузочном скрипте systemctl (когда он правильно настроен/etc/systemd/system
), либо прямо из клима как есть.источник
В случае с Redis также выдается предупреждение, в котором предлагается отключить THP. Но, как отмечается в сообщении об ошибке , во многих дистрибутивах
/etc/rc.local
выполняется после сервисов, и это не влияет на них, пока они не перезапустятся. Также обратите внимание, что в виртуализированных средах (например, Digitalocean) вы не можете управлять настройками GRUB.Решением в таком случае является использование специального скрипта инициализации, чтобы отключить прозрачные огромные страницы, как предполагает эта страница , с помощью настроек
X-Start-Before
. Например, сценарий инициализации Debian для Redis:источник
Благодаря github и PyYoshi
я нашел этот пример для systemd
Создать файл
Поместите это в служебный файл
Для пользователей Debian / Ubuntu
Затем включите услугу
источник
Если вы столкнулись с проблемой
даже с sudo, попробуйте следующие команды:
источник
Вот быстрый взлом для Ansible (я не хочу заниматься управлением шаблоном
/etc/rc.local
):источник
В SLES11 SP3 с загрузчиком YAST и GRUB мы должны добавить
transparent_hugepage=never
[YAST-bootloader-edit-line с необязательным параметром ядра]. ПРИМЕЧАНИЕ. Этот инструмент изменяет файл/boot/grub/menu.lst
.Только после внесения этого изменения перезагрузка привела к отключению THP.
источник
Вот еще одно кукольное решение в Forge: https://forge.puppetlabs.com/ramseymcgrath/remove_hugepage/
Просто используйте:
в вашем определении узла кукол.
источник