Recently, Kris Kennaway unveiled a slide “Introducing FreeBSD 7.0, which focused on features of the upcoming release. (Now is 7.0 BETA2)
In this article, we are talking about the amazing SMPng project…
SMPng stands for “Symmetric Multi-Processor, next generation,” tries solve several issue leads from old architectural model for SMP in BSD.
As Kris said in the slides:
FreeBSD 4.x is a single-threaded kernel with limited multiprocessor
support.
The SMPng project can be divided into three parts:
- Make it work
FreeBSD 5.0-5.2.1 (2003-01-17 – 2004-02-22)
Debut of the new architectural model for symmetric
multiprocessor support in FreeBSD.FreeBSD 5.3 (2004-11-06), 5.4 (2005-05-09)
The fundamental architectural changes were largely in place
Some initial progress with kernel parallelism by 5.3 and 5.4 (network stack, virtual memory, …) - Make it work well
FreeBSD 6.0 (2005-11-01), 6.1 (2006-05-08), 6.2 (2007-01-15)
Stabilized the work of the 5.x branch
Performance benefits from subsequent development work
e.g. Virtual File System (VFS) and Unix File System (UFS) now allow parallel access
Large parts of the kernel may now operate in parallel, with significant performance gains on many common workloads - Make it fast
The goals of the SMPng project have been achieved
The FreeBSD 7 kernel is a fully parallel system
The “Giant lock” is no longer present on almost all possible workloads
I Major shift of focus from correctness to optimization, with impressive results
Performance optimizations throughout the system
The ULE scheduler is now recommended instead of the historical 4BSD scheduler
Better interactive performance on desktop systems
Significantly better performance on SMP systems
4BSD will remain the default scheduler in 7.0 to be conservative, but likely to switch for 7.1.