Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.4. Réglage des capacités

Veuillez lire cette section pour des informations sur la mémoire, le noyau et les capacités du système de fichiers, les paramètres liés à chacun d'entre eux, et les compromis impliqués dans l'ajustement de ces paramètres.
Pour définir ces valeurs temporairement pendant le réglage, effectuez une opération echo de la valeur souhaitée sur le fichier correspondant dans le système de fichiers proc. Par exemple, pour définir overcommit_memory temporairement sur 1, exécutez :
# echo 1 > /proc/sys/vm/overcommit_memory
Remarquez que le chemin vers le paramètre dans le système de fichiers proc varie en fonction du système affecté par le changement.
Pour définir ces valeurs de manière persistante, vous devrez utiliser la commande sysctl. Pour obtenir des détails supplémentaires, veuillez consulter le Guide de déploiement, disponible sur http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/.

Réglages de mémoire liés aux capacités

Chacun des paramètres suivants est placé sous /proc/sys/vm/, dans le système de fichiers proc.
overcommit_memory
Définit les conditions déterminant si une requête mémoire de grande taille est acceptée ou non. Trois valeurs sont possibles pour ce paramètre :
  • 0 — Paramètre par défaut. Le noyau effectue la gestion de l'« overcommit » de mémoire heuristique en estimant la quantité de mémoire disponible et en refusant les requêtes qui sont manifestement invalides. Malheureusement, comme la mémoire est allouée avec une heuristique plutôt qu'avec un algorithme précis, ce paramètre peut parfois autoriser la surcharge de la mémoire disponible sur le système.
  • 1 — Le noyau n'effectue pas la gestion de l'« overcommit » de la mémoire. Sous ce paramètre, le potentiel pour la surcharge de la mémoire est augmenté, mais les performances aussi pour les tâches demandant beaucoup de mémoire.
  • 2 — Le noyau refuse les requêtes de mémoire supérieures ou égales à la somme du total de l'espace swap disponible et du pourcentage de RAM physique spécifié dans overcommit_ratio. Ce paramètre est le meilleur si vous souhaitez réduire le risque d'« overcommit » de mémoire.

    Note

    Ce paramètre est uniquement recommandé pour les systèmes avec des zones swap de plus grande taille que leur mémoire physique.
overcommit_ratio
Spécifie le pourcentage de RAM physique considérée lorsque overcommit_memory est paramétré sur 2. La valeur par défaut est 50.
max_map_count
Définit le nombre maximal de zones de cartes mémoires qu'un processus peut utiliser. Dans la plupart des cas, la valeur par défaut 65530 est appropriée. Augmentez cette valeur si votre application doit cartographier plus que ce nombre de fichiers.
nr_hugepages
Définit le nombre de hugepages configurées dans le noyau. La valeur par défaut est 0. Il est uniquement possible d'allouer (ou de dés-allouer) des hugepages si suffisamment de pages libres physiquement contiguës se trouvent dans le système. Les pages réservées par ce paramètre ne peuvent pas être utilisées à d'autres fins. Des informations supplémentaires sont disponibles dans la documentation installée : /usr/share/doc/kernel-doc-kernel_version/Documentation/vm/hugetlbpage.txt

Réglages noyau liés aux capacités

Chacun des paramètres suivants est placé sous /proc/sys/kernel/, dans le système de fichiers proc.
msgmax
Définit la taille maximale autorisée en octets de tout message unique dans une file d'attente de messages. Cette valeur ne doit pas excéder la taille de la file (msgmnb). La valeur par défaut est 65536.
msgmnb
Définit la taille maximale en octets d'une seule file d'attente de messages. La valeur par défaut est 65536.
msgmni
Définit le nombre maximal d'identifiants de files d'attente de messages (et donc le nombre maximal de files). La valeur par défaut sur les machines avec une architecture 64 bits est 1985 ; pour les architectures 32 bits, la valeur par défaut est de 1736.
shmall
Définit la quantité totale en octets de mémoire partagée pouvant être utilisée sur le système à la fois. La valeur par défaut pour les machines avec une architecture de 64 bits est de 4294967296 ; pour les architectures de 32 bits, la valeur est de 268435456.
shmmax
Définit le segment de mémoire partagée maximal autorisé par le noyau, en octets. La valeur par défaut sur les machines avec une architecture de 64 bits est 68719476736 ; avec une architecture de 32 bits, la valeur par défaut est 4294967295. Remarquez cependant que le noyau prend en charge des valeurs bien plus élevées que celles-ci.
shmmni
Définit le nombre de segments de mémoire partagée maximal sur tout le système. La valeur par défaut est 4096 sur les architectures 32 et 64 bits.
threads-max
Définit le nombre maximal sur tout le système de threads (tâches) pouvant être utilisés par le noyau à la fois. La valeur par défaut est égale à la valeur max_threads du noyau. La formule utilisée est :
max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE )
La valeur minimale de threads-max est 20.

Réglages des systèmes de fichiers liés aux capacités

Chacun des paramètres suivants est placé sous /proc/sys/fs/, dans le système de fichiers proc.
aio-max-nr
Définit le nombre maximal d'événements autorisés dans tous les contextes d'E/S asynchrones actifs. La valeur par défaut est 65536. Remarquez que modifier cette valeur ne pré-allouera ou ne redimmensionnera aucune structure de données du noyau.
file-max
Répertorie le nombre maximal de gestionnaires de fichiers que le noyau alloue. La valeur par défaut correspond à la valeur de files_stat.max_files dans le noyau, qui est défini sur la valeur la plus élevée de (mempages * (PAGE_SIZE / 1024)) / 10, ou NR_FILE (8192 dans Red Hat Enterprise Linux). Augmenter cette valeur peut résoudre des erreurs causées par un manque de gestionnaires de fichiers disponibles.

Réglages « Kill » OOM

OOM (« Out of Memory », ou mémoire saturée) fait référence à un état informatique où toute la mémoire disponible, y compris l'espace swap, a été alloué. Par défaut, cette situation cause au système de paniquer et d'arrêter de fonctionner comme il le devrait. Cependant, définir le paramètre /proc/sys/vm/panic_on_oom sur 0 instruit au noyau d'appeler la fonction oom_killer lorsque se produit une saturation de mémoire OOM . Normalement, oom_killer peut interrompre les processus et le système survit.
Le paramètre suivant peut être défini sur une base « par processus », vous offrant ainsi un contrôle amélioré sur quels processus sont interrompus par la fonction oom_killer. Il se trouve sous /proc/pid/ dans le système de fichiers proc, où pid est le numéro d'ID du processus.
oom_adj
Définit une valeur de -16 à 15 qui aide à déterminer l'oom_score d'un processus. Plus la valeur de oom_score est élevée, plus il est possible que le processus sera interrompu par oom_killer. Définir une valeur oom_adj de -17 désactivera oom_killer pour ce processus.

Important

Tout processus engendré par un processus ajusté héritera de la valeur oom_score de ce processus. Par exemple, si un processus sshd est protégé par la fonction oom_killer, tous les processus initiés par cette session SSH seront aussi protégés. Ceci peut affecter la capacité de la fonction oom_killer à sauver le système si une saturation de mémoire OOM se produit.