Long Format Directory Listing 15x Slower in FreeBSD 5.x

Nikolai Schupbach nikolai at net24.co.nz
Mon Sep 12 19:20:30 PDT 2005


Brooks Davis wrote:

>On Mon, Sep 12, 2005 at 09:37:27PM -0400, Kris Kennaway wrote:
>  
>
>>On Mon, Sep 12, 2005 at 06:33:53PM -0700, Brooks Davis wrote:
>>    
>>
>>>On Mon, Sep 12, 2005 at 08:51:44PM -0400, Kris Kennaway wrote:
>>>      
>>>
>>>>On Tue, Sep 13, 2005 at 11:55:55AM +1200, Nikolai Schupbach wrote:
>>>>        
>>>>
>>>>>Hello,
>>>>>
>>>>>We have been trying to migrate to FreeBSD 5.4 from an older 4.x release 
>>>>>for one of our busy mail servers. But we have encountered problems with 
>>>>>directory listings on 5.4.
>>>>>
>>>>>Our /var/mail directory contains approximately 8,000 files doing a long 
>>>>>directory listing (ls -l) takes approximately 5 min and during this time 
>>>>>the CPU is running near 100%, on a FSBD 4 box the same directory 
>>>>>contents takes less than 20 seconds to list. Even on a directory with 
>>>>>200 files, each file with a different owner, it will still take at least 
>>>>>4-5 seconds to list. The problems only seems to occur when the directory 
>>>>>contains files from many different users. (as in /var/mail). If I chown 
>>>>>all the files in the /var/mail directory to a single user the directory 
>>>>>listing is near instant.
>>>>>
>>>>>It appears it has something to do with 'ls' looking up the id's in the 
>>>>>password database, because if I instruct ls to display numeric IDs (ls 
>>>>>-ln), rather than converting to user and group names, the directory with 
>>>>>8,000 files, with 8,000 different owners will list instantly.
>>>>>
>>>>>The reason this concerns me so much is we are also having a problem with 
>>>>>our Washington IMAP / POP3 server on FBSD 5 using a lot of CPU while 
>>>>>operating on small and even 0 byte mailboxes, when there are approx five 
>>>>>or more concurrent POP3 or IMAP sessions. And I can't help thinking that 
>>>>>the two problems are related.
>>>>>
>>>>>Does anyone have any ideas? Has anyone else noticed this problem? If I 
>>>>>can't resolve it I'm most likely going to revert to using 4.11, but I'd 
>>>>>really like to know what is going on. (and yes I'm using UFS_DIRHASH)
>>>>>          
>>>>>
>>>>Sounds like the real problem is that you have >8000 users on your
>>>>machine and lookups are taking a long time.  There has been discussion
>>>>of this problem and how to solve it on freebsd-questions@ several
>>>>times..I think it involves making a minor change to pwd_mkdb and
>>>>rebuilding.  Please search the archives for that mailing list.
>>>>        
>>>>
>>>If you are using NIS and have any compat options in /etc/nsswitch.conf
>>>your performance will really suck in situations like this.  IIRC, the
>>>compat code is worse than O(n^2) if you look up each user and the
>>>non-compat code is close to O(n).  I'd really like to stop generating
>>>nsswitch.conf entries that use compat in 7.0.
>>>      
>>>
>>I'm pretty sure there's a problem with the database hash parameters
>>used by pwd_mkdb on systems with large numbers of users..this is what
>>I was alluding to above.
>>    
>>
>
>That wouldn't suprised me.  For that matter it could be both problems.
>
>-- Brook
>
Looks like exact problem is described here:
http://www.freebsd.org/cgi/query-pr.cgi?pr=75855

I'm not using NIS, so I will try the change /etc/nsswitch.conf  group 
and passwd lines from 'compat' to 'files' and report back.

-- Nikolai.




More information about the freebsd-stable mailing list