Notes on SMP performance on FreeBSD

Since the conclusion of the SMPng project, the focus of SMP development in FreeBSD has shifted from deploying locking infrastructure to careful profiling and optimization of kernel SMP strategies for increased performance on common workloads.  FreeBSD 7.0 was the first release to benefit from this optimization work.

Workloads

We are in the process of gathering a library of common application workloads that are used to compare performance across time and against other operating systems.  Comparisons are mostly performed against various versions of FreeBSD, Linux 2.6.x systems, and other operating systems.  Solaris is a future target of interest, but is not currently available on our test systems.

Some of the above benchmarks have not been written up, but there are various unsorted graphs to be found here.

Hardware

Most SMP scaling work is done on 8-core opteron or xeon systems, running in either i386 or amd64 mode.  Changes that have the potential for increased overhead are also validated on systems with fewer CPUs, including UP, UP + HTT and dual-core systems, or the 8-core systems with some cores disabled.  An intel 16-core xeon is available but requires further scheduler work to improve performance (this work is in progress). Update: this work is largely complete but the 16-core system broke; we are in need of a replacement.

Presentations about FreeBSD performance

The following are some presentations I have given at previous conferences and developer summits relating to FreeBSD SMP performance.

Work in progress

Last updated 04 June 2008