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

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

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

私について知りましたアーチスウィキ次の内容でファイルを作成するように教えてください。

# cpulimit.slice
[Slice]
CPUQuota=10%

明らかに、次の制限を使用してシェルを起動できます。

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

これがうまくいくようです。 sudoパスワードを入力した後、シェルが作成され、100%CPUを使用した簡単なテストを実行し、Ctrl + Cの使用を停止できます。

while true; do true; done

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

私は何が間違っていましたか?

答え1

ちょうど問題を発見しました。ファイル.sliceを挿入して最初に実行する必要が/etc/systemd/system/ありますsystemctl daemon-reload。その後、すべてがうまく動作します。

残念ながら、無効な引数を使用している場合、このsystemd-runコマンドはエラーメッセージを表示せず、--sliceユーザーが提供する名前に追加の制限なしに新しいスライスを作成するだけです。

関連情報