私はネットワークファイルシステムに多くのファイルを書き込みます。これは、ディレクトリ構造の各リーフディレクトリに複数の(約1000個の)ファイルがあるディレクトリ構造で作成されます。関連ファイルを含むディレクトリ構造部分は非常に単純です。
lsまたはmkdir fooを実行すると、その操作に長い時間(約10分)かかります。
なぜこれが起こるのですか? lsやmkdirなどのタスクをより効率的に実行するにはどうすればよいですか?
答え1
ネットワークファイルシステムを使用しているため、ディスクではなくネットワークによって速度が制限されることがあります。
これを実行すると、ls
基本的な操作はすべてのファイルを読み取り、並べ替え、印刷することです。これは、それぞれls
が何千ものファイルエントリを読み取る必要があることを意味します。キャッシュは役に立ちますが、まだ遅いプロセスです。
同様に、確認する必要があるディレクトリを実行するときは、mkdir
そのディレクトリがまだ存在していないことを確認してください。
解決策はディレクトリあたりのファイル数を減らし、狭くて深い代わりに浅くて広い。