【问题标题】:Can I add the process name to cgroup tasks but not PID?我可以将进程名称添加到 cgroup 任务而不是 PID 吗?
【发布时间】:2021-03-16 13:37:19
【问题描述】:

我需要使用 ./cgroup/cpu 工具来限制特定进程的 CPU 使用率。目前我已经实现了,但是每次都要先启动进程,然后获取进程的PID,再将PID写入tasks文件。

考虑到这种情况,我需要定期使用 gzip 工具来压缩一些数据。每次启动 gzip 时,它的进程 PID 都会递增,并且压缩通常会很快结束。这种情况下,每次都把gzip进程PID写到./cgroup/cpu/mytestnode/tasks是很繁琐的。有没有更好的办法呢?例如,将进程名称写入任务而不是PID。

【问题讨论】:

标签: linux docker cgroups


【解决方案1】:

您可以使用 docker 在更高级别为您管理资源。 Docker 允许您将容器限制为一个 cpu 集。举个例子,将容器中的所有进程限制为 CPU 2,3 和 5,并验证 cgroup 确实是有限的:

~$ docker run -ti --rm --cpuset-cpus=2,3,5 ubuntu:20.04 more /sys/fs/cgroup/cpuset/cpuset.cpus
2-3,5

所以要在当前文件夹中运行gzip 并压缩somefile,仅在CPU 1 上运行,您可以按如下方式启动docker:

~$ docker run -ti --rm --cpuset-cpus=1 -v $(pwd):/work ubuntu:20.04 gzip /work/somefile

除了 CPU 粘性之外,Docker 还允许您管理 CPU 配额。以下是相同的示例,但仅限于 1% 的 CPU=1

docker run -ti --rm --cpuset-cpus=1 --cpus=0.01 -v $(pwd):/work ubuntu:20.04 gzip /work/somefile

您可以在docker documentation看到其他控制资源的选项

【讨论】:

    猜你喜欢
    • 2021-08-09
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 2014-09-07
    相关资源
    最近更新 更多