質問

使ってみました 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ファイルを備えたディレクトリがある場合、計算するのに時間がかかります。指定されたディレクトリのファイルサイズを計算し、各子ディレクトリごとに再帰的に計算します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top