CSE 221 Paper Evaluation

Greg Johnson (johnson@SDSC.EDU)
Wed, 17 May 2000 21:34:17 -0700 (PDT)

B. Bershad, T. Anderson, E. Lazowska, et al., 1989.

LRPC is a communication mechanism optimized for crossing protection domains
in small kernel operating systems, locally. The lack of an efficient cross-
domain calling system has encouraged developers to lump several subsystems
into a single domain. As an alternative, LRPC achieves speed and safety by
combining components of a capability-based model (communication and transfer
of control) with components of standard RPC (semantics and protection).

LRPC, like the V kernel is optimized for simple exchanges. The authors
show, by way of measuring the day-to-day activities of three OSes, that
local RPCs involving short sets of parameters is the common case (by far).
Further, the authors show that this type of exchange in contemporary OSes
is relatively expensive, and specifically why. The seven reasons they
identify form the basis of the optimizations designed into LRPC.

Several LRPC optimizations rely on the characteristics of shared-memory
multiprocessor systems. One of these I found particularly unique (though
the authors don't claim ownership) involves caching domain context on idle
processors. Doing so reduces the cost of a context switch by allowing the
transfer of a thread to a processor in which state for the desired domain
is already present.

Another set of LRPC optimizations focus on minimizing copies of arguments
during a given RPC. With standard RPC, arguments may be copied four times
per call (client stack to RPC message, client to kernel, kernel to server,
RPC message to server stack). A special feature of LRPC - "argument stacks"
- reduces this count to at most two copies (client stack to A-stack, and
where argument values must be checked against type definitions, copy from
A-stack to server stack).

The punchline of the paper is of course a demonstration of the performance
advantage of LRPC over standard RPC (about a 3 x speedup).

Greg Johnson office: (858) 534-8367
Senior Programmer Analyst fax: (858) 534-5152
San Diego Supercomputer Center email: johnson@sdsc.edu
University of California San Diego