Warum dauern ls und mkdir so lange, obwohl sich nur wenige Dateien im Arbeitsverzeichnis befinden?

Warum dauern ls und mkdir so lange, obwohl sich nur wenige Dateien im Arbeitsverzeichnis befinden?

Ich habe viele Dateien in ein Netzwerkdateisystem geschrieben. Es ist in einer Verzeichnisstruktur geschrieben, sodass jedes Blattverzeichnis in der Verzeichnisstruktur einige (etwa tausend) Dateien enthält. Der Teil der Verzeichnisstruktur, der die relevanten Dateien enthält, ist ziemlich flach.

Wenn ich ls oder mkdir foo ausführe, dauert der entsprechende Vorgang lange (ungefähr 10 Minuten).

Warum passiert das? Wie kann ich Vorgänge wie ls oder mkdir zeitsparender ausführen?

Antwort1

Sie verwenden ein Netzwerkdateisystem. Ihre Geschwindigkeit wird daher möglicherweise eher durch das Netzwerk als durch die Festplatte begrenzt.

Wenn Sie ausführen ls, besteht die grundlegende Operation darin, alle Dateien einzulesen, zu sortieren und dann auszudrucken. Das bedeutet, dass jeder lsmehrere tausend Dateieinträge lesen muss. Caching kann hilfreich sein, ist aber immer noch ein langsamer Prozess.

Ebenso muss beim Ausführen mkdirdes Verzeichnisses überprüft werden, dass Sie nicht bereits über dieses Verzeichnis verfügen.

Eine Lösung wäre, die Anzahl der Dateien pro Verzeichnis zu reduzieren, um die Strukturschmal und tiefeher, alsflach und breit.

verwandte Informationen