「du」プログラムの攻撃性を低くすることはできますか?


21

du多数のサブディレクトリの要約を作成し、最悪の犯罪者を見つけ、潜在的な問題を見つけるために急速に上昇しているものがあるかどうかを見つけるために出力を使用する定期的な仕事があります。diffスナップショットに対して使用して比較します。

最上位のディレクトリがあり、サブディレクトリは数百(数百)あり、各サブディレクトリにはそれぞれ数万(またはそれ以上)のファイルが含まれる場合があります。

du -sこのコンテキストでの" "は非常にIOアグレッシブである可能性があり、サーバーがそのキャッシュを救済してから、非常に好ましくない副作用である大量のIOスパイクを引き起こします。

不要な副作用なしで同じデータを取得するために使用できる戦略は何ですか?


9
ドイツでは、「Sie」に置き換えることができます。
フェデリコポロニ

回答:


28

を見てくださいionice。からman ionice

このプログラムは、プログラムのioスケジューリングクラスと優先度を設定または取得します。引数が指定されていない場合、または-pのみが指定されている場合、ioniceは現在のioスケジューリングクラスとそのプロセスの優先度を照会します。

実行するにはdu利用できる最も低い優先度である「アイドル」I / Oクラスで、あなたはこのような何かを行うことができます。

ionice -c 3 du -s

これによりdu、他のプロセスのI / Oが妨げられなくなります。次のように、CPU優先度を下げるためにプログラムを削除することも検討してください。

renice -n 19 "$duPid"

初期化時に両方を行うこともできます。

nice -n 19 ionice -c 3 du

5
既存のプログラムを放棄するには、のrenice代わりに呼び出す必要がありますniceduioniceとniceの両方で開始するには、両方のプログラムを連鎖できますnice -n19 ionice -c3 du
ジョフェル

niceCPUだけでなく、I / Oスケジューラの優先度にも影響します。
ヨルダン

1
@jordanm私の知る限り(少なくともLinuxでは)、niceCPUの良さに影響するだけです(間接的にI / Oに影響を与える可能性がありますが、I / Oスケジューラの優先順位には影響しません)。あなたはこの行動をどこで見ますか?どこかに文書化されていますか?
クリスダウン


@jordanmうーん、私はその本を持っています。私はそれを簡単にざっと見てみましたが、ページ263でについての明確な詳細が示されてniceいるだけで、CPUのベースタイムクォンタムについてのみ説明しています。本のどこにあるのか分かりますか?私は状態がそれはで言及されていないことを信頼できるソースを読んで興味があるman niceman 2 niceman 2 setpriorityinfo niceまたはinfo 'nice invocation'方法についての詳細のかなりのビットにこれら行くのいくつかのために奇妙である、私の知る限りnice、コール作品そしてそれは何をします。
クリスダウン

4

単一のディレクトリに大量のファイルがある場合、多くのファイルシステムが単一のディレクトリで大きなファイルツリーをうまく処理できないため、これがI / Oスパイクの原因になります。それをより多くのサブディレクトリに分割すると、そこに役立ちます。1つのディレクトリに1万を超えるファイルがあり、それが問題を引き起こしている場合、おそらくそれを分割する必要があります。

ディスク使用量の追跡については、まずdf使用量の値が急激に上昇しなかった場合、サブディレクトリも上昇しなかったため、du完全にスキップできます。

別の代替手段は、ファイルシステムがサポートしている場合、使用状況を継続的に追跡するディスククォータシステムです。


システムはビルドファームであるため、ディレクトリ内のファイルの数は、実際にビルドするコンポーネントの開発者によって決まります。dfうまくいきません。問題はスクリプトをクリーンアップしているため、変更はないかもしれませんが、ディスクスペースを積極的に取得している自動ジョブの早期警告を見逃していることです。全体的なディスク使用を監視するためにzabbixを使用しますが、状況が少し変わっている個々のディレクトリを知ることは非常に重要です。
ダニーステープル

0

さらにionice、ディスクアクセスをより効率的にすることができます。これは次を実行することで試行できます

find /du/root -printf ""
find /du/root -perm 777 -printf ""

最初(多分、を通してionice)。ファイルが多すぎる場合は機能しません。多すぎる数は、空きRAMの量によって異なります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.