I would tend to agree (although Ian saw an improvement on his 8-way), but that is why we have it as a runtime-parameter. Since I'm sure that most Apache installations happen on <12-way machines, we should change the default to pthread and make a note in the release docs to let people with bigger iron know their alternatives.
-aaron On Mon, Sep 24, 2001 at 11:00:31AM -0400, Bill Stoddard wrote: > >From what I have seen, pthread accept serialization does not scale well on > >multi CPU > Solaris systems (above 4 way). pthread is much faster than fcntl on single > CPU boxes, but > much slower than fcntl on a 12 way box. > > Bill > > > > > I've brought this up before and I'll bring it up again. =-) > > > > Ian has seen about a ~60rps improvement using AcceptMutex pthread > > versus fcntl() on Solaris with httpd. Also, fcntl has scalability > > issues from what I can tell on Solaris (as described in STATUS) > > that cause fatal errors in httpd. > > > > I know that the AIX guys use pthread as well. > > > > Is there any platform that meets the criteria for our pthread > > interprocess implementation where it is *not* better than fcntl()? > > > > If there is a problematic platform, then I'd like to set Solaris > > to use pthread by default. (I think we can define apr_lock_method.) > > -- justin > > > > Index: configure.in > > =================================================================== > > RCS file: /home/cvs/apr/configure.in,v > > retrieving revision 1.366 > > diff -u -r1.366 configure.in > > --- configure.in 2001/09/22 19:10:18 1.366 > > +++ configure.in 2001/09/22 19:11:41 > > @@ -1126,13 +1126,13 @@ > > APR_DECIDE(USE_SYSVSEM_SERIALIZE, [SysV IPC semget()])) > > APR_IFALLYES(func:flock define:LOCK_EX, > > APR_DECIDE(USE_FLOCK_SERIALIZE, [4.2BSD-style flock()])) > > +APR_IFALLYES(header:fcntl.h define:F_SETLK, > > + APR_DECIDE(USE_FCNTL_SERIALIZE, [SVR4-style fcntl()])) > > # note: the current APR use of shared mutex requires /dev/zero > > APR_IFALLYES(header:pthread.h define:PTHREAD_PROCESS_SHARED dnl > > func:pthread_mutexattr_setpshared dnl > > file:/dev/zero, > > APR_DECIDE(USE_PROC_PTHREAD_SERIALIZE, [pthread mutex])) > > -APR_IFALLYES(header:fcntl.h define:F_SETLK, > > - APR_DECIDE(USE_FCNTL_SERIALIZE, [SVR4-style fcntl()])) > > if test "x$apr_lock_method" != "x"; then > > APR_DECISION_FORCE($apr_lock_method) > > fi > >
