共有メモリに関するいくつかの単語
共有メモリを使用すると、プロセスは共有メモリセグメントに配置して共通の構造とデータにアクセスできます。プロセス間でデータを転送する際にカーネルの介入が発生しないため、最速形式のプロセス間通信が可能です。実際、プロセス間でデータをコピーする必要はありません。
Red Hatマシンの価値は以下のように膨大です。
cat /proc/sys/kernel/shmmax
17446744003692774391
sysctl -a | grep kernel.shmmax
kernel.shmmax = 17446744003692774391
ギガビットで計算すると - 16248546544.17632
論理的ですか? 、私たちは何かを逃しましたか?
マシンには、hadoopクラスタ用の64Gと16個のCPUがあります。
答え1
これデフォルトshmmax
はい
#define SHMMAX (ULONG_MAX - (1UL << 24))
これは、オーバーフローのリスクを制限しながら、できるだけ大きく選択された上限です。
SHMMNI、SHMMAX、SHMALL はデフォルトの上限値であり、sysctl で変更できます。 SHMMAXとSHMALLの値は、「現在の制限検索、Xの追加、制限の更新」形式の操作で制限を調整するときのユーザースペースのオーバーフロー状況を促進することなく、できるだけ大きく選択されました。したがって、SHMMAXとSHMALLを大きく設定することはお勧めできません。これらの制限は32ビットおよび64ビットシステムに適用されます。
その値は現状のまま良好であり、エラーはありません。