Lightweight Remote Procedure Call (LRPC)

Notes by Walter Bell, March 1999. Previous notes by Kevin LoGuidice, March 1998

Introduction

RPC has proven to be a powerful paradigm, giving symantics of a normal procedure call. Although originally designed for machine-to-machine communication, most cross-address-invocations take place between domains within the same machine and not between computers as one might expect in client-server systems. As result, the conventional RPC communication mechanism incurs unnecessary overhead including needless scheduling, excessive run-time indirection, redundant copying, lock contention and unnecessary access validation.  They claim that this lightweight approach can be implemented in an RPC package as a special case without removing any of the transparency of the RPC system or making uncommon cases (domain termination, large argument sizes, etc) difficult to handle.

 Goal

A lightweight, fast communication facility for cross-address-space invocation based on the idea that most RPC calls are simple (small, simple arguments rather than large byte-streams and linked structures.)

 Benefits

Conventional RPC Overhead

RPC systems are built for the general case of machine-to-machine communications; in the cross-domain case this generality is unneeded and incurs a substantial overhead that cannot be optimized for the common path

Lightweight Approach

Binding

From the high level similar to that of conventional RPC, but in the the guts is much different due to the interaction of the client, server and kernel

Call

High level of integration between Client, Kernel, and Server.

Client

Kernel

 Server

Additional

Performance

Questions