
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 ls
mehrere tausend Dateieinträge lesen muss. Caching kann hilfreich sein, ist aber immer noch ein langsamer Prozess.
Ebenso muss beim Ausführen mkdir
des 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.