Pour rendre des options telles que celle-ci permanentes, vous les ajouterez généralement au fichier /etc/sysctl.conf
. Vous pouvez voir une liste complète des options disponibles en utilisant cette commande :
$ sysctl -a
Exemple
$ sudo sysctl -a | head -5
kernel.sched_child_runs_first = 0
kernel.sched_min_granularity_ns = 6000000
kernel.sched_latency_ns = 18000000
kernel.sched_wakeup_granularity_ns = 3000000
kernel.sched_shares_ratelimit = 750000
Vous pouvez chercher hugepage
dans la sortie comme ceci :
$ sudo sysctl -a | grep hugepage
vm.nr_hugepages = 0
vm.nr_hugepages_mempolicy = 0
vm.hugepages_treat_as_movable = 0
vm.nr_overcommit_hugepages = 0
Ce n'est pas là ?
Cependant, en regardant à travers la sortie, je n'ai pas vu transparent_hugepage
. En cherchant un peu plus sur Google, je suis tombé sur cette page Oracle qui traite de ce sujet. La page est intitulée :Configuration de HugePages pour Oracle sous Linux (x86-64).
Plus précisément sur cette page, ils mentionnent comment désactiver la fonctionnalité énorme page.
extrait
La méthode préférée pour désactiver Transparent HugePages consiste à ajouter "transparent_hugepage=never" à la ligne de démarrage du noyau dans le fichier "/etc/grub.conf".
title Oracle Linux Server (2.6.39-400.24.1.el6uek.x86_64) root (hd0,0) kernel /vmlinuz-2.6.39-400.24.1.el6uek.x86_64 ro root=/dev/mapper/vg_ol6112-lv_root rd_NO_LUKS KEYBOARDTYPE=pc KEYTABLE=uk LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_NO_DM rd_LVM_LV=vg_ol6112/lv_swap rd_LVM_LV=vg_ol6112/lv_root rhgb quiet numa=off transparent_hugepage=never initrd /initramfs-2.6.39-400.24.1.el6uek.x86_64.img
Le serveur doit être redémarré pour que cela prenne effet.
Vous pouvez également ajouter la commande à votre /etc/rc.local
fichier.
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi
Je pense que j'opterais pour la 2ème option, car la première risque d'être désactivée lorsque vous mettez à niveau d'un noyau à l'autre.
Vous pouvez confirmer que cela a fonctionné avec la commande suivante après le redémarrage :
$ cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
Je voulais juste ajouter à cette question car j'essayais de désactiver les pages énormes transparentes sur CentOS v6 afin d'activer TokuDB pour MariaDB. J'ai ajouté le script mentionné par @slm à /etc/rc.local
et il a désactivé les pages énormes transparentes. Cependant, en raison de la façon dont les scripts de démarrage fonctionnent sous Linux, /etc/rc.local
est exécuté après le démarrage de tous les services. Par conséquent, les pages volumineuses transparentes étaient désactivées après le démarrage de MariaDB et le moteur TokuDB ne s'initialisait pas. La seule autre façon de désactiver les pages énormes transparentes consiste à ajouter transparent_hugepage=never
au paramètre du noyau.
J'ai remarqué le commentaire de @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.
et découvert que CentOS ne prend pas en charge le /etc/default/grub
fichier et s'inquiétait pour transparent_hugepage=never
disparaît des paramètres du noyau lorsqu'il est mis à jour. Mais ne vous inquiétez pas, CentOS est configuré pour conserver toutes les modifications apportées aux paramètres du noyau dans grub. Ainsi, lorsqu'il est mis à jour, ils sont conservés.
Pour ajouter également, la bonne façon de modifier les paramètres du noyau pour grub est avec grubby
. J'ai créé ce script simple pour ajouter transparent_hugepage=never
à chaque noyau avec grubby
:
#!/bin/sh
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
for KERNEL in /boot/vmlinuz-*; do
grubby --update-kernel="$KERNEL" --args='transparent_hugepage=never'
done
Tout ce qui précède n'a pas fonctionné pour moi sur un EC2 Ubuntu 16.04, mais ceci a fonctionné :
sudo apt install hugepages
sudo hugeadm --thp-never