我们使用cgroup限制程序使用更多资源。 但是,当内存超过cgroup的限制时,它将终止进程。 为什么当进度允许内存超过cgroup限制时,cgroup的内存子系统使用oom-killer而不是返回内存分配失败?
答案 0 :(得分:4)
cgroups似乎可以使用oom-killer或暂停进程(https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/sec-memory.html)。但是对于ulimit,分配通常会失败。
仍然存在一些未解决的问题:是否有机会让cgroup拒绝进程内存(从malloc返回NULL)?或者有没有办法让ulimit拒绝物理内存(-m)而不是虚拟(-v)?