如何使用 systemd-run 限制 CPU 使用

如何使用 systemd-run 限制 CPU 使用

我有一个有缺陷的程序,即使在空闲时也使用 100% CPU。由于目前修复它并不实际,我想将其限制为能够使用不超过 10% 的 CPU。然而,无论我做什么,该进程总是会 100% 占用一个 CPU。

我找到了关于拱门维基告诉我创建一个包含以下内容的文件:

# cpulimit.slice
[Slice]
CPUQuota=10%

显然我可以使用这些限制启动 shell,如下所示:

systemd-run --slice=cpulimit.slice --uid=myuser --shell

这似乎有效,输入 sudo 密码后,我得到一个 shell,因此我运行一个简单的测试,该测试将使用 100% CPU,我可以使用 Ctrl+C 停止:

while true; do true; done

我预计它使用的 CPU 不会超过 10%,因为它在切片内运行,但它始终使用 100% CPU!

我究竟做错了什么?

答案1

刚刚发现问题。该.slice文件必须放入/etc/systemd/system/并且必须systemctl daemon-reload先运行。然后一切正常。

不幸的是,如果您使用无效参数,该systemd-run命令不会给您任何错误消息--slice,它只是创建一个没有附加限制的新切片,命名为您提供的任何名称。

相关内容