|
Extensive research on system support for enabling
I/O-intensive applications to achieve performance close to the
limits imposed by the hardware suggests two main approaches:
Low overhead I/O protocols and the flexibility to customize
I/O policies to the needs of applications. One way to achieve
both is by supporting user-level access to I/O devices, enabling
user-level implementations of I/O protocols. User-level networking
is an example of this approach, specific to network interface
controllers (NICs). In this paper, we argue that the real key to
high-performance in I/O-intensive applications is user-level file
caching and user-level network buffering, both of which can be
achieved without user-level access to NICs.
Avoiding the need to support user-level networking carries
two important benefits for overall system design: First, a NIC
exporting a privileged kernel interface is simpler to design and
implement than one exporting a user-level interface. Second, the
kernel is re-instated as a global system resource controller and
arbitrator. We develop an analytical model of network storage
applications and use it to show that their performance is not
affected by the use of a kernel-based API to NICs.
|