質問
使ってみました du
今日のディスク使用量を単一のディレクトリで計算します。ディレクトリのサイズは6GBで、計算には次の時間がかかりました。
prompt> time du -sh .
6.0G .
real 1m32.405s
user 0m2.053s
sys 0m16.552s
UNIX DUコマンドが使用するアルゴリズムは何ですか?なぜそんなに遅いのですか?ディスクスペースをより効率的に計算する選択肢はありますか?呼び出しのプラットフォームはです Sun
. 。サイズが計算されたディレクトリは、NFSマウントです。
解決
発見されたファイルのサイズをまとめながら、ディレクトリを再帰的に歩くだけだと思います。本当にシンプルで、本当にですが、もちろん時間がかかります。ファイルシステムがこれらの操作をより迅速にすると、より速くなる可能性があります。
他のヒント
DUはすべてのディレクトリと統計をリストする必要があります。
ファイルのサイズを取得している間、それはそれらを合計し、終了すると合計が印刷されます
たとえば、SSHFSファイルシステムに200万個のファイルがあるこの1つのディレクトリ:
prompt$ time du -sh .
367G .
real 12m53.093s
user 0m3.848s
sys 0m14.265s
しかし、2回目の実行のキャッシュのために、それは次のとおりです。
prompt$ time du -sh .
367G .
real 4m56.875s
user 0m4.136s
sys 0m15.257s
その速度は、ファイル/ディレクトリカウントに依存します。 6つの1GBファイルを備えたディレクトリがある場合、計算するのに時間がかかります。指定されたディレクトリのファイルサイズを計算し、各子ディレクトリごとに再帰的に計算します。
所属していません StackOverflow