推荐以下文章
http://www.myexception.cn/operating-system/445637.html
#cat /proc/sys/kernel/sem
250 32000 32 128
#ipcs -ls
max number of arrays=128
max semophore per array = 250
max semophores system wide = 32000
max ops per semop call =32
由此,可以看出, cat /proc/sys/kernel/sem 时候,
其顺序是:
SEMMNI: Maximum number of semaphore per array --此时我的系统中为 250
SEMMNS: Maximum number of semaphores system-wide --------------------此时我的系统中为 32000
SEMOPM: Maximum number of semaphore operations per system call -------此时我的系统中为 32
SEMMSL: Maximum number of arrays -------------------------------------------此时我的系统中为 128
第一列,表示每个信号集中的最大信号量数目。
第二列,表示系统范围内的最大信号量总数目。
第三列,表示每个信号发生时的最大系统操作数目。
第四列,表示系统范围内的最大信号集总数目。
所以,(第一列)*(第四列)=(第二列)
其中,最令人困惑的是对 SEMMNI 的解释,
有的说是 “SEMMNI: 内核参数用于控制整个 Linux 系统中信号集的最大数量。 Oracle 建议将 SEMMNI 设置为不小于 100。”
这个一般是Oracle安装者说的。
还有的说是 什么最小值的。
但是我看到 ipcs -ls 的结果 和 cat /proc/sys/kernel/sem 的结果结合起来看,
我认为自己最上面的理解是对的--每个信号集中的最大信号量数目。
可以用下面的文章佐证:
而且我们如果 改变 /etc/sysctl.conf 文件,设置 kernel.sem = 300 32000 100 128
然后执行: sysctl -p 使其立刻生效。
再看 ipcs -ls 和 cat /proc/sys/kernel/sem 都出现了 250不见,300出现的效果,证实了自己的推断。