Postingan tersebut menjelaskan bagaimana batasan semaphore kernel dapat diubah di server CentOS/RHEL.
Parameter Kernel untuk menetapkan batas semaphore
Parameter kernel untuk mengatur batas semaphore adalah:
kernel.sem = SEMMSL SEMMNS SEMOPM SEMMNI SEMMSL - max semaphores per array SEMMNS - max semaphores system wide SEMOPM - max ops per semop call SEMMNI - max number of arrays
Mengubah Batas Semaphore
Jika batas perlu diubah, harus diperhitungkan bahwa (jumlah maksimum larik)*(maks semafor per larik)>=(maks semafor seluruh sistem) . Tidak perlu memiliki lebih banyak semaphore di seluruh sistem jika dibatasi oleh jumlah kemungkinan jumlah array dengan semaphore maks per itu.
Misalnya:
# sysctl -a| grep kernel.sem kernel.sem = 250 32000 32 128
Untuk contoh ini, kita perlu meningkatkan max semaphore per array limit dari 128 menjadi 192. Max semaphore system-wide juga dapat ditingkatkan menjadi 48000 ( 250*192 =48000>=32000) atau disimpan sebagai 32000. Dalam skenario ini, disimpan pada 32000.
Untuk mengatur parameter kernel secara dinamis yaitu tanpa perlu reboot server.
# sysctl -w kernel.sem="250 32000 32 192" kernel.sem = 250 32000 32 192
Jika semua baik-baik saja dengan sistem seperti yang diharapkan, ubah parameter kernel dengan menambahkannya ke file /etc/sysctl.conf untuk memastikan nilainya tetap ada setelah server reboot.
# cat /etc/sysctl.conf | grep kernel.sem kernel.sem = 250 32000 32 192
Jika Anda memilih untuk menyetelnya langsung di file tanpa menggunakan sysctl -w, Anda harus memuat ulang file:
# sysctl -p
Anda dapat memverifikasi batas yang saat ini ditetapkan oleh:
# ipcs -ls ------ Semaphore Limits -------- max number of arrays = 192 max semaphores per array = 250 max semaphores system wide = 32000 max ops per semop call = 32 semaphore max value = 32767
Semaphore seperti penghitung yang digunakan untuk mengontrol akses ke sumber daya bersama oleh banyak proses. Ini sering digunakan sebagai mekanisme penguncian untuk mencegah proses mengakses sumber daya tertentu saat proses lain melakukan operasi di atasnya. Nilai semaphore dapat ditambah atau dikurangi hingga maksimum yang ditetapkan oleh variabel SEMVMX, “nilai semaphore max”.