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é dansovercommit_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é sur2
. La valeur par défaut est50
. 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 est65536
. 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 de1736
. 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 de268435456
. 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 est4294967295
. 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 dethreads-max
est20
.
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
, ouNR_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 deoom_score
est élevée, plus il est possible que le processus sera interrompu paroom_killer
. Définir une valeuroom_adj
de-17
désactiveraoom_killer
pour ce processus.Important
Tout processus engendré par un processus ajusté héritera de la valeuroom_score
de ce processus. Par exemple, si un processussshd
est protégé par la fonctionoom_killer
, tous les processus initiés par cette session SSH seront aussi protégés. Ceci peut affecter la capacité de la fonctionoom_killer
à sauver le système si une saturation de mémoire OOM se produit.