最小CPU比でファイルを圧縮するには?

最小CPU比でファイルを圧縮するには?

ファイルを圧縮するためにbzip2を使用していますが、プロセスはCPUの100%以上を占めています。最小CPU比でbzip2を実行する方法はありますか?

答え1

このプロセスはシステムの他のプロセスを妨げますか? bzip2で使用されるCPUを制限するのはなぜですか?

nice次のコマンドを使用してプロセスの優先順位を変更できます。

$ nice -n 19 bzip2 <file>

また、bzip2圧縮レベルを下げることもできます。

$ bzip2 -1 <file>

答え2

推奨事項:優先順位の使用

@EEAAの回答に加えて、他のプロセスの影響を最小限に抑えるために、bzipプロセスに最低の優先順位を与えるには、さらにionice。これはIOスケジューラ(カーネルのデフォルトですが、インストールに応じて調整できます)を使用する場合にのみ便利ですionice。あるいは、IOスケジューラを使用しても影響はありません。CFQionicedeadlinenoop

使用しているIOスケジューラを確認するには:

cat /sys/block/<DEVICE>/queue/scheduler

<DEVICE>ハードドライブデバイスはどこにありますか?sda

今はionice最低IO優先順位のクラス3を設定しようとしています。これを一緒に組み合わせることができますnice

$ nice -n 19 ionice -c3 bzip2 <file>

TomとEEAAが説明するように、それだけで十分です。カーネルは、他のプロセスがCPUやIOを必要としない場合、bzipができるだけ早く実行されることを保証します。ただし、必要に応じて他のプロセスに優先順位を付けます。これは推奨される選択です。

代替案: cpulimit - CPU 使用量の制限

bzipで「CPU制限」を引き続き使用できるようになりました。私の選択ではありませんが、試してみたい、またはもっと気に入ったら使用してくださいcpulimit。ただし、通常、Linuxではデフォルトでパッケージ化またはインストールされません。だからインストールする必要があります。ニッククラフト良い文書がありますcpulimitインストールと使用方法
公式ウェブサイトは次のとおりです。http://cpulimit.sourceforge.net/

関連情報