EV12

qin Zhanhai (qinzhan_hai@hotmail.com)
Tue, 16 May 2000 11:06:39 GMT

________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
=================================================================
Implementing Remote Procedure Calls
=================================================================

The paper presents a remote procedure call package which is going
to facilitate the programming of distributed computations. The
main purpose of the work is to encourage the stand-alone work-
station programmers to take advantage of distributed computations
via remote procedure calls. So their intuition is to emulate the
semantics of local procedure calls. Of course efficiency, powerful
semantics and security of the RPC package are also some important
aims.

The paper explains the program structure based on the concept of
"stubs". When making a remote call, six pieces of program are
involved: the user, the user-stub, user-RPCRuntime, server-RPCRun-
time, server-stub, server.

And then the paper explains "how does a client of the binding
mechanism specify what he wants to be bound to?" and "how does a
caller determine the machine address of the callee and specify to
the callee the procedure to be invoked?". Hense "type" and "instan-
ce" are introduced and they are the entries of "group" and "indivi-
dual" in Grapevine databases, respectively.

Finally it discusses some optimizations in the transport protocol
specially for RPC. They use subsequent packets for implicit ack-
knowledgment of previous packets, they attemp to minimize the costs
of maintaining their connections, they avoid costs of establishing
and terminating connections, and they reduce the number of process
switches involved in a call.

>From the paper I got some hints on how to judge the trade-off between
two alternatives for the specific projects/aims and how to organize
the arguments. I also learned how to come up with some tricks for
optimizations.

The paper was clearly written and very easy to follow. It's a
great project report from some point of view.

=================================================================
Lightweight Remote Procedure Call
=================================================================

LRPC was designed to alleviate the heavy overhead of RPC for higher
performance without lose of protections among domains on the same
machine. LRPC introduced "simple control transfer", "simple data
transfer", "simple stubs", "design for concurrency" to achieve the
goals.

The paper first investigated the frequency of cross-machine-boundary
calls and concluded that only a very small fraction of RPCs are
truly remote and parameter size is generally small and fixed for
non-RPCs. It also showed the disappointing performance of cross-
machine-boundary calls due to heavy overheads, offering motivation
for the LRPCs.

Two main features of LRPC are binding and calling. LRPC binding
concepts are borrowed from RPC, and LRPC calling concepts are
borrowed from protected procedure call(kernel trap). And the paper
also introduced the application of LRPC on multiprocessor archi-
tectures. LRPC reduces context-switch overhead by caching domains
on idle processers and increases throughput by minimizing the use
of shared data structures on the critical domain transfer path.
The optimization also includes the tricks on argument copying.

To achieve good performance on cross-domain proceures by avoiding
needless scheduling, excessive run-time indirection, unnecessary
access validation, redundant copying,a nd lock contention.