Throughput of streaming I/O applications depends in large part on
efficiency of data transfer between devices, kernel and applications.
Such communication always crosscuts the traditional OS layering
shown in Figure 2.2Layered Operating System Architecture , where it can
introduce significant cost in the form of
task switches, kernel mode switches, cache and TLB misses, interrupts and
page faults (to name only the most important). The actual bottlenecks
depend on computer system details, which vary from one machine to another:
systems are increasingly diverse, heterogeneous, parallel and
memory constrained, we argue in Appendix AComputer System Evolution.
Before looking into specific cost saving opportunities,
we observe where layered I/O leaves room for improvement.
We present six common situations that witness avoidable transport cost. All
are present in Linux at least up to version 2.6.30, but they are not necessarily
limited to that OS.
In each case, we identify specific cost saving opportunities.
Afterward, we extract the root causes and identify
opportunities for improvement.
Figure 2.2:
Layered Operating System Architecture
|
![\includegraphics[width=0.6\linewidth]{figpriv/newtriarch.eps}](img12.png) |
false
Encountered obstructions are not even necessarily due
primarily to physical limitations: boundaries may be reached
because of how software unduly stresses components. What
is an insignificant burden on one machine not worthy of
optimization, can prove to be the
major cause of delay on others - as the memory wall demonstrates.
Subsections
willem
2010-02-03