Jurnalul Geek
postarea explică modul în care limitele semaforului kernel pot fi modificate într-un server CentOS/RHEL.
parametrii nucleului pentru a seta limitele semaforului
parametrii nucleului pentru a seta limitele semaforului sunt:
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNISEMMSL - max semaphores per arraySEMMNS - max semaphores system wideSEMOPM - max ops per semop callSEMMNI - max number of arrays
modificarea limitelor semaforului
dacă o limită trebuie modificată, trebuie luat în considerare faptul că (numărul maxim de matrice)*(max semafoare pe matrice) >= (max semafoare la nivel de sistem). Nu este nevoie să aveți mai multe semafoare la nivel de sistem dacă sunt limitate de cantitatea unui număr posibil de matrice cu semafoare maxime pe acesta.
de exemplu:
# sysctl -a| grep kernel.semkernel.sem = 250 32000 32 128
pentru acest exemplu, trebuie să creștem semafoarele maxime pe limita matricei de la 128 la 192. Semafoarele maxime la nivel de sistem pot fi, de asemenea, mărite la 48000 ( 250*192 = 48000 >= 32000) sau păstrat ca 32000. În acest scenariu, acesta este menținut la 32000.
pentru a seta parametrul kernel dinamic, adică fără a fi nevoie de repornirea serverului.
# sysctl -w kernel.sem="250 32000 32 192"kernel.sem = 250 32000 32 192
dacă totul este în regulă cu sistemul așa cum era de așteptat, modificați parametrul kernel adăugându-l la /etc/sysctl.fișier conf pentru a asigura valoarea persistă după repornirea serverului.
# cat /etc/sysctl.conf | grep kernel.semkernel.sem = 250 32000 32 192
dacă alegeți să îl setați direct în fișier fără a utiliza sysctl-w, va trebui să reîncărcați fișierul:
# sysctl -p
puteți verifica limitele stabilite în prezent de:
# 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