我可以限制单个应用程序的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:

    1. 找到进程的PID: pidof foo 。 (比如,输出1881)
    2. sudo cpulimit -p 1881 -l 20

这将是对克劳斯的回答的评论(我认为从系统管理的角度来看,这是最“正确的”),但它开始变成一个太大而不适合评论框的东西。

  • 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消耗百分比