"Victor J. Orlikowski" wrote: > > Hi all, > > Was running some performance tests on AIX... > And oddities popped up between 1.3 and 2.0 (latest CVS of both). > > Requests/sec. > no keepalive keepalive > 2.0 - prefork 420 590 > 2.0 - threaded 390 580 > 1.3 420 700
Victor, Now we're going to have to beat you with a stick. You didn't mention what kind of workload you're running. Are you serving a static file? How big? These things are important to know when analyzing benchmark results. I'm guessing you're serving a smallish static file. The Magic 8-ball at http://8ball.federated.com/ said "Without a doubt" when I asked this question. If ssi's were working, and you were measuring them, I think we would see 2.0 look a lot worse compared to 1.3, and threaded worst of all, because we don't have a fast mutex-free replacement for malloc/free yet <sigh>. For the buckets code, having some kind of connection lifetime apr_pool might be good enough, if we had a way to terminate keepalive connections that ate too much memory. But we need a good apr_malloc/free for other stuff anyway, like caching. I'm thinking it might be worth the effort to have some kind of apr_compare_and_swap primitive. Yes, it would involve writing a little assembler code for the different CPU architectures, which Apache hasn't done before AFAIK. But let's say we got past that and had it available. We could use it to create: * apr_push/pop, which could be used for memory block allocators (apr_pools and apr_malloc), and * apr_atomic_add, which could be used to safely increment and decrement shared counters etc., all without mutexes. Greg p.s. just kidding about the stick
