Linux中共享內存涉及到三個內核參數:SHMMAX/SHMMNI/SHMALL,除了默認值,我們還可以因環境、應用的需要進行臨時、或永久的更改。
SHMMAX參數定義共享內存段的最大尺寸(以字節為單位),默認值是32MB.
SHMMNI 參數設置系統范圍內共享內存段的最大數量,默認值是 4096.
SHMALL參數控制著系統一次可以使用的共享內存總量(以頁為單位),默認值2097152.該參數值至少應該大於等於SHMMAX/PAGE_SIZE.
查看這三個參數的當前值,通過proc文件系統可以看到:
1
$ cat /proc/sys/kernel/shmmax
2
33554432
3
$ cat /proc/sys/kernel/shmmni
4
4096
5
$ cat /proc/sys/kernel/shmall
6
2097152
臨時修改這三個參數的值,通過echo或sysctl命令修改proc文件中的值,重啟失效
1
$ echo 1073741824 > /proc/sys/kernel/shmmax
2
$ sysctl -w kernel.shmmax=<span></span><span></span>1073741824<span></span> # 1GB<span></span>
長期修改三個參數的值,修改/etc/sysctl.conf文件的內容實現,重啟有效
1
echo "kernel.shmmax=1073741824" 》 /etc/sysctl.conf