The Geek Diary
L’article explique comment les limites du sémaphore du noyau peuvent être modifiées dans un serveur CentOS/RHEL.
Paramètres du noyau pour définir les limites du sémaphore
Les paramètres du noyau pour définir les limites du sémaphore sont:
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNISEMMSL - max semaphores per arraySEMMNS - max semaphores system wideSEMOPM - max ops per semop callSEMMNI - max number of arrays
Modification des limites du sémaphore
Si une limite doit être modifiée, elle doit être prise en compte pour tenir compte de cela (nombre maximum de tableaux) * (sémaphores maximum par tableau) > = (sémaphores maximum à l’échelle du système). Pas besoin d’avoir plus de sémaphores à l’échelle du système s’il est limité par la quantité d’un nombre possible de tableaux avec des sémaphores maximum par lui.
Par exemple:
# sysctl -a| grep kernel.semkernel.sem = 250 32000 32 128
Pour cet exemple, nous devons augmenter la limite maximale des sémaphores par tableau de 128 à 192. Les sémaphores max à l’échelle du système peuvent également être augmentés à 48000 ( 250*192 = 48000 >= 32000) ou gardé comme 32000. Dans ce scénario, il est maintenu à 32000.
Pour définir dynamiquement le paramètre du noyau, c’est-à-dire sans avoir besoin de redémarrer le serveur.
# sysctl -w kernel.sem="250 32000 32 192"kernel.sem = 250 32000 32 192
Si tout va bien avec le système comme prévu, modifiez le paramètre du noyau en l’ajoutant au fichier /etc/sysctl.fichier conf pour s’assurer que la valeur persiste après le redémarrage du serveur.
# cat /etc/sysctl.conf | grep kernel.semkernel.sem = 250 32000 32 192
Si vous choisissez de le définir directement dans le fichier sans utiliser le sysctl-w, vous devrez recharger le fichier:
# sysctl -p
Vous pouvez vérifier les limites actuellement définies par:
# ipcs -ls------ Semaphore Limits --------max number of arrays = 192max semaphores per array = 250max semaphores system wide = 32000max ops per semop call = 32semaphore max value = 32767