diff --git a/en/projects/netperf/index.sgml b/en/projects/netperf/index.sgml index 0e25d604fe..133a06b0df 100644 --- a/en/projects/netperf/index.sgml +++ b/en/projects/netperf/index.sgml @@ -1,14 +1,14 @@ - + %includes; N/A"> Done"> -In progress"> -Needs testing"> +Prototyped"> +Merged to HEAD; RELENG_5 candidate"> New task"> Unknown"> @@ -139,11 +139,30 @@ Notes + + Prefer file descriptor reference counts to socket reference + counts for system calls. + &a.rwatson; + 20041024 + &status.done; + 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. + + Mbuf queue library &a.rwatson; 20041106 - &status.wip; + &status.prototyped; 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 @@ Employ queued dispatch in interface send API &a.rwatson; 20041106 - &status.wip; + &status.prototyped; 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. + 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. @@ -180,7 +202,7 @@ per-CPU caches. &a.rwatson; 20041111 - &status.wip; + &status.prototyped; 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 @@ Optimize critical section performance &a.jhb; 20041111 - &status.wip; + &status.prototyped; 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