Additional tasks relating to the netperf work: critical sections for
per-CPU UMA caches, critical section optimizations.
This commit is contained in:
parent
9d2a62b399
commit
946b6e3e4c
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/www/; revision=22924
1 changed files with 40 additions and 1 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$">
|
<!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 title "FreeBSD Network Performance Project (netperf)">
|
||||||
<!ENTITY email 'mux'>
|
<!ENTITY email 'mux'>
|
||||||
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
|
<!ENTITY % includes SYSTEM "../../includes.sgml"> %includes;
|
||||||
|
|
@ -175,6 +175,45 @@
|
||||||
ether_input_mbufqueue. </td>
|
ether_input_mbufqueue. </td>
|
||||||
</tr>
|
</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>
|
</table>
|
||||||
|
|
||||||
<a name="links"></a>
|
<a name="links"></a>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue