linux kernel.sem参数,kernel.sem参数的设置

可以理解为semaphore为每个进程通讯需要的信号灯或者IPC标志,每个连接的process都要分配一个semaphore,那么

semaphore的设置跟process的数量有关系.

semaphors的相关设置在REHL、OEL中可

通过kernel.sem参数定义.通过下面的任何一种方法都可以查看sem的值:

[root@dbtest vm]# sysctl -p|grep kernel.sem

kernel.sem = 250 35000 100 128

或者

[root@dbtest vm]# cat /proc/sys/kernel/sem

250 35000 100 128

或者

[root@dbtest vm]# ipcs -sl

------ Semaphore Limits --------

max number of arrays = 128

max semaphores per array = 250

max semaphores system wide = 35000

max ops per semop call = 100

semaphore max value = 32767

这个参数有四个值, 其实这四个不同的值又分别对应了另外四个不同的参数,按照上面值的顺序排列

SEMMSL: Maximum number of semaphores per set

SEMMNS: Maximum number of semaphores system-wide

SEMOPM: Maximum number of semaphore operations per system call

SEMMNI: Maximum number of semaphore sets for the entire Linux system

在Suse Linux中这几个参数是独立存在的.

Oracle(包括9i/10g/11g)推荐将sem设置为250 32000 100

128或更高的值.在一个并发很高的数据库中这个值可以设置为PROCESSES+10,SEMMNI也要相应的增加.目的是减少IPC通讯时

semaphore的争用.

SEMOPM定义了每次IPC调用时影响的semaphore,建议设置SEMOPM=SEMMSL,SEMMNS定义为(SEMMSL

* SEMMNI).

实际上每个系统都对上述参数有各自推荐的配置.

最后可以参考MetaLink: Note:187405.1、 Note:184821.1、242529.1