Linux共享内存区参数设置

来源:互联网 发布:linux oracle 编辑:程序博客网 时间:2024/06/06 05:46

前言

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

Linux共享内存设置

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

命令行:
ipcs -lm


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

命令行查看:
cat /proc/sys/kernel/shmmaxcat /proc/sys/kernel/shmmnicat /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=2097152echo “kernel.shmall=2097152″ >> /etc/sysctl.conf


总结


下篇总结吧。。

0 0
原创粉丝点击