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


Answers:


16

作为cpulimit的替代方法:

您可以使用nice命令启动clamscan,例如

nice -n 19 clamscan

有关man nice详细信息,请参见。

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

renice可以更改正在运行的进程的优先级。


2
看起来它仍然可以吃很多cpu ...
Pitto

4
只要没有其他进程需要cputime,clamscan就会得到很多。但是,只要另一个进程(优先级更高)需要cputime,clamscan就没有机会了。cpulimit限制绝对cputime,nice限制相对cputime。
Clausi 2011年

2
+1。niceing是传统的做法,这是有充分理由的。
loevborg 2011年

是否有工具为要运行的特定应用程序定义默认值?最好是一个可让您并排比较所有预设的工具。
乔尼·阿斯玛

19

安装cpulimit

sudo apt-get install cpulimit

它提供了多种方法来限制进程的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

找不到目标进程...可能是因为我有运行clamscan的脚本?我做的:须藤请将CPULimit -e /etc/cron.hourly/virusscan -l 15
Pitto

@Pitto:您输入了错误的命令,/etc/cron.hourly/virusscan不是一个过程。如果需要限制clamscan,请运行sudo cpulimit -e clamscan -l 15
Sid

哦! 对!所以我应该在rc.local中启动时启动cpulimit,对吗?
皮托

2
sudo不是必需的,该过程不是系统过程。正如一个音符
安瓦尔

如果以编程方式使用,这将是一个非常整洁的解决方案!它是否支持基于模式的搜索?
乔尼·阿斯玛

4

这将是对Clausi答案的评论(我认为,从系统管理的角度来看,我认为这是最“正确的”),但它的内容太大了,无法放入评论框中。

  • Clamscan的工作量固定,因此将其限制为一定的速度意味着将需要更长的时间。它将使CPU争用更长的时间。

  • 使其尽可能快地运行意味着您可以充分利用CPU。使其“非常好”意味着它可以让其他进程在自己的工作之前完成工作。这意味着,如果还有很多其他繁忙的流程,是的,将需要很长的时间来完成自己的工作,但是如果那里什么都没有,那么它只会占用大量工作量。


3

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

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

CPUQuota=20%

然后重新启动服务

sudo systemctl daemon-reload
sudo systemctl reload-or-restart clamav-daemon

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.