Nous installons SAP HANA sur une machine RAID . Dans le cadre de l’étape de l’installation, il est mentionné que,
To disable the usage of transparent hugepages set the kernel settings
at runtime with echo never > /sys/kernel/mm/transparent_hugepage/enabled
Ainsi, au lieu de l'exécution, si je voulais en faire une modification permanente, devrais-je ajouter la ligne ci-dessus à l'intérieur du /proc/vmstat
fichier?
Réponses:
Pour rendre des options telles que ce permanent, 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:Exemple
Vous pouvez chercher
hugepage
dans la sortie comme ceci:Ce n'est pas là?
Cependant, en regardant à travers la sortie, je n'ai pas vu
transparent_hugepage
. Googling un peu plus, je suis tombé sur cette page Oracle qui traite de ce sujet même. La page s'intitule: Configuration d'HugePages pour Oracle sous Linux (x86-64) .Spécifiquement sur cette page, ils expliquent comment désactiver la fonction énorme page .
extrait
Sinon, vous pouvez ajouter la commande à votre
/etc/rc.local
fichier.Je pense que je choisirais la deuxième option, car la première risquerait de se perdre lors de la mise à niveau d’un noyau à l’autre.
Vous pouvez confirmer que cela a fonctionné avec la commande suivante après le redémarrage:
la source
cat /sys/kernel/mm/transparent_hugepage/enabled
est[always] madvise never
, alors le statut estalways
ou il est activé (notez les[]
crochets autouralways
)sudo update-grub
pour obtenir les nouveaux paramètres "gravés dans la pierre". +1 pour pointer la ligne du fichier grub.Je voulais juste ajouter quelque chose à cette question, car j'essayais de désactiver les énormes pages transparentes sur CentOS v6 afin d'activer TokuDB pour MariaDB. J'ai ajouté le script mentionné par @slm
/etc/rc.local
et désactivé les gigantesques pages transparentes. Cependant, en raison de la manière dont les scripts de démarrage fonctionnent sous Linux, ils/etc/rc.local
sont exécutés après le démarrage de tous les services. Par conséquent, des pages volumineuses transparentes étaient en cours de désactivation après le démarrage de MariaDB et l'initialisation du moteur TokuDB. La seule autre façon de désactiver les pages géantes transparentes consiste à ajouter untransparent_hugepage=never
paramètre au 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 craignais detransparent_hugepage=never
disparaître des paramètres du noyau lors de la mise à jour. Mais ne vous inquiétez pas, CentOS est configuré pour conserver toutes les modifications apportées aux paramètres du noyau dans grub afin qu’elles soient conservées lors de la mise à jour.Pour ajouter également, la méthode appropriée pour modifier les paramètres du noyau pour grub consiste à utiliser
grubby
. J'ai créé ce script simple à ajoutertransparent_hugepage=never
à chaque noyau avecgrubby
:la source
etc/sysctl.conf
car cela sera systématiquement appliqué à tout noyau pouvant être installé sur la boîte.grub-mkconfig
tant que "root" pour générer le fichier de configuration actuel de grub./etc/default/grub.d/50-cloudimg-settings.cfg
fichier au lieu de le/etc/default/grub
pour le faire fonctionner./etc/rc.local
mais cela ne fonctionne pas pour moi. Pouvez-vous s'il vous plaît expliquer le cas racine à moi./etc/rc.local is executed after all the services are started
, il doit être désactivé au niveau du noyauVoici une implémentation utilisant marionnette:
la source
Tout ce qui précède n'a pas fonctionné pour moi sur un EC2 Ubuntu 16.04, mais cela a fonctionné:
la source
Depuis la ligne du noyau
transparent_hugepage=never
désactive seulement la moitié de ce que je dois ( les deux, pour MongoDB ennuyeux défaut / logs), que je ne persistait pas dans lesystemd
script de démarrage , mais désormais:echo never | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
. Cela fonctionne dans le script de démarrage systemctl (s'il est correctement configuré/etc/systemd/system
) ou directement à partir de la CLI en l'état.la source
En cas de Redis, il émet également un avertissement suggérant de désactiver THP. Mais comme indiqué dans le rapport de bogue , de nombreuses distributions
/etc/rc.local
sont exécutées après les services et n’ont aucun effet sur elles jusqu’à ce qu’elles redémarrent. Notez également que dans les environnements virtualisés (par exemple, Digitalocean), vous ne pouvez pas contrôler les paramètres GRUB.Dans ce cas, la solution consiste à utiliser un script d’ initialisation dédié pour désactiver les grandes pages transparentes, comme le suggère cette page , par paramètres
X-Start-Before
. Par exemple, le script d' initialisation Debian pour Redis:la source
Merci à github & PyYoshi,
j'ai trouvé cet exemple pour systemd
Créer le fichier
Mettez ceci dans le fichier de service
Pour les utilisateurs debian / ubuntu
Puis activer le service
la source
Si vous rencontrez le problème
même avec sudo, essayez les commandes ci-dessous:
la source
Voici un petit hack pour Ansible (je ne veux pas gérer un modèle pour
/etc/rc.local
):la source
Dans SLES11 SP3 avec le chargeur de démarrage YAST et GRUB, nous devons ajouter
transparent_hugepage=never
[YAST-bootloader-edit-line avec le paramètre de noyau facultatif]. REMARQUE: cet outil modifie le fichier/boot/grub/menu.lst
.Ce n’est qu’après avoir effectué ce changement que le redémarrage a entraîné la désactivation de THP.
la source
Voici une autre solution de marionnettes dans la Forge: https://forge.puppetlabs.com/ramseymcgrath/remove_hugepage/
Il suffit d'utiliser:
dans votre définition de nœud de marionnette.
la source