Geek Diary
innlegget forklarer hvordan kernel semafor grenser kan endres I En CentOS / RHEL server.
Kjerneparametere for å angi semaforgrenser
kjerneparametrene for å angi semaforgrensene er:
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNISEMMSL - max semaphores per arraySEMMNS - max semaphores system wideSEMOPM - max ops per semop callSEMMNI - max number of arrays
Endre Semaforgrenser
hvis en grense må endres, bør det tas hensyn til at (maks antall arrays)*(maks semaforer per array) >= (maks semaforer i hele systemet). Du trenger ikke å ha flere semaforer systemomfattende hvis begrenset av mengden av et mulig antall arrays med maks semaforer per det.
for eksempel:
# sysctl -a| grep kernel.semkernel.sem = 250 32000 32 128
for dette eksemplet må vi øke maks semaforer per matrisegrense fra 128 til 192. Max semaforer system-wide kan også økes til 48000 ( 250*192 = 48000 >= 32000) eller holdt som 32000. I dette scenariet holdes det på 32000.
for å sette kjerneparameteren dynamisk dvs.uten behov for serverstart.
# sysctl -w kernel.sem="250 32000 32 192"kernel.sem = 250 32000 32 192
hvis alt er bra med systemet som forventet, endre kjerneparameteren ved å legge den til /etc / sysctl.conf fil for å sikre at verdien vedvarer etter server omstart.
# cat /etc/sysctl.conf | grep kernel.semkernel.sem = 250 32000 32 192
hvis du velger å sette den direkte i filen uten å bruke sysctl-w, må du laste filen på nytt:
# sysctl -p
du kan kontrollere grensene som er satt av:
# 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