内存资源控制器cgroups v1允许使用该memory.limit_in_bytes
文件对特定 cgroup 的内存使用设置限制。当达到此限制时,Linux 内核会采取什么行为?
尤其:
- 内核 OOM 是否会终止该进程?如果是,是否会
oom_score
考虑该进程的内存,或者是否是请求内存导致达到限制的进程被终止? - 或者内存请求是否会被拒绝,在这种情况下,如果进程不处理此类事件,它只会死亡?
答案1
默认情况下,OOM 正在监督 cgroup。
内存.oom_control
包含一个标志(0 或 1),用于启用或禁用 cgroup 的内存不足终止程序。如果启用 (0),则尝试消耗超出允许内存的任务将立即被 OOM 终止程序终止。默认情况下,每个使用内存子系统的 cgroup 中都会启用 OOM Killer;要禁用它,请将 1 写入 memory.oom_control 文件:
~]# echo 1 > /cgroup/memory/lab1/memory.oom_control
当 OOM Killer 被禁用时,尝试使用超过允许内存的任务将被暂停,直到释放更多内存。