Linux内核参数信号量semaphore设置

时间:2022-05-28 15:13:45

首先 熟悉 ipcs 和 ipcrm 命令:

ipcs用法 
ipcs -a  是默认的输出信息 打印出当前系统中所有的进程间通信方式的信息
ipcs -m  打印出使用共享内存进行进程间通信的信息
ipcs -q   打印出使用消息队列进行进程间通信的信息
ipcs -s  打印出使用信号进行进程间通信的信息

ipcs -t   输出信息的详细变化时间

ipcs -u  输出当前系统下ipc各种方式的状态信息(共享内存,消息队列,信号)

# ipcs -hipcs provides information on ipc facilities for which you have read access.
Resource Specification:
        -m : shared_mem
        -q : messages
        -s : semaphores
        -a : all (default)
Output Format:
        -t : time
        -p : pid
        -c : creator
        -l : limits
        -u : summary
-i id [-s -q -m] : details on resource identified by id
usage : ipcs -asmq -tclup 
        ipcs [-s -m -q] -i id
        ipcs -h for help.

ipcrm 命令 
移除一个消息对象。或者共享内存段,或者一个信号集,同时会将与ipc对象相关链的数据也一起移除。当然,只有超级管理员,或者ipc对象的创建者才有这项权利啦

ipcrm -M shmkey  移除用shmkey创建的共享内存段
ipcrm -m shmid    移除用shmid标识的共享内存段
ipcrm -Q msgkey  移除用msqkey创建的消息队列
ipcrm -q msqid  移除用msqid标识的消息队列
ipcrm -S semkey  移除用semkey创建的信号
ipcrm -s semid  移除用semid标识的信号


当前系统信号量限制:

# ipcs -ls

―― Semaphore Limits ――�C

max number of arrays = 128

max semaphores per array = 250

max semaphores system wide = 32000

max ops per semop call = 100


SEMMSL

  • 含义:每个信号量set中信号量最大个数 

  • 设置:最小250;对于processes参数设置较大的系统建议设置为processes+10


SEMMNI

  • 含义:linux系统信号量set最大个数 

  • 设置:最少128


SEMMNS

  • 含义:linux系统中信号量最大个数 

  • 设置:最少32000;SEMMSL * SEMMNI


SEMOPM

  • 含义:semop系统调用允许的信号量最大个数

  • 设置:最少100;或者等于SEMMSL


查看信号量设置:cat /proc/sys/kernel/sem

order:SEMMSL, SEMMNS, SEMOPM, SEMMNI


# cat /proc/sys/kernel/sem

250    32000    100    128


修改:

sysctl -w kernel.sem=”250 32000 100 128″

echo “kernel.sem=250 32000 100 128″ >> /etc/sysctl.conf