Вопрос: Почему «ls --color = always» будет медленным для небольшого каталога?


Для определенного каталога DIR в моей системе ls --color=always занимает около 8 секунд, хотя в нем содержится менее 10 файлов и подкаталогов. Без аргумента цвета это не требует времени.

Почему бы ls так долго продолжайте с аргументом цвета, и как я могу узнать, что именно так долго? Это, вероятно, какой-то подкаталог в DIR, который монтируется, но как я могу узнать, какой из них является нарушителем спокойствия?


5
2017-09-29 18:13


Источник


Ты пробовал strace? - Andrew
Холодный вопрос. +1! - 0xC0000022L


Ответы:


Они просто отключили цвет на серверах при моей работе. Согласно этому блогу: http://www.techper.net/2011/01/25/ls-command-slow-on-very-large-directories/

Это может быть связано с тем, что функция stat () вызывается на всех разных монтах в определенном каталоге, чтобы получить информацию, представленную цветами ...

Это легко подтвердить:

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

Первая команда для определенной проблемной структуры каталогов, которую я создал, дает:

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

И второе:

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

Имейте в виду, что если вы повторите нижний «тест», его второй запуск будет иметь данные stat () уже в кеше. Второй запуск для раскрашенного вывода дал мне:

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

Мне не удалось полностью очистить кеш, чтобы я смог воспроизвести результат «более 90 секунд». vm.drop_caches sysctl, как описано в https://stackoverflow.com/questions/599719/how-to-clean-caches-used-by-the-linux-kernel было недостаточно.


5
2018-03-06 18:48



10 вызовов stat () не занимает 8 секунд. - joshudson


Попробуйте сделать ls, используя * s, чтобы перечислять только некоторые вещи и видеть, какие комбинации медленны.


1
2017-09-29 18:24





Некоторые цветовые конфигурации глупы и читают файл содержание, Проверьте конфигурацию. Я использую colorized ls, но только так, чтобы lstat предоставил всю необходимую информацию.


0
2018-04-16 18:21