何に/proc/sys/vm/overcommit_memory
設定しますか?カーネルのドキュメントから:
0 - Heuristic overcommit handling. Obvious overcommits of
address space are refused. Used for a typical system. It
ensures a seriously wild allocation fails while allowing
overcommit to reduce swap usage. root is allowed to
allocate slightly more memory in this mode. This is the
default.
1 - Always overcommit. Appropriate for some scientific
applications.
2 - Don't overcommit. The total address space commit
for the system is not permitted to exceed swap + a
configurable percentage (default is 50) of physical RAM.
Depending on the percentage you use, in most situations
this means a process will not be killed while accessing
pages but will receive errors on memory allocation as
appropriate.
したがって、1を使用している場合、違いはありません。2を使用していて、Linuxスワップファイルがない場合、プロセスは512Mの(仮想)メモリを割り当てることができません。0の結果は明確ではありません。
編集:http : //utcc.utoronto.ca/~cks/space/blog/linux/LinuxVMOvercommitから、これが0の仕組みです:
ヒューリスティックオーバーコミットは、システムがすべてのメモリを再利用し、現在より多くのRAMを使用している他のプロセスがない場合、システムが提供できるメモリ量を計算しようとします。これ以上を要求している場合、割り当ては拒否されます。具体的には、理論上の「空きメモリ」数は、空きスワップスペース、空きRAM(ルートでない場合は32分の1未満)、および統合バッファキャッシュと再利用可能としてラベル付けされたカーネルデータによって使用されるすべてのスペースを合計することによって計算されます(一部の予約ページを除く)。
したがって、計算にもスワップを使用します。一般的には、次のRHELの推奨事項に従います。
M = Amount of RAM in GB, and S = Amount of swap in GB, then
If M < 2
S = M *2
Else
S = M + 2