为什么要设置linux semaphore参数
答案:2 悬赏:0
解决时间 2021-04-19 09:04
- 提问者网友:涼初透
- 2021-04-18 08:35
为什么要设置linux semaphore参数
最佳答案
- 二级知识专家网友:怪咖小青年
- 2021-04-18 09:38
通过ipcs -s 可以看到SEMAPHORE,在这里可以看到NSEMS是254(环境基于RHEL 6(32BIT),ORACLE DATABASE 11.2.0.1.0)
[root@hy1 oracle]# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x39c3211c 1671170 oracle 660 254
这个254表示什么呢?是ORACLE进程数吗?
[root@hy1 oracle]# ps -eaf | grep oracle | wc -l
50
可能看到整个ORACLE用户的进程只有 50
经常官方文档建议这个参数设置为PROCESSES再加150,那么这个参数和PROCESSES应该有关,
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 250
在这里PROCESSES为250,其他的4代表什么呢?
使用oradebug ipc可以跟踪当前的IPC情况
Maximum processes: = 250
Number of semaphores per set: = 254
Semaphores key overhead per set: = 4
User Semaphores per set: = 250
Number of semaphore sets: = 1
Semaphore identifiers: = 1
Semaphore List=
1671170
可以看到4为SEAMPHORE本身的开销,再加上PROCESSES定义的大小,刚好是254
kernel.semmsl 定义了一个信号集的信号数,这个参数设置建议为PROCESSES+150,当然系统的默认设置128也不会有问题
但是需要请求多个信号集,从某种程度上来说降低了效率
kernel.semopm定义了每次信号函数能操作的最大信号数,建议和semmsl相等,这样一次调用就能完成所有的集号操作,而不
需要多次调用
kernel.semmni定了系统中的信号集的个数,一般125足够用了
kernel.semmns定义了系统中最大信号数,建议值为 kernel.semmsl * kernel.semmni.
需要注意的是不要弄混信号和信号集的概念。
[root@hy1 oracle]# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
0x39c3211c 1671170 oracle 660 254
这个254表示什么呢?是ORACLE进程数吗?
[root@hy1 oracle]# ps -eaf | grep oracle | wc -l
50
可能看到整个ORACLE用户的进程只有 50
经常官方文档建议这个参数设置为PROCESSES再加150,那么这个参数和PROCESSES应该有关,
SQL> show parameter processes;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
processes integer 250
在这里PROCESSES为250,其他的4代表什么呢?
使用oradebug ipc可以跟踪当前的IPC情况
Maximum processes: = 250
Number of semaphores per set: = 254
Semaphores key overhead per set: = 4
User Semaphores per set: = 250
Number of semaphore sets: = 1
Semaphore identifiers: = 1
Semaphore List=
1671170
可以看到4为SEAMPHORE本身的开销,再加上PROCESSES定义的大小,刚好是254
kernel.semmsl 定义了一个信号集的信号数,这个参数设置建议为PROCESSES+150,当然系统的默认设置128也不会有问题
但是需要请求多个信号集,从某种程度上来说降低了效率
kernel.semopm定义了每次信号函数能操作的最大信号数,建议和semmsl相等,这样一次调用就能完成所有的集号操作,而不
需要多次调用
kernel.semmni定了系统中的信号集的个数,一般125足够用了
kernel.semmns定义了系统中最大信号数,建议值为 kernel.semmsl * kernel.semmni.
需要注意的是不要弄混信号和信号集的概念。
全部回答
- 1楼网友:我颠覆世界
- 2021-04-18 10:49
你的意思是sys/下面的文件都是system v规定的东西,而没有sys前缀的都是posix的内容?
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯