我可以限制单个应用程序的 CPU 使用率吗?

Pit*_*tto 21 performance resource-limiting

有没有办法阻止 ClamScan 吃掉我的服务器 CPU?

Sid*_*Sid 23

安装cpulimit

sudo apt-get install cpulimit
Run Code Online (Sandbox Code Playgroud)

它提供了不同的方法来限制进程的 CPU 使用率,foo例如 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

  • `sudo` 不是必需的,该进程不是系统进程。就像笔记一样 (2认同)

Cla*_*usi 19

作为 cpulimit 的替代方案:

您可以使用 nice-command 启动 clamscan,例如

nice -n 19 clamscan.

详情请参阅man nice

限制CPU,但它确实降低了优先级的进程。

还有就是renice改变正在运行的进程的优先级。

  • 只要没有其他进程需要 cputime,clamscan 就会得到很多。但是一旦另一个进程(具有更高优先级)需要 cputime,clamscan 就没有机会了。cpulimit 限制绝对 cputime,nice 限制相对 cputime。 (5认同)
  • 看起来它仍然可以吃很多cpu...... (3认同)
  • +1。`nice`ing 是传统的方式,这是有充分理由的。 (2认同)

Kei*_*ith 5

如果您使用 systemd 运行 clamd,则可以使用该CPUQuota选项。

编辑/lib/systemd/system/clamav-daemon.service以在该[Service]部分中包含此行:

CPUQuota=20%
Run Code Online (Sandbox Code Playgroud)

然后重启服务

sudo systemctl daemon-reload
sudo systemctl reload-or-restart clamav-daemon
Run Code Online (Sandbox Code Playgroud)