您的位置:首页 > 运维架构 > Linux

Linux共享内存区参数设置

2014-02-22 21:51 357 查看

前言

昨天被师姐问了一个关于共享内存区大小设置的问题,之前一点没了解过,赶紧各种科普,科普到一篇好文章《Linux共享内存使用常见陷阱与分析》。认真看完后,之前使用共享内存时遇到的很多问题都了然了,很有收获,在此记录。

Linux共享内存设置

先通过几条命令查看下Linux中共享内存的相关参数默认值。

命令行:
ipcs -lm




这里涉及三个主要的与共享内存相关的参数:SHAMAX、SHAMNI、SHMALL。

命令行查看:
cat /proc/sys/kernel/shmmax
	cat /proc/sys/kernel/shmmni
	cat /proc/sys/kernel/shmall




解释下三个参数的含义:

SHMMAX:共享内存段的最大尺寸(以字节为单位)。

在Linux中的默认值是32M。如果程序中创建的共享内存超过这个默认值,程序使用标准错误perror会输出信息:“unable to attach to shared memory segment”。以设置大小为2G为例,设置方式:
> echo "2147483648" > /proc/sys/kernel/shmmax
也可以使用sysctl命令来更改:
sysctl -w kernel.shmmax=2147483648
最后,通过将该内核参数插入到 /etc/sysctl.conf 启动文件中,可以使这种更改永久有效:
sysctl -w kernel.shmmax=2147483648


SHMMNI:系统范围内共享内存段的最大数量。该参数Linux中默认值为4096,一般来说已足够,不需改变。

修改方式:
echo “kernel.shmmni=4096″ >> /etc/sysctl.conf


SHMALL:系统一次可以使用的共享内存总量(以页为单位)。该参数Linux中默认值为2097152。

修改方式:
sysctl -w kernel.shmall=2097152
	echo “kernel.shmall=2097152″ >> /etc/sysctl.conf


总结

下篇总结吧。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: