The Geek Diary
indlægget forklarer, hvordan kernesemaforgrænser kan ændres i en CentOS/RHEL-server.
kerneparametre til at indstille semaforgrænser
kerneparametrene til at indstille semaforgrænserne er:
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNISEMMSL - max semaphores per arraySEMMNS - max semaphores system wideSEMOPM - max ops per semop callSEMMNI - max number of arrays
ændring af Semaforgrænser
hvis en grænse skal ændres, skal der tages højde for det (maks.antal arrays)*(maks. semaforer pr. array) > = (maks. Ingen grund til at have flere semaforer hele systemet, hvis det er begrænset af mængden af et muligt antal arrays med maksimale semaforer pr.
for eksempel:
# sysctl -a| grep kernel.semkernel.sem = 250 32000 32 128
i dette eksempel er vi nødt til at øge maks.semaforer pr. array grænse fra 128 til 192. De maksimale semaforer hele systemet kan også øges til 48000 ( 250*192 = 48000 >= 32000) eller holdes som 32000. I dette scenario holdes det på 32000.
for at indstille kerneparameter dynamisk, dvs.uden behov for genstart af serveren.
# sysctl -w kernel.sem="250 32000 32 192"kernel.sem = 250 32000 32 192
hvis alt er fint med systemet som forventet, ændre kernel parameter ved at tilføje den til /etc/sysctl.conf-fil for at sikre, at værdien vedvarer efter genstart af serveren.
# cat /etc/sysctl.conf | grep kernel.semkernel.sem = 250 32000 32 192
hvis du vælger at indstille den direkte i filen uden at bruge systemet, skal du genindlæse filen:
# sysctl -p
du kan bekræfte grænser, der i øjeblikket er indstillet af:
# 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