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.
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).
Presentations about FreeBSD performance
The following are some presentations I have given at previous conferences and developer summits relating to FreeBSD SMP performance.
- "FreeBSD 7.0 and Beyond", presented at FOSDEM 2008 (Brussels). This is partly a cut down version of the following presentation but contains new performance data
- "Introducing FreeBSD 7.0", presented at BSDCon Turkey 2007 (Istanbul) and MeetBSD 2007 (Warsaw, Poland)
- "Scalability update", presented at BSDCan 2007 DevSummit. Progress in SMP performance and scalability as of May 2007.
- "Filesystem performance", presented at BSDCan 2006 (Ottawa). Report on progress on filesystem performance and scalability in FreeBSD 6.x compared to 4.x and 5.x.
Future work
-
lockmgr
-
scheduler optimizations for 16-core systems
-
TCP PCB locking
Last updated 08 Mar 2008