メモリリソースコントローラcグループv1このmemory.limit_in_bytes
ファイルを使用して、特定のcgroupのメモリ使用量制限を設定できます。この制限に達すると、Linuxカーネルはどのような動作をしますか?
特に:
- カーネルOOMはプロセスを終了しますか?もしそうなら
oom_score
、プロセスのメモリは考慮されますか、それともメモリ要求によって制限に達したプロセスは終了しますか? - または、メモリ要求は拒否されますか?この場合、そのイベントを処理しないとプロセスは終了しますか?
答え1
デフォルトでは、OOMはcgroupを監督します。
memory.oom_control
cgroupのメモリ不足出口ルーチンを有効または無効にするフラグ(0または1)を含みます。有効になっている場合(0)許可されたメモリよりも多くのメモリを使用しようとする操作は、OOM出口によってすぐに終了します。デフォルトでは、OOM Killerはメモリサブシステムを使用するすべてのcgroupで有効になっています。これを無効にするには、memory.oom_controlファイルに1を書き込みます。
~]# echo 1 > /cgroup/memory/lab1/memory.oom_control
OOM Killerが無効になっていると、許可されているよりも多くのメモリを使用しようとする操作は、より多くのメモリが解放されるまで一時停止されます。