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

Eva*_*oll 10 kernel memory shared-memory

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

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399
Run Code Online (Sandbox Code Playgroud)

小智 9

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

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

#define SHMMAX (ULONG_MAX - (1UL << 24)) /* max shared seg size (bytes) */
Run Code Online (Sandbox Code Playgroud)

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