System architectures based on functionality offloading

Offloading to hardware components that support the primary task of a system enables separation of concerns and allows both the primary and offloaded components of a system to be easy to understand, manage, and evolve independent of other components. In this dissertation, we explore the software mechanisms required to effectively offload functionality to idle processing elements. We present the design, implementation, and evaluation of three system architectures—TCPServers, Orion, and FileWall, which offload functionality for improving performance (TCPServers), improving availability (Orion), and for extending functionality (FileWall). We explore software mechanisms to offload functionality to a subset of processors in an Symmetric Multiprocessor (SMP) system, a programmable network interface, and an interposing network middlebox to realize the three system architectures. TCPServers is a system architecture that offloads network processing to a subset of processors in an SMP system. Network processing imposes direct and indirect overheads on server systems. It directly affects system performance since it executes at a higher priority than application tasks and prevents other components of the system from executing simultaneously on the processors. It indirectly affects performance by causing cache pollution and Translation Lookaside Buffer (TLB) flushes, which lead to degraded memory system performance. Through offloading, TCPServers isolates the network processing and eliminates the direct overheads. We also present mechanisms for increasing network stack concurrency and connection scheduling, which significantly improve the performance in a multi-threaded network stack. Orion is a system architecture that enables Remote Healing, where the monitoring and healing actions are performed externally, by offloading such functionality to external hardware. Fine grained monitoring of computer systems for performance anomalies, intrusion detection, and failure detection imposes significant overhead on the target system. Performance critical systems, where such fine grained monitoring is essential, cannot be subjected to these overheads. Orion offloads the healing functionality to a programmable network interface, which provides an alternate path to the memory of the target system. Using Orion, monitoring and healing actions can be performed nonintrusively, without involving the processors of the target system. We present the design and implementation of mechanisms for remote monitoring and remote repair of damaged OS state using Orion. FileWall is a system architecture that enables extension of network file system functionality. Network file system evolution is constrained by the tight binding between clients and servers. This binding limits the evolution of file system protocols and hinders deployment of file system or protocol extensions. For example, current network file systems have limited support for implementing file access policies. We propose message transformation as a mechanism to separate the client and server systems for protocol enhancement. FileWall offloads message transformation and policy enforcement to an interposing network element on the client-server path. We have used FileWall to implement file access policies and present experimental results showing policy enforcement at FileWall imposes minimal overheads on the base file system protocol. The main conclusion of our research is that system architectures based on functionality offloading can be realized simply and effectively through efficient software mechanisms, using only commodity off the shelf hardware. With the availability of resources at idle processing cores in a multiprocessor system, intelligent peripherals, and unused nodes in a cluster, offloading is a practical solution for improving performance and introducing new functionality in computer systems and networks.