The lightweight remote procedure call (LRPC) facility was designed and optimized for intermachine communication. LRPC exploits the fact that the common case of same-machine communication passing small, simple arguments can have significantly better performance than a more general remote procedure call (RPC) mechanism. In RPC, local communication is treated as an instance of remote communication, and simple operations are treated similarly to more complex operations. This aspect of RPC violates a basic tenet of system design by failing to isolate and optimize performance for the common case.
Four techniques used in LRPC to improve the performance of RPC systems are described: simplified control transfer, simplified data transfer using sharing techniques, optimized stubs, and optimizations for multiprocessors. Each of these techniques is explained in the context of an implementation on the C-VAX Firefly workstation. Performance measurements and comparisons examine where time is being spent in the implementation and how the optimizations affect performance. Perhaps even more important, the authors carefully consider the effects on LRPC of a number of uncommon cases. LRPC has to accommodate the uncommon cases gracefully and with acceptable performance.
This paper is the result of state-of-the-art research into the form and structure of remote procedure call systems. It is intended for readers with a background in operating systems and programming languages and for people actively researching this area. The paper indisputably presents original and thoughtful insights on the issues. A possible weakness is in Section 2.1, where the paper uses a personal communication for a reference. The basic point of the section is well taken, however, and most of the background references can be located in the published literature.