New FreeBSD 5.3 e-mail server extremely slow - traced to
getpwnam maybe ?
Bruce Campbell
bruce at engmail.uwaterloo.ca
Wed Jan 5 09:56:44 PST 2005
Quoting Bruce Campbell <bruce at engmail.uwaterloo.ca>:
> Quoting Bruce Campbell <bruce at engmail.uwaterloo.ca>:
> > > On Tue, Jan 04, 2005 at 09:27:27PM -0500, Bruce Campbell wrote:
> > >
> > > > 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)
>
> It looks like the overhaul of getpwent Apr/2003 to make it thread safe:
>
> http://www.freebsd.org/cgi/cvsweb.cgi/src/lib/libc/gen/getpwent.c
>
> may be the problem.
>
> I've tested the dbm_fetch function independently on a large
> file, and it is fine.
>
> I've opened a bug report, and plan to build a replacement 4.x
> mail server, as the most deterministic path to restoring
> adequate e-mail service to our users.
>
> Can anyone suggest a workaround ?
Well, somewhat unbelievably, copying a getpwent.c from 4.7
and remaking libc on 5.3 with it worked. Load average
has gone from 70 to 2.
And, so that this qualifies as a question...
Am I crazy to pull an old getpwnam from 4.7 and blindly
build it on 5.3 ?
--
Bruce Campbell
Engineering Computing
CPH-2374B
University of Waterloo
(519)888-4567 ext 5889
----------------------------------------
This mail sent through www.mywaterloo.ca
More information about the freebsd-questions
mailing list