Verlangsamen große Ordner die E/A-Leistung?

Verlangsamen große Ordner die E/A-Leistung?

Wir haben einen Linux-Serverprozess, der ein paar tausend Dateien in ein Verzeichnis schreibt, die Dateien löscht und dann ein paar tausend weitere Dateien in dasselbe Verzeichnis schreibt, ohne das Verzeichnis zu löschen. Was mir auffällt, ist, dass der Schreibprozess immer langsamer wird.

Meine Frage ist folgende: Die Verzeichnisgröße des Ordners ist von 4096 auf über 200000 gewachsen, wie an dieser Ausgabe von ls -l zu sehen ist.

root@ad57rs0b# ls -l 15000PN5AIA3I6_B insgesamt 232 drwxr-xr-x 2 chef chef 233472 30. Mai 21:35 Barcodes

Können diese großen Verzeichnisgrößen bei ext3 die Leistung beeinträchtigen?

Danke.

Aaron

Antwort1

Ja, große Verzeichnisgrößen können ein Problem darstellen. Im Allgemeinen ist es am besten, sie zu vermeiden, indem man Dateien in Unterverzeichnisse hasht. Wenn das keine Option ist, gibt es eine ext3-Funktion, die die Suchleistung in großen Verzeichnissen erheblich verbessern kann:

tune2fs -O dir_index /dev/$DEVICE
e2fsck -D /dev/$DEVICE

Dies aktiviert B-Tree-Hashes von Verzeichnisindexdaten und verbessert die Suchzeit erheblich. Natürlich ist es möglich, dass Ihre Installation dies bereits aktiviert hat. Sie können dies überprüfen, indem Sie diesen Befehl ausführen und dir_indexin der Ausgabe nach Folgendem suchen:

tune2fs -l /dev/$DEVICE | grep 'features:'

BEARBEITEN: Sie können auch die Einstellung als Mount-Option in Betracht ziehen noatime. Dies ist keine spezielle Optimierung für große Verzeichnisse, kann aber bei hoher Dateisystemaktivität erhebliche Leistungsverbesserungen bieten.

verwandte Informationen