Cgroup用于限制资源

时间:2015-04-14 20:22:53

标签: c++ linux memory resource-management cgroups

我的目标:为用户提供限制CPU,内存等给定进程(C ++)的资源的方法。

所以有人建议我使用看起来像理想效用的Cgroups。

在做了一些研究后,我有一个担忧:

当我们利用memory.limit_in_bytes来限制给定进程的内存使用时,是否有办法处理进程中的内存不足异常?我看到控制组提供了一个名为“memory.oom_control”的参数,当启用它时,它会杀死请求比允许更多内存的进程。禁用时,它只是暂停该过程。

我想要一种方法让进程知道它请求的内存超出预期,并且应该抛出内存异常。这样就可以优雅地退出流程。

cgroups是否提供此类行为?

还有cgroup可用于各种版本的linux吗?我主要对RHEL 5 +,CENTOS 6+和ubuntu 12+机器感兴趣。

感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

  

我想要一种方法让进程知道它请求的内存超出预期,并且应该抛出内存异常。这样就可以优雅地退出流程。

     

cgroups会提供这种行为吗?

最新版本中的所有进程都已在cgroup内运行,默认为cgroup。如果您创建一个新的cgroup,然后将该进程迁移到新的cgroup,一切都像以前一样工作,但使用新cgroup中的约束。如果您的进程分配的内存超过允许的内存,则会像现在一样获得ENOSPC或malloc失败。