我可以限制单个应用程序的CPU使用率吗?
有没有办法阻止ClamScan吃我的服务器CPU?
就像cpulimit的替代品:
你可以用nice-command启动clamscan,例如
nice -n 19 clamscan
。
看到man nice
的细节。
它不限制CPU,但确实降低了进程的优先级 。
还有renice
来改变运行进程的优先级。
安装cpulimit
sudo apt-get install cpulimit
它提供了不同的方法来限制进程foo
的CPU使用率,比如20%
-
通过其进程名称:
sudo cpulimit -e foo -l 20
。 -
通过其绝对路径名:
sudo cpulimit -P /usr/bin/foo -l 20
-
通过它的PID:
- 找到进程的PID:
pidof foo
。 (比如,输出1881) -
sudo cpulimit -p 1881 -l 20
- 找到进程的PID:
这将是对克劳斯的回答的评论(我认为从系统管理的角度来看,这是最“正确的”),但它开始变成一个太大而不适合评论框的东西。
-
Clamscan有一定数量的工作要做,所以限制它到一定的速度意味着它需要更长的时间。 它将使CPU争用更长时间。
-
允许它以尽可能快的速度运行,这意味着您可以充分利用CPU。 使它非常“好”意味着它会让其他进程在它自己之前完成它们的工作。 这意味着如果有很多其他忙碌的进程,是的,它需要很长时间才能完成自己的工作,但是如果那里没有任何内容,那么它只会在其工作负载中产生影响。
如果您正在使用systemd运行clamd,则可以使用CPUQuota
选项。
编辑/lib/systemd/system/clamav-daemon.service
以在[Service]
部分中包含此行:
CPUQuota=20%
然后重启服务
sudo systemctl daemon-reload sudo systemctl reload-or-restart clamav-daemon
本主题非常有用: HOWTO:按任何进程设置最大CPU消耗百分比