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

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

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

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399

答え1

__init機能ipc_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) のマニュアルページを参照してください。

関連情報