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


10

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

$ cat /proc/sys/kernel/shmmax 
18446744073692774399

$ sysctl kernel.shmmax
kernel.shmmax = 18446744073692774399

回答:


9

__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


1

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

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

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

kernel.shmmax=your_new_value_here

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


それは問題ではありません。デフォルトはどこに設定されていますか?つまり、自分でshmmaxに書き込みを行わない場合、デフォルトでは何になりますか?
エヴァンキャロル

2
一部のLinuxディストリビューション(RHEL 5&6は1つだと思います)では、/ etc / sysctl.confに設定されています。しかし、デフォルトはカーネルコードで理論上の制限に設定されていると思います(2 ^ 64-1だと思いますか?)。
デスグリップ2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.