Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2796706
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Oracle

2013-08-08 08:59:16

                                                     为什么要设置linux semaphore参数

通过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.


需要注意的是不要弄混信号和信号集的概念。

 

 

阅读(4303) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~