Additional tasks relating to the netperf work: critical sections for

per-CPU UMA caches, critical section optimizations.
This commit is contained in:
Robert Watson 2004-11-11 22:46:53 +00:00
parent 9d2a62b399
commit 946b6e3e4c
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/www/; revision=22924

View file

@ -1,6 +1,6 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" [
<!ENTITY base CDATA "../..">
<!ENTITY date "$FreeBSD$">
<!ENTITY date "$FreeBSD: www/en/projects/netperf/index.sgml,v 1.1 2004/11/11 22:21:42 rwatson Exp $">
<!ENTITY title "FreeBSD Network Performance Project (netperf)">
<!ENTITY email 'mux'>
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
@ -175,6 +175,45 @@
ether_input_mbufqueue. </td>
</tr>
<tr>
<td> Modify UMA allocator to use critical sections not mutexes for
per-CPU caches. </td>
<td> &a.rwatson; </td>
<td> 20041111 </td>
<td> &status.wip; </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
CPU pinning and/or critical sections instead. A prototype of this
has been implemented in the rwatson_percpu branch, but is waiting
on critical section performance optimizations that will prevent
this change from negatively impacting uniprocessor performance.
</td>
</tr>
<tr>
<td> Optimize critical section performance </td>
<td> &a.jhb; </td>
<td> 20041111 </td>
<td> &status.wip; </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
well as preventing recursion in interrupt processing. Currently,
critical sections disable interrupts on the CPU. In previous
versions of FreeBSD (4.x and before), optimizations were present
that allowed for software interrupt disabling, which lowers the
cost of critical sections in the common case by avoiding expensive
microcode operations on the CPU. By restoring this model, or a
variation on it, critical sections can be made substantially
cheaper to enter. In particular, this change will lower the cost
of critical sections on UP such that it is approximately the same
cost as a mutex, meaning that optimizations on SMP to use critical
sections instead of mutexes will not harm UP performance. A
prototype of this change is present in the jhb_lock Perforce
branch. </td>
</tr>
</table>
<a name="links"></a>