Analysing RPC and Testing the Performance of Solutions

Sandor Kiraly, Szilveszter Szekely


In distributed computing, network sockets provide mechanism for a process to establish a remote connection to another process and send messages back and forth. This interface makes possible a proper mechanism that allows a program running as a process on computer A to call a procedure or a function on remote computer B and pass parameters to it. In the case of synchronous Remote Procedure Call (RPC), processes on computer A need to wait for the finishing of execution of procedures on computer B. When the called procedure finishes, produces its result and passes it to the process on computer A that can continue execution. The question is what happens between the time of the remote procedure call and arrival of the returned values and how much the caller must wait for result. To answer that question, this paper describes the structure of third generation RPCs and analyses them putting the focus on performance and the way of marshalling parameters. To facilitate the choice between them this paper represents the results of performance tests carried out by the authors

Full Text:



Andrew D. Birrell and Bruce Jay Nelson (1984). Implementing Remote Procedure Calls. ACM Transactions on Computer Systems, Vol. 2, No. 1, February 1984, Pages 39-59

Andrew S. Tanenbaum, Robbert van Renesse (1988). A Critique of the Remote Procedure Call Paradigm.

Available at

Andrew S. Tanenbaum, Maarten van Steen (2016). Distributed Systems: Principles and Paradigms. Pearson Education Inc. ISBN:978-15-302817-5-6

Andrew D. Birrell (1985). Secure Communication Using Remote Procedure Calls. ACM Transactions on Computer Systems, Vol. 3, No. 1, February 1985, Pages


Paul Krzyzanowski (2012). Remote Procedure Calls Available at

Michael D. Schroeder and Michael Burrows1 (2006). Performance of Firefly RPC.

Hakan Bagci and Ahmet Kara (2016). A Lightweight and High Performance Remote Procedure Call Framework for Cross Platform Communication. ICSOFT-EA 2016 Abstracts. Available at:

What is gRPC? Available at

Protocol Buffers. Available at

XML-RPC for C and C++. Available at

Apache XML-RPC. Available at

XML-RPC for Ruby. Available at

JSON-RPC 2.0. Essential Java libraries and tools for JSON-RPC 2.0development. Available at

JSON-RPC 2.0. Available at

JSON-RPC 2.0. for Ruby. Available at


Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 License.