Modify set of stats to include "Prototyped" and "Merged to HEAD; RELENG_5

candidates".

Update if_start_mbufqueue task to mention also the if_start_mbuf
experimentation.

Add an item on socket reference count optimization that has been
completed.
This commit is contained in:
Robert Watson 2004-11-12 11:56:56 +00:00
parent d4510d8137
commit 0022879372
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/www/; revision=22930

View file

@ -1,14 +1,14 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" [
<!ENTITY base CDATA "../..">
<!ENTITY date "$FreeBSD: www/en/projects/netperf/index.sgml,v 1.2 2004/11/11 22:46:53 rwatson Exp $">
<!ENTITY date "$FreeBSD: www/en/projects/netperf/index.sgml,v 1.3 2004/11/12 11:48:29 rwatson Exp $">
<!ENTITY title "FreeBSD Network Performance Project (netperf)">
<!ENTITY email 'mux'>
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
<!ENTITY status.na "<font color=green>N/A</font>">
<!ENTITY status.done "<font color=green>Done</font>">
<!ENTITY status.wip "<font color=blue>In progress</font>">
<!ENTITY status.untested "<font color=yellow>Needs testing</font>">
<!ENTITY status.prototyped "<font color=blue>Prototyped</font>">
<!ENTITY status.head "<font color=yellow>Merged to HEAD; RELENG_5 candidate</font>">
<!ENTITY status.new "<font color=red>New task</font>">
<!ENTITY status.unknown "<font color=red>Unknown</font>">
@ -139,11 +139,30 @@
<th> Notes </th>
</tr>
<tr>
<td> Prefer file descriptor reference counts to socket reference
counts for system calls. </td>
<td> &a.rwatson; </td>
<td> 20041024 </td>
<td> &status.done; </td>
<td> Sockets and file descriptors both have reference counts in order
to prevent these objects from being free'd while in use. However,
if a file descriptor is used to reach the socket, the reference
counts are somewhat interchangeable, as either will prevent
undesired garbage collection. For socket system calls, overhead
can be reduced by relying on the file descriptor reference count,
thus avoiding the synchronized operations necessary to modify the
socket reference count, an approach also taken in the VFS code.
This change has been made for most socket system calls, and has
been committed to HEAD (6.x). It will be merged to 5.x in the
near future. </td>
</tr>
<tr>
<td> Mbuf queue library </td>
<td> &a.rwatson; </td>
<td> 20041106 </td>
<td> &status.wip; </td>
<td> &status.prototyped; </td>
<td> In order to facilitate passing off queues of packets between
network stack components, create an mbuf queue primitive, struct
mbufqueue. The initial implementation is complete, and the
@ -157,12 +176,15 @@
<td> Employ queued dispatch in interface send API </td>
<td> &a.rwatson; </td>
<td> 20041106 </td>
<td> &status.wip; </td>
<td> &status.prototyped; </td>
<td> An experimental if_start_mbufqueue() interface to struct ifnet
has been added, which passes an mbuf queue to the device driver for
processing, avoiding redundant synchronization against the
interface queue, even in the event that additional queueing is
required. This has not yet been benchmarked. </td>
required. This has not yet been benchmarked. A subset change to
dispatch a single mbuf to a driver has also been prototyped, and
bencharked at a several percentage point improvement in packet send
rates from user space.</td>
</tr>
<tr>
@ -180,7 +202,7 @@
per-CPU caches. </td>
<td> &a.rwatson; </td>
<td> 20041111 </td>
<td> &status.wip; </td>
<td> &status.prototyped; </td>
<td> The mutexes protecting per-CPU caches require atomic operations
on SMP systems; as they are per-CPU objects, the cost of
synchronizing access to the caches can be reduced by combining
@ -195,7 +217,7 @@
<td> Optimize critical section performance </td>
<td> &a.jhb; </td>
<td> 20041111 </td>
<td> &status.wip; </td>
<td> &status.prototyped; </td>
<td> Critical sections prevent preemption of a thread on a CPU, as
well as preventing migration of that thread to another CPU, and
maybe used for synchronizing access to per-CPU data structures, as