600万以上のファイル、4000以上のディレクトリ、合計約26GBのデータを含む巨大なディレクトリを削除したいと思います。時間がかかることがわかっているため、ファイルが削除されている間ionice
に他の操作を続行できるように、I / O優先順位をアイドルに設定することがよくあります。
time ionice -c3 rm -vrf /tmp/huge-folder
しかし、私のデスクトップ全体の環境は現在まだ非常に遅いです。 Google Chromeが新しいタブを開き、ページを読み込むのに長い時間がかかり、時には新しいxtermウィンドウを開くのに時間がかかることがあります。要約すると、プロセスI / Oの優先順位を下げても何の利点も得られないようですrm
。
検査は、私が望むI / O優先順位を持つプロセスiotop
にいくつかのI / O時間がかかることを示しました。rm
idle
ただし、ext4のログプロセスとソフトウェアRAIDプロセスにはI / O時間がかかることがあります。
問題の原因となる可能性がある独自のデフォルト I/O 優先順位をどのように使用するかを確認してください。実際には、他のすべてのデスクトッププロセスのデフォルトの優先順位よりも高いjbd2
優先順位で実行されます。be/3
be/4
他の多くの質問それが何であるか、なぜI / O時間を費やすのか尋ねて答えるのは、jbd2
私が知りたいことではありません。私の質問は:この特定のシナリオに対してアイドルI / O予約優先順位を実際に取得する方法はありますか?明らかに、サポートするのはクレイジーな考えionice
です。jbd2
追加設定情報:これは、3つの回転ディスクを備えたソフトウェアraid10の上部にあるext4ファイルシステムにあります。 ext4はデフォルトオプションでフォーマットされインストールされます(他の場合はDebianのデフォルト)。
答え1
この質問をした後、私はLinuxカーネルでI / Oがどのように機能するかを学び、ほとんどの書き込み操作ionice
では機能しないという結論に達しました。
読み取り操作はほとんど同期的であり、簡単に優先順位を付けることができます。おそらく、これは最適化、集計などを可能にするために後で(したがって非同期)まで遅れることが多い書き込みの場合ははるかに難しいでしょう。このルートに沿って良い情報を転送して正しく集計するのは簡単ではないと思います。
源泉:Linux ioniceに関するいくつかの注意。ソースではionice
LVMやソフトウェアRAIDでは動作しないと言われていますが、それでも正しいかどうか疑問です(ブログ投稿は少し古いです)。