web-dev-qa-db-ja.com

LinuxはSHMMAXのデフォルト値をどこに設定しますか?

私はこれらの値がどこに設定されているのか、そしてそれらがデフォルトで何になっているのか疑問に思っていますか?私は現在18446744073692774399です。目に見える場所に設定していません。

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399
9
Evan Carroll

__init関数 ipc_ns_init は、 shm_init_ns を呼び出してshmmaxの初期値を設定します。 SHMMAXマクロの値。

SHMMAXの定義は <uapi/linux/shm.h> にあります:

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

64ビットマシンでは、その定義は検出された値18446744073692774399と同じです。

9
user41515

その場で/ proc/sys/kernel/shmmaxにエコーすることができます!

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

しかし、ほとんどの人は/etc/sysctl.confを次のような行で編集します。

kernel.shmmax=your_new_value_here

Sysctl(8)のマニュアルページを参照してください。

0
Deathgrip