title: What is the point of LRPC? Why would anyone want to make Remote Procedure Calls to the same machine?
body: <p>From what I understand about RPC (Remote Procedure Calls), is that they provide a way to send function calls, invocations, etc to remote machines. The obvious advantage of this is that you can have a single program that runs on a cluster of machines and can handle more requests, more data, on so on.</p>
  <p>But I'm puzzled by <a href="http://www.cs.virginia.edu/%7Ezaher/classes/CS656/bershad.pdf" rel="noreferrer">LRPC - <strong>Lightweight RPC</strong></a>.
  Apparently this stuff exists to speed up RPC on the same machine. As written in the paper <a href="http://www.cs.virginia.edu/%7Ezaher/classes/CS656/bershad.pdf" rel="noreferrer">I linked to</a>:</p>
  <blockquote>
  <p>Lightweight Remote Procedure Call (LRPC) is a communication facility
  designed and optimized for communication between protection domains on
  the same machine. In contemporary small-kernel operating systems,
  existing RPC systems incur an unnecessarily high cost when used for
  the type of communication that predominates-between protection domains
  on the same machine. This cost leads system designers to coalesce
  weakly related subsystems into the same protection domain, trading
  safety for performance. By reducing the overhead of same-machine
  communication, LRPC encourages both safety and performance.</p>
  </blockquote>
  <p>My question is: what is the point of RPC if you're running everything o nthe same computer. The <strong>R</strong> stands for <strong>REMOTE.</strong> If you're not gonna be Remote, then just call it LPC. What am I missing?</p>