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" [
|
||||
<!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>
|
||||
|
|
Loading…
Reference in a new issue