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:
parent
d4510d8137
commit
0022879372
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/www/; revision=22930
1 changed files with 30 additions and 8 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue