ディスクIO優先度を自動的に設定するにはどうすればよいですか?


8

IOを多用するアプリケーション(Virtualbox、Steamデータ検証などdd)を使用すると、システムがほとんど応答しなくなります。すべてが通常の優先順位で起動されているにもかかわらず、デスクトップが非常に遅くなり、他のアプリケーションの起動が大幅に遅れます。

ioniceたとえば、優先度をアイドルに変更するようなものを使用できることはわかっていますが、多くのプロセスを生成するVirtualboxの場合は困難になります。

システムに特定の種類のヒントを与えることができます。そのため、特定のアプリケーションを起動するときに、IO優先度が最も低く起動されますか?


私の解決策を試しましたか?それは仕事をしますか?
sm4rk0 2013

回答:


7

注:ここで説明するように、このソリューションはcfqスケジューラでのみ機能します。どちらを使用するかを確認してください

cat /sys/block/sda/queue/scheduler

そして、変更する必要があれば、それを。

私が正しく理解していればionice、コマンドを開始するたびに何らかの設定を適用する必要があります。あなたはこの方法でそれを行うことができます:

echo 'ionice -c 3 /usr/bin/VirtualBox "$@"' > VirtualBox
chmod a+x VirtualBox
sudo mv VirtualBox /usr/local/bin/

最初のコマンドは、VirtualBoxコンテンツとして一重引用符で囲まれたテキストを含むファイルを作成します。これは、プログラムへの完全なパスを持つ必要があります。指定するVirtualBoxだけで、作成したばかりのファイルと解釈して「ループ」を作成できるためです。

2番目のコマンドは実行可能にし、3番目は「システム」のbinフォルダーの前にあるフォルダーにこの新しいファイルを移動する/usr/binため、元のファイルの代わりに新しいファイルが実行されます。「$ @」の部分には、コマンドが呼び出されたすべての引数が含まれているため、実際のVirtualBoxコマンドに転送されます。

このスーパーユーザーの質問への回答(「はい」)によると、子供プロセスは親からionice優先順位を継承しますか?実行中のプロセスのIO優先度をどのように確認しますか?、次のようにionice、親プロセスにはそれで十分です:

ionice -c 3 VirtualBox

ionice manページから、次のI / Oスケジューリングクラスの値を使用できます。

  • なしの場合は0
  • 1はリアルタイム
  • ベストエフォートの場合は2
  • アイドルの場合は3(上記の例で使用)

番号またはクラス名を使用できます。

また、-n levelオプションは、有効なデータ(優先度レベル)として0〜7のリアルタイムおよびベストエフォートクラスに適用できます。


1
これは理論的には質問に答える可能性がありますが、答えの本質的な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
Lucio

@Lucio、ヒントに感謝しioniceますが、「親プロセスにはそれで十分なはずです」という本質的な部分ではありませんか?
sm4rk0 2013

1
はい、その通りです。しかし、可能であれば、少し時間を取ってから、この手順について自分の経験からより多くの情報を追加して、より良い答えを作成してください:)
Lucio

@ルシオ、私はそれが今十分に良いことを願っています。主張してくれてありがとう(:
sm4rk0 2013

1
参考:スケジューラでのみionice作業できcfqます!詳細については:unix.stackexchange.com/questions/136226/...
andras.tim

-1

'renice'コマンドを使用して、プロセスに優先順位を付けることができます。

renice -<priority> <application's pid>

ドライブがスピンダウンしすぎている可能性もあります。そのため、Virtualboxなどのアプリケーションを起動したい場合は、回避する前にスピンアップする必要があります(これには時間がかかる場合があります)。


ヒントをありがとう、しかし私はそれを自動的にシステム全体に広げる方法を探していました。例:Virtualboxを起動するときに、可能な限り低いIO優先順位で実行します...
セーラム

通常のniceとreniceは、IOを個別に優先しません。
Jay _silly_evarlast_ Wren

これはいいね、イオニスじゃない。1つはCPU用、もう1つはIO用です。
Dagelf
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.