Frage Warum könnte `ls --color = always` für ein kleines Verzeichnis langsam sein?


Für ein bestimmtes Verzeichnis DIR auf meinem System, das ls --color=always dauert ungefähr 8 Sekunden, obwohl es weniger als 10 Dateien und Unterverzeichnisse enthält. Ohne das Farbargument dauert es keine Zeit.

Warum würde ls Nimm so lange mit dem Farbargument, und wie kann ich herausfinden, was genau so lange dauert? Es ist wahrscheinlich ein Unterverzeichnis in DIR, das gemountet ist, aber wie kann ich herausfinden, welcher der Unruhestifter ist?


5
2017-09-29 18:13


Ursprung


Hast du es versucht strace? - Andrew
Coole Frage. +1! - 0xC0000022L


Antworten:


Sie haben nur Farbe auf Servern bei meiner Arbeit deaktiviert. Laut diesem Blog: http://www.techper.net/2011/01/25/ls-command-slow-on-very-large-directories/

Das liegt möglicherweise daran, dass die Funktion stat () für alle verschiedenen Mounts in einem bestimmten Verzeichnis aufgerufen wird, um die Informationen der Farben zu erhalten ...

Das lässt sich leicht bestätigen:

time command ls /dir/with/many/toplevel/entries/ >/dev/null
time $SHELL -c "ls --color=always /dir/with/many/toplevel/entries/ >/dev/null"

Der erste Befehl für eine bestimmte problematische Verzeichnisstruktur, die ich erstellt habe, lautet:

real    0m0.523s
user    0m0.284s
sys     0m0.052s

Und der zweite:

real    1m47.799s
user    0m0.360s
sys     0m0.928s

Bitte beachten Sie, dass wenn Sie den unteren "Benchmark" wiederholen, der zweite Lauf die Daten stat () bereits im Cache haben wird. Der zweite Lauf für die kolorierte Ausgabe gab mir:

real    0m0.409s
user    0m0.256s
sys     0m0.120s

Ich konnte den Cache nicht vollständig löschen, um sicherzustellen, dass ich das Ergebnis "mehr als 90 Sekunden" reproduzieren konnte. Das vm.drop_caches sysctl wie beschrieben in https://stackoverflow.com/questions/599719/how-to-clean-caches-used-by-the-linux-kernel war nicht ausreichend.


5
2018-03-06 18:48



10 stat () Anrufe dauert nicht 8 Sekunden. - joshudson


Versuchen Sie, ls mit * s zu verwenden, um nur bestimmte Dinge aufzulisten und zu sehen, welche Kombinationen langsam sind.


1
2017-09-29 18:24





Einige Farbkonfigurationen sind albern und lesen Datei Inhalt. Überprüfen Sie Ihre Konfiguration. Ich verwende kolorierte ls, aber nur so, dass lstat alle erforderlichen Informationen liefert.


0
2018-04-16 18:21