我只是想知道这些值在哪里设置以及它们的默认值是什么?我的目前是18446744073692774399。我没有把它设置在我能看到的任何地方。
$ cat /proc/sys/kernel/shmmax
18446744073692774399
$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399
答案1
功能__init
ipc_ns_init
shmmax
通过调用设置初始值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) 手册页。