Update status of various netperf-related activities. Some changes were
merged to RELENG_5, prototypes enhanced, patches posted for review, etc.
This commit is contained in:
parent
78f2e528d0
commit
4133897c7d
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/www/; revision=23015
1 changed files with 22 additions and 17 deletions
|
@ -1,6 +1,6 @@
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" [
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" [
|
||||||
<!ENTITY base CDATA "../..">
|
<!ENTITY base CDATA "../..">
|
||||||
<!ENTITY date "$FreeBSD: www/en/projects/netperf/index.sgml,v 1.7 2004/11/13 13:54:58 rwatson Exp $">
|
<!ENTITY date "$FreeBSD: www/en/projects/netperf/index.sgml,v 1.8 2004/11/15 10:22:39 rwatson Exp $">
|
||||||
<!ENTITY title "FreeBSD Network Performance Project (netperf)">
|
<!ENTITY title "FreeBSD Network Performance Project (netperf)">
|
||||||
<!ENTITY email 'mux'>
|
<!ENTITY email 'mux'>
|
||||||
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
|
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
|
||||||
|
@ -144,7 +144,7 @@
|
||||||
<td> Prefer file descriptor reference counts to socket reference
|
<td> Prefer file descriptor reference counts to socket reference
|
||||||
counts for system calls. </td>
|
counts for system calls. </td>
|
||||||
<td> &a.rwatson; </td>
|
<td> &a.rwatson; </td>
|
||||||
<td> 20041024 </td>
|
<td> 20041124 </td>
|
||||||
<td> &status.done; </td>
|
<td> &status.done; </td>
|
||||||
<td> Sockets and file descriptors both have reference counts in order
|
<td> Sockets and file descriptors both have reference counts in order
|
||||||
to prevent these objects from being free'd while in use. However,
|
to prevent these objects from being free'd while in use. However,
|
||||||
|
@ -155,14 +155,14 @@
|
||||||
thus avoiding the synchronized operations necessary to modify the
|
thus avoiding the synchronized operations necessary to modify the
|
||||||
socket reference count, an approach also taken in the VFS code.
|
socket reference count, an approach also taken in the VFS code.
|
||||||
This change has been made for most socket system calls, and has
|
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
|
been committed to HEAD (6.x). It has also been merged to RELENG_5
|
||||||
near future. </td>
|
for inclusion in 5.4.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td> Mbuf queue library </td>
|
<td> Mbuf queue library </td>
|
||||||
<td> &a.rwatson; </td>
|
<td> &a.rwatson; </td>
|
||||||
<td> 20041106 </td>
|
<td> 20041124 </td>
|
||||||
<td> &status.prototyped; </td>
|
<td> &status.prototyped; </td>
|
||||||
<td> In order to facilitate passing off queues of packets between
|
<td> In order to facilitate passing off queues of packets between
|
||||||
network stack components, create an mbuf queue primitive, struct
|
network stack components, create an mbuf queue primitive, struct
|
||||||
|
@ -170,7 +170,9 @@
|
||||||
primitive is now being applied in several sample cases to determine
|
primitive is now being applied in several sample cases to determine
|
||||||
whether it offers the desired semantics and benefits. The
|
whether it offers the desired semantics and benefits. The
|
||||||
implementation can be found in the rwatson_dispatch Perforce
|
implementation can be found in the rwatson_dispatch Perforce
|
||||||
branch.</td>
|
branch. Additional work must also be done to explore the
|
||||||
|
performance impact of "queues" vs arrays of mbuf pointers, which
|
||||||
|
are likely to behave better from a caching perspective. </td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -185,7 +187,7 @@
|
||||||
required. This has not yet been benchmarked. A subset change to
|
required. This has not yet been benchmarked. A subset change to
|
||||||
dispatch a single mbuf to a driver has also been prototyped, and
|
dispatch a single mbuf to a driver has also been prototyped, and
|
||||||
bencharked at a several percentage point improvement in packet send
|
bencharked at a several percentage point improvement in packet send
|
||||||
rates from user space.</td>
|
rates from user space. </td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -201,19 +203,20 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td> Employ queued dispatch across netisr dispatch API </td>
|
<td> Employ queued dispatch across netisr dispatch API </td>
|
||||||
<td> &a.rwatson; </td>
|
<td> &a.rwatson; </td>
|
||||||
<td> 20041113 </td>
|
<td> 20041124 </td>
|
||||||
<td> &status.new; </td>
|
<td> &status.prototyped; </td>
|
||||||
<td> Similar to if_start_mbufqueue(), allow dispatch of queues of
|
<td> Pull all of the mbufs in the netisr ifqueue out of the ifqueue
|
||||||
mbufs into the netisr interface, avoiding multiple wakeups when a
|
into a thread-local mbuf queue to avoid repeated lock operations
|
||||||
netisr thread is already in execution. Wakeups are expensive
|
to access the queue. Also use lock-free operations to test for
|
||||||
operations even when there are no threads waiting. </td>
|
queue contents being present. This has been prototyped in the
|
||||||
|
rwatson_netperf branch. </td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td> Modify UMA allocator to use critical sections not mutexes for
|
<td> Modify UMA allocator to use critical sections not mutexes for
|
||||||
per-CPU caches. </td>
|
per-CPU caches. </td>
|
||||||
<td> &a.rwatson; </td>
|
<td> &a.rwatson; </td>
|
||||||
<td> 20041111 </td>
|
<td> 20041124 </td>
|
||||||
<td> &status.prototyped; </td>
|
<td> &status.prototyped; </td>
|
||||||
<td> The mutexes protecting per-CPU caches require atomic operations
|
<td> The mutexes protecting per-CPU caches require atomic operations
|
||||||
on SMP systems; as they are per-CPU objects, the cost of
|
on SMP systems; as they are per-CPU objects, the cost of
|
||||||
|
@ -222,13 +225,14 @@
|
||||||
has been implemented in the rwatson_percpu branch, but is waiting
|
has been implemented in the rwatson_percpu branch, but is waiting
|
||||||
on critical section performance optimizations that will prevent
|
on critical section performance optimizations that will prevent
|
||||||
this change from negatively impacting uniprocessor performance.
|
this change from negatively impacting uniprocessor performance.
|
||||||
</td>
|
The critical section operations from John Baldwin have been posted
|
||||||
|
for public review. </td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td> Optimize critical section performance </td>
|
<td> Optimize critical section performance </td>
|
||||||
<td> &a.jhb; </td>
|
<td> &a.jhb; </td>
|
||||||
<td> 20041111 </td>
|
<td> 20041124 </td>
|
||||||
<td> &status.prototyped; </td>
|
<td> &status.prototyped; </td>
|
||||||
<td> Critical sections prevent preemption of a thread on a CPU, as
|
<td> Critical sections prevent preemption of a thread on a CPU, as
|
||||||
well as preventing migration of that thread to another CPU, and
|
well as preventing migration of that thread to another CPU, and
|
||||||
|
@ -245,7 +249,8 @@
|
||||||
cost as a mutex, meaning that optimizations on SMP to use critical
|
cost as a mutex, meaning that optimizations on SMP to use critical
|
||||||
sections instead of mutexes will not harm UP performance. A
|
sections instead of mutexes will not harm UP performance. A
|
||||||
prototype of this change is present in the jhb_lock Perforce
|
prototype of this change is present in the jhb_lock Perforce
|
||||||
branch. </td>
|
branch, and patches have been posted to per-architecture mailing
|
||||||
|
lists for review. </td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
</table>
|
</table>
|
||||||
|
|
Loading…
Reference in a new issue