Linux在哪里设置SHMMAX的默认值?


10

我只是想知道在哪里设置这些值以及它们的默认值是什么?我的目前是18446744073692774399。我没有将其设置在任何可以看到的地方。

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399

Answers:


9

__init函数通过调用ipc_ns_init设置初始值,将其设置为宏的值。shmmaxshm_init_nsSHMMAX

的定义SHMMAX<uapi/linux/shm.h>

#define SHMMAX (ULONG_MAX - (1UL << 24)) /* max shared seg size (bytes) */

在64位计算机上,该定义等于您找到的值18446744073692774399


1

在运行中,您只需回显/ proc / sys / kernel / shmmax!

# echo 20446744073692774399 > /proc/sys/kernel/shmmax

但是大多数人用类似于以下内容的行来编辑/etc/sysctl.conf:

kernel.shmmax=your_new_value_here

请参见sysctl(8)手册页。


那不是问题。默认设置在哪里?也就是说,如果您自己不写shmmax,则默认为什么?
埃文·卡罗尔

2
在某些Linux发行版(我相信是RHEL 5&6)上,它是在/etc/sysctl.conf中设置的。但是我认为默认值在内核代码中设置为理论极限(猜测是2 ^ 64-1?)。
Deathgrip
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.