Push more of the SMPng page into the past tense. Update some descriptions

and tasks.
This commit is contained in:
Robert Watson 2007-02-24 11:19:26 +00:00
parent df5bbf2dd1
commit 983c96c6a0
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/www/; revision=29653

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//FreeBSD//DTD HTML 4.01 Transitional-Based Extension//EN" [
<!ENTITY base CDATA "..">
<!ENTITY date "$FreeBSD: www/en/smp/index.sgml,v 1.173 2006/11/28 17:32:29 rwatson Exp $">
<!ENTITY title "FreeBSD SMP Project">
<!ENTITY date "$FreeBSD: www/en/smp/index.sgml,v 1.174 2006/11/29 10:25:03 joel Exp $">
<!ENTITY title "FreeBSD SMPng Project">
<!ENTITY email 'freebsd-smp'>
<!ENTITY % navinclude.developers "INCLUDE">
@ -39,26 +39,27 @@
<a name="goal"></a>
<h2>Project Goal</h2>
<p>The FreeBSD Symmetric MultiProcessing (SMP) project, often referred to
as SMPng (SMP next generation), is focused on introducing parallelism
<p>The FreeBSD Next Generation Symmetric Multi-Processing Project,
generally referred to as SMPng, is focused on introducing parallelism
into the FreeBSD kernel.
While earlier versions of FreeBSD (3.x, 4.x) supported parallelism in
user processes, the kernel was limited to executing on a single
processor at a time, using what is referred to as a "Giant lock" around
the kernel.
For many interesting workloads, this results in a substantial speed-up,
as significant computation occurs in user processes, especially for
applications such as rendering and compilation.
While earlier versions of FreeBSD (3.x, 4.x) supported parallel
execution of user processes, the kernel was limited to running on a
single processor at a time, using what is referred to as a "Giant lock"
around the kernel.
For many interesting workloads, Giant-locked kernels give substantial
speed-up, as significant computation occurs in user
processes--especially for applications such as rendering and
compilation.
However, for kernel-intensive applications, such as intensive network
or file system I/O, contention on the kernel lock results in little
speed-up.
The end goal of the SMPng Project is to decompose the Giant lock into a
number of smaller locks, resulting in reduced contention (and improved
SMP performance).
However, important steps along the way include redesigning significant
portions of the FreeBSD kernel architecture around the notion of
ubiquitous parallelism: that at any moment, many processors might enter
the kernel at the same time.
or file system I/O, contention on the kernel lock results in little or
no speed-up.
The goal of the SMPng Project has been to decompose the Giant lock into
a number of smaller locks, resulting in reduced contention (and
improved SMP performance).
However, important steps along the way have included red
signing significant portions of the FreeBSD kernel architecture around
the notion of ubiquitous parallelism: that at any moment, many
processors might enter the kernel at the same time.
This includes the introduction of more mature threading and
synchronization primitives, interrupt threads, cache-aware allocation
and scheduling, and topology-aware scheduling. </p>
@ -86,7 +87,7 @@
<p>SMPng debuted in FreeBSD 5.0-RELEASE in January of 2003, and involved
over five years of continuous development by a large number of members
of the FreeBSD development team, as well as many external contributors.
of the FreeBSD development team as well as many external contributors.
Since 5.0, the implementation has substantially matured; in the 5.0
release, the basic architectural changes required to support SMPng were
complete, including new kernel memory allocators, synchronization
@ -99,24 +100,24 @@
system, including large parts of Virtual Memory (VM), the Virtual File
System (VFS), UNIX File System (UFS), most parts of the network stack,
including IPv4, IPV6, FAST_IPSEC, UNIX domain sockets, and NetGraph,
and also from additional inter-process communication primitives.
and also from inter-process communication primitives.
The SMP-aware kernel slab allocator is now used almost universally, and
the focus has changed from "make it work", to "optimize it!".
the focus has changed from "make it work", to "optimize it".
Simultaneous work on KSE 1:1 and M:N threading has also allowed
applications to take advantage of new kernel parallelism.
The FreeBSD 5.3 kernel introduced Giant-free network stack execution
for most relevant code paths, and the FreeBSD 6.x kernel introduces
for most relevant code paths, and the FreeBSD 6.0 kernel introduced
MPSAFE VFS, as well as wide-spread performance optimization.</p>
<p>Continuing work on SMPng includes work sweeping up the "loose ends"
that remain under Giant, such as parts of NFS, less widely used file
systems such as NTFS, and less commonly used network stack components,
such as SLIP.
Another important focus is performance measurement and optimization,
which build on and refine the SMPng architecture: the introduction of
features such as the kernel trace facility (KTR), hardware performance
monitor counters (hwpmc), lock profiling, and improved memory
monitoring play important roles in this process.
<p>Continuing work on SMPng in the 6.x branch has included work sweeping
up the "loose ends" that remain under Giant, such as parts of NFS, and
less commonly used network stack components.</p>
<p>Throughout SMPng, an important focus is performance measurement and
optimization, which build on and refine the SMPng architecture: the
introduction of features such as the kernel trace facility (KTR),
hardware performance monitor counters (hwpmc), lock profiling, and
improved memory monitoring play important roles in this process.
Other important debugging and testing facilities include WITNESS, a
run-time kernel lock order verifier, and wide-spread use of lock
assertions and run-time invariants testing.</p>
@ -125,8 +126,11 @@
<h2>Project Plan</h2>
<p>This web page contains information relating to the SMPng effort;
because of the large amount of work and rapid pace of development,
it can fall a bit behind reality.</p>
because of the immense scope of the work and rapid pace of development,
it captures only a subset of what has been done. As the base SMPng
Project, moving towards fine-grained locking, is complete, this
information is largely historical, and does not attempt to capture
more recent work on locking and multi-processor performance.</p>
<p>The task list below is not intended to be complete, but does
represent a set of relevant and/or important components of the
@ -149,7 +153,7 @@
<p>Locking down of individual device drivers is tracked at
<a href="http://www.FreeBSD.org/projects/busdma/">the busdma and
SMPng driver conversion webpage</a>.</p>
SMPng driver conversion web page</a>.</p>
<p>Network stack locking information is available at &a.rwatson;'s
<a href="http://www.watson.org/~robert/freebsd/netperf/">netperf web
@ -400,8 +404,8 @@
<tr>
<td> NFS Server </td>
<td> &status.wip; </td>
<td> 24 November 2004 </td>
<td> &a.rwatson; </td>
<td> 24 February 2007 </td>
<td> &a.rwatson;, &a.jeff; </td>
</tr>
</table>
@ -1702,8 +1706,8 @@
split "in interrupt context" and "in interrupt thread"
code so as to acknowledge interrupts faster. This will permit
lower latency in interrupt handling. </td>
<td> &a.peter;, &a.scottl; </td>
<td> 1 July 2005 </td>
<td> &a.piso; </td>
<td> 24 February 2007 </td>
<td> &status.wip; </td>
</tr>
@ -2244,6 +2248,20 @@
<td> &status.done; </td>
</tr>
<tr>
<td> Lock down netnatm. </td>
<td> &a.rwatson; </td>
<td> April 2006 </td>
<td> &status.done; </td>
</tr>
<tr>
<td> Default to direct dispatch from ithreads </td>
<td> &a.rwatson; </td>
<td> 28 November 2006 </td>
<td> &status.done; </td>
</tr>
<!-- WIP -->
<tr>
@ -2318,22 +2336,16 @@
</tr>
<tr>
<td> Lock down netnatm. </td>
<td> &a.rwatson; </td>
<td> 01 July 2005 </td>
<td> &status.wip; </td>
<tr>
<td> Research and select options for inbound network stack parallelism. Direct dispatch is one option currently being considered. </td>
<td> &a.rwatson; </td>
<td> Locking for polling(4). </td>
<td> &a.pjd;, &a.glebius; </td>
<td> 19 October 2005 </td>
<td> &status.wip; </td>
</tr>
<tr>
<td> Locking for polling(4). </td>
<td> &a.pjd;, &a.glebius; </td>
<td> 19 October 2005 </td>
<td> BPF locking needs some cleanup, there are some race conditions there relating to interface removal. </td>
<td> &a.csjp; </td>
<td> 2 June 2006 </td>
<td> &status.wip; </td>
</tr>
@ -2403,13 +2415,6 @@
<td> &status.new; </td>
</tr>
<tr>
<td> BPF locking needs some cleanup, there are some race conditions there relating to interface removal. </td>
<td> &nbsp; </td>
<td> 19 October 2005 </td>
<td> &status.new; </td>
</tr>
<tr>
<td> When interfaces are torn down, there are a number of races (not all associated with SMPng) that need to be thought about. </td>
<td> &nbsp; </td>