Subject: Thread benchmarks, round 2
To: None <tech-kern@netbsd.org>
From: Andrew Doran <ad@NetBSD.org>
List: tech-kern
Date: 10/05/2007 00:04:27
So, I learned a few things since I put up the previous set of benchmarks:

- The erratic behaviour from Linux is due to the glibc memory allocator.
  Using Google's tcmalloc, the problem disappears.

- I missed a few things when porting jemalloc from FreeBSD. One of them
  was fairly major. Due to my mistake jemalloc on NetBSD was, basically,
  single threaded. That said it did show a noticable improvement over
  phkmalloc.

- There was a nasty performance bug in NetBSD's pthread mutexes, which
  is now fixed. libpthread has also had a couple more tweaks for performance
  that have had a positive impact.

- The memory allocator used has a significant effect on sysbench itself:
  it needs to be multithreaded.

- Mindaugas has made more improvements to his scheduler and these are
  showing a really positive effect.

So after making some changes to NetBSD, and changes to how I'm benchmarking
the systems, I have rerun them. In contrast to the previous runs, this one
is done locally:

	http://www.netbsd.org/~ad/sysbench2/4cpu.png 

Kris Kennaway has kindly offered to try NetBSD on an 8-way system. I expect
that NetBSD will hit a fairly clear ceiling due to poll, fcntl and socket
I/O causing contention on kernel_lock. It will be interesting to see.

Thanks,
Andrew