我想知道,有没有办法告诉进程它可以占用多少处理器能力?
问题是我正在使用Arista(视频转换器)转换视频,我对疯狂运行的风扇感到恼火,当我查看任务监视器时,它占用了超过 92% 的 CPU。
我可以(以某种方式)告诉它只需要 20% 吗?
谢谢
由于 CPU 使用率高,我想限制 Chromium 网络浏览器cpulimit
并使用终端运行:
cpulimit -l 30 -- chromium --incognito
Run Code Online (Sandbox Code Playgroud)
但它并没有像预期的那样限制 CPU 使用率(即最大为 30%)。它再次使用 100%。为什么?我究竟做错了什么?
我有一个有缺陷的程序,即使在空闲时也使用 100% CPU。由于目前修复它并不实际,我想将其限制为能够使用不超过 10% 的 CPU。然而,无论我做什么,该进程总是会 100% 占用一个 CPU。
我在Arch Wiki上找到了说明,告诉我创建一个包含以下内容的文件:
# cpulimit.slice
[Slice]
CPUQuota=10%
Run Code Online (Sandbox Code Playgroud)
显然我可以使用这些限制启动 shell,如下所示:
systemd-run --slice=cpulimit.slice --uid=myuser --shell
Run Code Online (Sandbox Code Playgroud)
这似乎有效,输入 sudo 密码后,我得到一个 shell,因此我运行一个简单的测试,该测试将使用 100% CPU,我可以使用 Ctrl+C 停止:
while true; do true; done
Run Code Online (Sandbox Code Playgroud)
我预计它使用的 CPU 不会超过 10%,因为它在切片内运行,但它始终使用 100% CPU!
我究竟做错了什么?
我打电话cpulimit
的cron
:
00 16 * * * /usr/bin/cpulimit --limit 20 /bin/sh /media/storage/sqlbackup/backups.sh
当作业开始时,CPU 会像往常一样出现峰值和警报,没有发生实际可识别的限制。作业本身遍历许多子目录的目录并rsync
每次执行's ,我相信这会产生rsync
子进程(运行 top 将有一个可用于被调用的 rsync 的 pid,几分钟后它将有一个不同的 pid for rsync
)。
我不确定如何正确利用cpulimit
以有效限制此过程消耗的使用量。
记住这是一个具有 2G RAM 和 1vCPU 的 VM 可能很重要。