Skip site navigation (1)Skip section navigation (2)
Date:      Tue,  4 Jan 2005 21:27:27 -0500
From:      Bruce Campbell <bruce@engmail.uwaterloo.ca>
To:        freebsd-questions@freebsd.org
Subject:   Re: New FreeBSD 5.3 e-mail server extremely slow - traced to getpwnam maybe ?
Message-ID:  <1104892047.41db508f4c7f4@www.nexusmail.uwaterloo.ca>
In-Reply-To: <20050104221531.GA70844@xor.obsecurity.org>
References:  <1104860328.41dad4a8ebd90@www.nexusmail.uwaterloo.ca> <20050104205922.GD13991@xor.obsecurity.org> <1104875116.41db0e6c7fbf3@www.nexusmail.uwaterloo.ca> <20050104221531.GA70844@xor.obsecurity.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Quoting Kris Kennaway <kris@obsecurity.org>:
>> > Well, no, not quite.
> > 
> > old: imap-uw-2002_1,1
> > new: imap-uw-2004a,1
> 
> OK, that's where you should start, then.  Go back to the software
> configuration that you know is working and see if it still misbehaves.
> 
> Kris

Thanks.  I shutdown imapd/ipop3d completely so I just had sendmail running, and still
load av. was 20-30.

Anyways, I have just found something very odd with both 5.2.1 and 5.3
on multiple different systems here, including a brand new GENERIC install.

On 5.x, "ls -l" or "ps waux" is very slow with our
/etc/master.passwd which has 11320 entries.  I truss'ed
those commands, and gave up after watching :

  lseek(4,0x17d000,SEEK_SET)                       = 1560576 (0x17d000)
  read(0x4,0x8074000,0x1000)                       = 4096 (0x1000)
  lseek(4,0x17e000,SEEK_SET)                       = 1564672 (0x17e000)
  read(0x4,0x8062000,0x1000)                       = 4096 (0x1000)
  lseek(4,0x17f000,SEEK_SET)                       = 1568768 (0x17f000)
  read(0x4,0x8066000,0x1000)                       = 4096 (0x1000)
  lseek(4,0x180000,SEEK_SET)                       = 1572864 (0x180000)

scroll by for 10 minutes.  (handle 4 = /etc/spwd.db)

I wrote a small program:

  #include <sys/types.h>
  #include <pwd.h>

  main( int argc, char *argv[] )
  {
  getpwuid( 13076 );
  }

and ran it under truss on 5.x and it generated 178,711 lines of output.
(the bulk of which is those lseek/read calls as above)

4.7 (with same master.passwd file) gave 59 lines of output, which seems
normal.

I'm speculating that imap and sendmail and just about everything use
getpwuid and getpwuid is misbehaving on 5.x especially with a large
master.passwd file.

I will report this through the proper mechanism once I do
just a bit more testing.  And perhaps it is a known issue
already and I'll look into that also.  Or perhaps I have messed
something up unwittingly, which I have been known to do.

We do have an extremely busy 5.2.1 system running here fine on
the same hardware, just it has a small /etc/master.passwd which may explain that
systems success to date.

Thank you to everyone who sent suggestions.

-- 
Bruce Campbell
Engineering Computing
CPH-2374B
University of Waterloo
(519)888-4567 ext 5889

----------------------------------------
This mail sent through www.mywaterloo.ca



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1104892047.41db508f4c7f4>