web-dev-qa-db-ja.com

systemd-runでCPU使用率を制限する方法

アイドル状態でもCPUを100%使用するバグのあるプログラムがあります。現時点では修正は現実的ではないので、10%を超えないCPUを使用できるように制限したいと思います。しかし、私が何をしても、プロセスは常に1つのCPUの100%を消費します。

Arch Wiki に、これを含むファイルを作成するように指示する手順が見つかりました。

# cpulimit.slice
[Slice]
CPUQuota=10%

どうやら、これらの制限を使用して、次のようにシェルを起動できます:

systemd-run --slice=cpulimit.slice --uid=myuser --Shell

これは機能しているようで、Sudoパスワードを入力するとシェルが表示されるので、100%CPUを使用する簡単なテストを実行し、Ctrl + Cで停止できます。

while true; do true; done

これはスライス内で実行されているため、10%以下のCPUを使用すると予想しますが、常に100%のCPUを使用します。

何が悪いのですか?

2
Malvineous

問題を発見しました。 .sliceファイルは/etc/systemd/system/に配置する必要があり、最初にsystemctl daemon-reloadを実行する必要があります。その後、すべてが機能します。

残念ながら、無効なsystemd-runパラメータを使用しても、--sliceコマンドはエラーメッセージを表示せず、指定した名前と呼ばれる追加の制限なしに新しいスライスを作成するだけです。

2
Malvineous