単一のアプリケーションのCPU使用率を制限できますか?


回答:


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

2
+1。niceingは伝統的な方法であり、正当な理由があります。
loevborg

特定のアプリケーションを実行するデフォルトのnice値を定義するツールはありますか?できれば、すべてのプリセットを並べて比較できるツール。
ジョニーアスマー

19

cpulimitをインストールする

sudo apt-get install cpulimit

プロセスのCPU使用率をfoo20%に制限するさまざまな方法を提供します

  • プロセス名: 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を実行するスクリプトがあるからでしょうか?私がやる:sudo cpulimit -e /etc/cron.hourly/virusscan -l 15
ピット

@Pitto:間違ったコマンドを入力しました/etc/cron.hourly/virusscan。プロセスではありません。制限する必要がある場合はclamscan、実行しsudo cpulimit -e clamscan -l 15ます。
シド

ああ!正しい!だから、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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.