当 cgroup 中的进程达到其内存限制时,Linux 内核的行为是什么?

dip*_*ark 7 linux kernel cgroups

cgroups v1的内存资源控制器允许使用该memory.limit_in_bytes文件对特定 cgroup 的内存使用设置限制。当达到此限制时,Linux 内核的行为是什么?

特别是:

  • 内核 OOM 是否会终止进程,如果是,是否oom_score考虑了进程的进程,或者是请求导致限制被杀死的内存的进程被杀死?
  • 或者内存请求是否会被拒绝,在这种情况下,如果不处理此类事件,进程只会死亡?

slm*_*slm 5

默认情况下,OOM 正在监督 cgroup。

内存.oom_control

包含一个标志(0 或 1),用于启用或禁用 cgroup 的内存不足终止程序。如果启用 (0),则尝试消耗超出允许内存的任务将立即被 OOM 终止程序终止。默认情况下,每个使用内存子系统的 cgroup 中都会启用 OOM Killer;要禁用它,请将 1 写入 memory.oom_control 文件:

  ~]# echo 1 > /cgroup/memory/lab1/memory.oom_control
Run Code Online (Sandbox Code Playgroud)

当 OOM Killer 被禁用时,尝试使用超过允许内存的任务将被暂停,直到释放更多内存。

参考