> } > 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.
> }
> } Here is the initial run with CVS HEAD sources (I took out the obvious
> ^^^^
> } things from GENERIC.MP like I386_CPU support, etc, and removed the
> } default datasize and stack size limits). Same benchmark config that
> } Andrew is using, etc.
> }
> }
http://people.freebsd.org/~kris/scaling/netbsd.png
> }
> } There are a couple of things to note:
> }
> } * the drop-off above 8 threads on FreeBSD is due to non-scalability of
> } mysql itself. i.e. it comes from pthread mutex contention in userland.
> } This is the only relevant lock contention point in the FreeBSD kernel
> } on this workload. There are some things we can do in libpthread to
> } mitigate the performance loss in the over-contended pthread situation,
> } but we haven't done them yet.
> }
> } * The tail end of the graph is somewhat noisy, which is the reason for
> } the jump at 19 threads (I only graphed a single run). The distribution
> } at 20 clients looks like:
> }
> } +------------------------------------------------------------+
> } | x x |
> } |x x x xxx x x xx x x xxx x xx|
> } | |_______________A_M_____________| |
> } +------------------------------------------------------------+
> } N Min Max Median Avg Stddev
> } x 20 2326.01 2758.86 2586.47 2572.856 116.69937
> }
> } Next, to try and reproduce Andrew's result, I disabled 4 CPUs (using
> } cpuctl in NetBSD) and compared FreeBSD and NetBSD again. I didnt do a
> } full graph yet, but the results are consistent with what I saw on 8 CPUs.
>
> cpuctl doesn't truly disable the cpus. You would probably need to
> disable them in the BIOS or build a custom kernel.