Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

For a certain directory DIR on my system, the ls --color=always takes about 8 seconds, although it contains less than 10 files and subdirectories. Without the color argument it takes no time.

Why would ls take so long with the color argument, and how can I find out what exactly is taking so long? It is probably some subdirectory in DIR that is mounted, but how can I find out which one is the troublemaker?

share|improve this question
3  
Have you tried strace? –  Andrew Sep 30 '11 at 2:23
    
Cool question. +1! –  0xC0000022L Mar 6 '12 at 19:19

3 Answers 3

They just disabled color on servers at my work. According to this blog: http://www.techper.net/2011/01/25/ls-command-slow-on-very-large-directories/

It may be due to the stat() function being called on all the different mounts in a specific directory to get the information presented by the colors...

It's easy to confirm this:

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

The first command, for a certain problematic directory structure I created, gives:

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

And the second one:

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

Please keep in mind that if you repeat the bottom "benchmark", its second run will have the stat() data already in cache. The second run for the colorized output gave me:

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

I was unable to completely clear the cache to ensure I could reproduce the "more than 90secs" result. The vm.drop_caches sysctl as described in http://stackoverflow.com/questions/599719/how-to-clean-caches-used-by-the-linux-kernel was insufficient.

share|improve this answer

Try doing ls using *s to only list certain things and see which combinations are slow.

share|improve this answer

Some color configurations are silly and read file contents. Check your config. I use colorized ls but only such that lstat would provide all the required information.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.