Je souhaite configurer HugePages sur mon instance Linux Amazon Elastic Compute Cloud (Amazon EC2).
Résolution
Remarque : il est recommandé de configurer HugePages dans un environnement de test et d'évaluer les performances avant de déployer des HugePages en production. La taille d’une HugePage ne peut être que de 2 Mo ou de 1 Go sur les systèmes x86_64. Pour plus d'informations sur les HugePages, consultez la page Configuration de HugePages sous Linux sur le site Web d'Oracle.
Prérequis : pour vérifier que votre application ou votre base de données prend en charge les HugePages, contactez votre fournisseur. En outre, pour déterminer la quantité de mémoire disponible, exécutez la commande suivante pour vérifier la mémoire totale de l'instance EC2 :
free -m
Pour configurer les HugePages sur votre instance Linux, procédez comme suit :
-
Exécutez la commande suivante pour vérifier que HugePages n’est pas activé sur votre noyau :
sudo cat /proc/sys/vm/nr_hugepages
Si la sortie de la commande est 0, HugePages n'est pas activé.
-
Pour calculer le nombre de HugePages dont vous avez besoin, utilisez la formule suivante :<br id=hardline_break/>
Nombre de HugePages = Mémoire requise/Taille de la HugePage<br id=hardline_break/>
Remarque : arrondissez le résultat pour vous assurer de créer un nombre suffisant de pages.
-
Exécutez la commande suivante pour activer HugePages et définir la valeur du paramètre du noyau :
sudo sysctl -w vm.nr_hugepages=2048
Remarque : remplacez 2048 par le nombre de HugePages que vous avez calculé.<br id=hardline_break/>
Exemple de sortie :
vm.nr_hugepages = 2048
-
Pour vérifier que le système alloue les HugePages après le redémarrage, ajoutez l'entrée suivante au fichier /etc/sysctl.conf :
sudo echo "vm.nr_hugepages=2048" >> /etc/sysctl.conf
**Remarque :**Remplacez ** 2048 ** par le nombre de HugePages que vous avez calculé.
-
Pour vérifier vos modifications, exécutez la commande suivante :
sudo cat /etc/sysctl.conf
Dans la sortie de commande, vérifiez qu'il existe une valeur pour vm.nr_hugepages.<br id=hardline_break/>
Exemple de sortie :
# sudo cat /etc/sysctl.conf
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
#
# Vendors settings live in /usr/lib/sysctl.d/.
# To override a whole file, create a new file with the same in
# /etc/sysctl.d/ and put new settings there. To override
# only specific settings, add a file with a lexically later
# name in /etc/sysctl.d/ and put new settings there.
#
# For more information, see sysctl.conf(5) and sysctl.d(5).
vm.zone_reclaim_mode=1
vm.nr_hugepages=2048
-
Redémarrez votre instance.
-
Exécutez à nouveau la commande suivante pour vérifier la valeur et la configuration de HugePages :
sudo cat /proc/sys/vm/nr_hugepages
Si la sortie est le nombre de HugePages que vous avez calculé, HugePages est activé.<br id=hardline_break/>
Exemple de sortie :
# sudo cat /proc/sys/vm/nr_hugepages
2048
-
Pour vérifier les HugePages disponibles dans /proc/meminfo, exécutez la commande suivante :
sudo grep Huge /proc/meminfo
Exemple de sortie :
# sudo grep Huge /proc/meminfo
HugePages_Total: 2048
HugePages_Free: 2048
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Pour les définitions de chaque valeur des HugePages, consultez HugePages sur kernel.org.
Pour désactiver HugePages, procédez comme suit :
-
Exécutez la commande suivante pour réinitialiser nr_hugepages à 0 :
sudo sysctl -w vm.nr_hugepages=0
-
Supprimez l'entrée suivante du fichier sysctl.conf :
sudo echo "vm.nr_hugepages=2048" >> /etc/sysctl.conf
-
Redémarrez votre instance.