januari 25, 2022

The Geek Diary

inlägget förklarar hur kernel semaphore gränser kan ändras i en CentOS/RHEL server.

kärnparametrar för att ställa in semaforgränser

kärnparametrarna för att ställa in semaforgränserna är:

kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNISEMMSL - max semaphores per arraySEMMNS - max semaphores system wideSEMOPM - max ops per semop callSEMMNI - max number of arrays

ändra Semaforgränser

om en gräns behöver ändras bör det beaktas att (max antal arrayer)*(max semaforer per array) >= (max semaforer systemövergripande). Inget behov av att ha fler semaforer systemomfattande om de begränsas av mängden av ett möjligt antal arrayer med max semaforer per den.

till exempel:

# sysctl -a| grep kernel.semkernel.sem = 250 32000 32 128

för det här exemplet måste vi öka max semaforer per matrisgräns från 128 till 192. Max semaphores systemövergripande kan också ökas till 48000 ( 250*192 = 48000 >= 32000) eller hålls som 32000. I detta scenario hålls det vid 32000.

för att ställa in kärnparametern dynamiskt, dvs utan behov av omstart av servern.

# sysctl -w kernel.sem="250 32000 32 192"kernel.sem = 250 32000 32 192

om allt är bra med systemet som förväntat, ändra kärnparametern genom att lägga till den i /etc/sysctl.conf-fil för att säkerställa att värdet kvarstår efter omstart av servern.

# cat /etc/sysctl.conf | grep kernel.semkernel.sem = 250 32000 32 192

om du väljer att ställa in den direkt i filen utan att använda sysctl-w måste du ladda om filen:

# sysctl -p

du kan verifiera gränser som för närvarande ställs in 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

Lämna ett svar

Din e-postadress kommer inte publiceras.