作業ディレクトリにファイルが少ないのに、ls と mkdir に時間がかかるのはなぜですか?

作業ディレクトリにファイルが少ないのに、ls と mkdir に時間がかかるのはなぜですか?

私はネットワーク ファイル システムにたくさんのファイルを書き込んでいます。これはディレクトリ構造に書き込まれており、ディレクトリ構造内の各リーフ ディレクトリには少数 (約 1,000 個) のファイルがあります。関連するファイルを含むディレクトリ構造の部分は非常にフラットです。

ls または mkdir foo を実行すると、対応する操作に長い時間がかかります (約 10 分)。

なぜこのようなことが起こるのでしょうか? ls や mkdir などの操作をより効率的に実行するにはどうすればよいですか?

答え1

ネットワーク ファイルシステムを使用しているため、速度はディスクではなくネットワークによって制限される可能性があります。

を実行するとls、基本的な操作はすべてのファイルを読み込み、並べ替えてから印刷することです。つまり、ls数千のファイル エントリを読み取る必要があります。キャッシュは役立ちますが、それでも遅いプロセスです。

同様に、ディレクトリを実行するときは、mkdirそのディレクトリがまだ存在していないことを確認する必要があります。

解決策としては、ディレクトリあたりのファイル数を減らして、構造を狭くて深いむしろその後浅く広い

関連情報