内核的 shmall 和 shmmax 参数

在修改/etc/sysctl.conf时,需要注意的一些内容:

 

名字描述合理取值
SHMMAX最大共享内存段尺寸(字节)250kB + 8.2 kB * shared_buffers + 14.2 kB * max_connections 直到无穷大
SHMMIN最小共享内存段尺寸(字节)1
SHMALL可用共享内存的总数量(字节或者页面)如果是字节,就和 SHMMAX 一样;如果是页面,ceil(SHMMAX/PAGE_SIZE)
SHMSEG每进程最大共享内存段数量只需要 1 个段,不过缺省比这高得多。
SHMMNI系统范围最大共享内存段数量类似 SHMSEG 加上用于其他应用的空间
SEMMNI信号灯标识符的最小数量(也就是说,套)至少ceil(max_connections / 16)
SEMMNS系统范围的最大信号灯数量ceil(max_connections / 16) * 17加上用于其他应用的空间
SEMMSL每套信号灯最小信号灯数量至少 17
SEMMAP信号灯映射里的记录数量参阅文本
SEMVMX信号灯的最大值至少 1000 (缺省通常是32767,除非被迫,否则不要修改)

 

shmall 是全部允许使用的共享内存大小,

shmmax 是单个段允许使用的大小,这两个可以设置为内存的 90%。

例如 16G 内存,16*1024*1024*1024*90% = 15461882265,

shmall 的大小为 15461882265/4k(getconf PAGESIZE可得到) = 3774873。

修改

#vi /etc/sysctl.conf

kernel.shmmax=15461882265
kernel.shmall=3774873
kernel.msgmax=65535
kernel.msgmnb=65535
执行
#sudo sysctl -p

可以使用 ipcs -l 看结果。ipcs -u 可以看到实际使用的情况。

#ipcs -l

------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 15099494
max total shared memory (kbytes) = 15097856
min seg size (bytes) = 1
 
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
 
------ Messages: Limits --------
max queues system wide = 16
max size of message (bytes) = 8192
DEFAULT max size of queue (bytes) = 16384
 
kernel.shmmax 的单位是字节;kernel.shmall的单位是页。对于32位系统,一页=4k,也就是4096字节。
kernel.shmall = 2097152  就是 2097152*4k/1024/1024 = 8G 就是说可用共享内存一共8G。
设置的一般规律
kernel.shmall = 2097152    ---内存8G
kernel.shmall = 4194304    ---内存16G
kernel.shmall = 8388608    ---内存32G
kernel.shmall = 16777216    ---内存64G
 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值