shmmaxとshmmniの値を計算し、Redhatで最初に定義する方法。私はその後に隠された数学を理解したいと思います。カーネルパラメータに大きな数字が表示されますが、この大きな数字は何ですか?物理メモリとはどのような関係がありますか? 128GB RAMとSHMMAX="123695063040"があります。
答え1
Red Hatのドキュメントによるとhttps://access.redhat.com/solutions/1437883(アクセスはRed Hat認証のお客様に制限される場合があります):
Red Hat Enterprise Linux 7.1 では、kernel.shmmax と kernel.shmall のデフォルト値が変更されました。
Red Hat Enterprise Linux 7.1 では、kernel.shmmax および kernel.shmall のデフォルト値がアップストリームカーネルに設定された値と一致するように変更されました。 kernel.shmmax および kernel.shmall の新しいデフォルト値は 18446744073692774399 に設定されます。
カーネルコードでは、次の式を使用して新しいデフォルト値を計算します。
include/uapi/linux/shm.h
[...]
#define SHMMAX (ULONG_MAX - (1L<<24)) /* max shared seg size (bytes) */
#define SHMALL (ULONG_MAX - (1L<<24)) /* max shm system wide (pages) */