Overview


Many I/O intensive applications such as multimedia client, file servers, host based IP routers often move large amounts of data between devices, and therefore place high I/O demands on both the host operating system and the underlying I/O subsystem. Although technology trends point to continued increases in link bandwidth, processor speed, and disk capacity the lagging performance improvements and scalability of I/O busses is increasingly becoming apparent for I/O intensive applications. This performance gap exists because recent improvements in workstation performance have not been balanced by similar improvements in I/O performance. The exponential growth of processor speed relative to the rest of the I/O system, though, presents the opportunity for application-specific processing to occur directly on intelligent I/O devices.

We are working to move application-specific functionality directly onto the network interface, and thereby reduce I/O related data and control transfers to the host system to improve overall system performance.  Our approach is empirical: we take a monolithic application and migrate its I/O specific functionality into a number of device extensions. An extension is code that is logically part of the application, but runs directly on the network interface. At the next level, we are defining the operating systems interfaces that enable applications to compute directly on an intelligent network interface.

SPINE offers developers a software architecture for the following three features that are key to efficiently implement I/O intensive applications:

  • Device-to-device transfers. By avoiding extra copies of data, we can significantly reduce bandwidth requirements in and out of host memory as well as halving bandwidth over a shared bus, such as PCI. Additionally, intelligent devices can avoid unnecessary control transfers to the host system as they can process the data before transferring it to a peer device.
  • Host/Device protocol partitioning. Low-level protocol support for application-specific multicast, packet filtering and quality of service  has shown to significantly improve system performance.
  • Device-level memory management. An important performance aspect of a network system is the ability to transfer directly between the network interface and the application buffers.

For more information please visit our reports, talks and papers webpage, or visit our example application webpage.


Marc E. Fiuczynski
mef@cs.washington.edu
Department of Computer Science and Engineering
University of Washington