我有一个有缺陷的程序,即使在空闲时也使用 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
,它只是创建一个没有附加限制的新切片,命名为您提供的任何名称。