
~によるとRHELドキュメント、システムで使用可能な共有メモリの総量は同じですshmall*PAGE_SIZE
。
RHEL 6のインストールが完了した後のカーネルパラメーターのデフォルト値はshmall
4294967296です。これは、システム全体で利用可能な共有メモリページの総数が4294967296で、ページサイズが4096Bであることを意味します。したがって、公式によると、共有メモリのサイズは次のようになります。
4294967296*4096/1024/1024/1024/1024 = 16 TB
...オペレーティングシステムのRAM(8GB)サイズよりはるかに大きいです。オペレーティングシステムは、割り当てる16TBの共有メモリをどのように見つけますか?
それでは、そのサイズは/dev/shm
共有メモリのサイズと同じですか?そうでなければ、共有メモリの実際のサイズをどのように知ることができますか?
答え1
あなたの計算は正しいです。 shmall は、使用可能な仮想メモリより高く設定できます。これらすべてを使用しようとすると、shmallを超えたため失敗するのではなく、他の理由で失敗します。
しかし、これらのIPC制限を見つけるためのいくつかのコマンドもあります。
ipcs -l
lsipc # util-linux>=2.27
Linuxの仮想メモリも基本的に無制限であり、RAM +スワップよりも大きいです。バラより
https://serverfault.com/questions/606185/how-does-vm-overcommit-memory-work
OOMキラーはどのプロセスを最初に終了するかをどのように決定しますか?
一方、あなたはできます限界各プロセスで使用される仮想メモリはulimt -v
カーネルには影響しません/proc/sys/kernel/shmall
。