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

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

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

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399

答案1

功能__initipc_ns_initshmmax通过调用设置初始值shm_init_ns,将其设置为宏的值SHMMAX

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

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

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

答案2

您可以即时回显 /proc/sys/kernel/shmmax!

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

但大多数人使用类似以下的行编辑 /etc/sysctl.conf:

kernel.shmmax=your_new_value_here

请参见 sysctl(8) 手册页。

相关内容