Using Annotated Interface Definitions to Optimize RPC
Bryan Ford Mike Hibler Jay Lepreau
University of Utah
Technical Report UUCS-95-014
March, 1995
Abstract
In RPC-based communication, it is useful to distinguish the RPC
interface, which is the "network contract" between the client and
the server, from the presentation, which is the "programmer's
contract" between the RPC stubs and the code that calls or is called
by them. Presentation is usually a fixed function of the RPC
interface, but some RPC systems, such as DCE and Concert, support the
notion of a flexible presentation or endpoint modifier,
allowing controlled modification of the behavior of the stubs on each
side without affecting the contract between the client and the server.
Up until now, the primary motivation for flexible presentation has been for programmer convenience and improved interoperability. However, we have found flexible presentation also to be useful for optimization of RPC, and in many cases necessary to achieving maximal performance without throwing out the RPC system and resorting to hand-coded stubs. In this paper we provide examples demonstrating this point for a number of different operating systems and IPC transport mechanisms, with RPC performance improvements ranging from 5% to an order of magnitude. In general, we observe that the more efficient the underlying IPC transport mechanism is, the more important it is for the RPC system to support flexible presentation, in order to avoid unnecessary user-space overhead.
The 16 page full paper is also available.