Chinaunix首页 | 论坛 | 博客
  • 博客访问: 33065
  • 博文数量: 11
  • 博客积分: 271
  • 博客等级: 二等列兵
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-16 05:48
文章分类

全部博文(11)

文章存档

2012年(11)

我的朋友

分类: 系统运维

2012-07-18 16:33:35

1. 基础知识
系统V共享内存是已知的Unix /Linux系统中最快的进程间通信方式,那么要想采用SHM方式申请共享内存需要做哪些操作呢?

In Solaris 10, you are not required to make changes to the/etc/system file to implement the System V IPC. Solaris 10 uses the resource control facility for its implementation.

即:在Solaris10中,采用project方式管理资源代替之前版本中用/etc/system文件管理。

Solaris10操作系统默认SHM共享大小为1/4物理内存。测试主机内存8G,那么默认SHM共享内存大小为2G左右。
举例:
bl480g1:id -p
uid=61902(g-yang) gid=1(other) projid=100(default)
bl480g1:prctl -n project.max-shm-memory $$
process: 1108: -csh
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
privileged 1.97GB - deny -
system 16.0EB max deny -

2. 修改参数
In Solaris 10, you are not required to make changes to the/etc/system file to implement the System V IPC. Solaris 10 uses the resource control facility for its implementation. However,Oracle recommends that you set both resource control and /etc/system/ parameters. Operating system parameters not replaced by resource controls continue to affect performance and security on Solaris 10 systems. For further information, contact your Sun vendor.

在Solaris9中,需要在/etc/system中设置如下参数:
set noexec_user_stack=1
set semsys:seminfo_semmni=100
set semsys:seminfo_semmns=1024
set semsys:seminfo_semmsl=256
set semsys:seminfo_semvmx=32767
set shmsys:shminfo_shmmax=4294967295
set shmsys:shminfo_shmmni=100

在Solaris10中,部分设置已无效:

其中,
shmsys:shminfo_shmmax 共享内存段(shared memory segment)最大值
shmsys:shminfo_shmmin 共享内存段(shared memory segment)最小值
shmsys:shminfo_shmmni 共享内存标志符(shared memory identifiers)的数量,系统中共享内存段的最大个数。
semsys:seminfo_semmni 系统中semaphore identifierer的最大个数。
semsys:seminfo_semmsl 一个set中semaphore的最大个数。设置方法:设置成为10+所有Oracle实例的InitSID.ora中最大的Processes的值。
shmsys:shminfo_shmseg 每个用户进程可以使用的最多的共享内存段的数目。
semsys:seminfo_semopm 每个semop调用的大操作数

project.max-shm-memory是属于同一个project的用户所能够创建的共享内存总和最大值,

1) 修改操作系统参数
bl480g1:su – root
口令:
#vi /etc/system
添加
set shmsys:shminfo_shmmax= 8589934592
set shmsys:shminfo_shmmin=1
set shmsys:shminfo_shmmni=300
set shmsys:shminfo_shmseg=120
set semsys:seminfo_semmni=3320
set semsys:seminfo_semmsl=256
set semsys:seminfo_semmns=6640
set semsys:seminfo_semopm=100
set semsys:seminfo_semvmx=32767
set noexec_user_stack=1
set noexec_user_stack_log=1

2) 修改用户project参数
bl480g1:su – root
口令:
#projadd -U g-yang user.g-yang
#projmod -a -K "project.max-shm-memory=(priv,4g,deny)" user.g-yang

3) 验证参数
/export/home/g-yang>prctl -n project.max-shm-memory $$
process: 22448: -csh
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-shm-memory
privileged 4.0GB - deny -
system 16.0EB max deny -

3. 测试


4. 结论
在2台x86主机中测试后得出结论:
1. shmsys:shminfo_shmmax配置均未生效,即单个共享内存段最大为2G-pagesize;
2. project.max-shm-memory配置默认值为1/4物理内存;设置大于此值后立即生效。

5. 参考文献
1.《系统管理指南:Solaris+Containers-资源管理和Solaris+Zones》

2.《oracle clusterware installation Guide》

3.《solaris10中安装oracle内核参数的调整》
阅读(1406) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~