gpt4 book ai didi

c++ - 使用cgroup来限制资源

转载 作者:太空宇宙 更新时间:2023-11-04 03:40:58 29 4
gpt4 key购买 nike

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

所以有人建议我使用 Cgroups,它看起来是一个理想的实用程序。

经过一些研究后,我有一个担忧:

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

我想要一种方法让进程知道它正在请求比预期更多的内存,并且应该抛出内存不足异常。这是为了让进程正常退出。

cgroups 提供这种行为吗?

cgroup 是否在所有版本的 Linux 中都可用?我主要对 RHEL 5+、CENTOS 6+ 和 ubuntu 12+ 机器感兴趣。

感谢任何帮助。

谢谢

最佳答案

I want a way to let the process know that it is requesting more memory than expected and should throw out of memory exception. This is so that the process gracefully exits.

Does cgroups provide such kind of behaviour?

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

关于c++ - 使用cgroup来限制资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29636725/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com