remote procedure calls - cornell university · remote procedure calls implementing remote procedure...
TRANSCRIPT
![Page 1: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/1.jpg)
Remote Procedure Calls
Implementing Remote Procedure CallsAndrew D. Birrell, Bruce Jay Nelson
Lightweight Remote Procedure CallBrian Bershad, Tom Anderson, Ed Lazowska, Hank Levy
Presented by Mark Reitblatt
1
![Page 2: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/2.jpg)
Implementing Remote Procedure Calls
• ACM System Software Award
• Andrew Birrell
• Xerox PARC, DEC, MSR (current)
• Bruce Jay Nelson
• CMU PhD, Xerox PARC, Cisco
2
![Page 3: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/3.jpg)
RPC
• How do we program distributed systems?
• What’s the fundamental abstraction?
• Message passing
• Shared memory
• Fork-Join
3
![Page 4: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/4.jpg)
RPC Goals
• Clean, simple programming model
• Transparent distribution
• Late binding
• Decide distribution at runtime
• Efficiency
• Generality
4
![Page 5: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/5.jpg)
Procedures
for each file in filesdoprint file.read()
od
<File>...<read()>......return
•Simple•Well understood•Easy-to-use•Common
5
![Page 6: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/6.jpg)
Distributed Application
for each file in filesdoprint file.read()
od
<File>...<read()>......return
6
![Page 7: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/7.jpg)
Distributed Application
for each file in filesdoprint file.read()
od
<File>...<read()>......return
Just distribute the procedure to another machine
7
![Page 8: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/8.jpg)
Distributed Application
for each file in filesdoprint file.read()
od
<File>...<read()>......return
But there’s no cross-machine “jmp”
Need to deal with the network now
8
![Page 9: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/9.jpg)
RPC
• Mechanism exposes stub procedure entry point
• Stub transforms call into packets
• RPC Runtime finds server, sends call
• Reverse process on server
9
![Page 10: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/10.jpg)
Stub
Client
Client Runtime
Server Runtime
Stub
Server
for each file in filesdoprint file.read()
od
<File>...<read()>......return
read() read()
10
![Page 11: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/11.jpg)
Stubs
• Intercept procedure call
• Serialize arguments
• Automatically generated
• Advantage of high-level language
11
![Page 12: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/12.jpg)
Runtime
• Handles transmission to/from server
• Shared across different stubs
• End-to-end principle?
12
![Page 13: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/13.jpg)
Simple?
• Remote calls aren’t local calls
• Pass-by-reference?
• Network related exceptions
• Out-of-memory exception?
• Call-backs?
13
![Page 14: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/14.jpg)
Binding
• How to match signatures to instances
• Signature: FileAccess.Alpine
• Instance: Ebbets.Alpine
• Where is the instance?
• Ebbets.Alpine -> 3#22#
• Is this still transparent?
14
![Page 15: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/15.jpg)
Lightweight Remote Procedure Call
• Brian Bershad
• UW PhD, CMU Prof, SPIN, returned to UW
• Tom Anderson
• UW PhD, Berkeley Prof, returned to UW
• Ed Lazowska
• UW Prof
• Hank Levy
• UW Prof
15
![Page 16: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/16.jpg)
LRPC
• Enter μ-kernels:
• Split into separate address spaces (protection domains)
• RPC common interface
• “Remote” across domains on single machine
• Deals with disjoint address spaces
16
![Page 17: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/17.jpg)
LRPC (Cont.)
• Cross-domain RPC expensive
• Forces functionality into single domains for performance
• Defeats purpose of μ-kernel
17
![Page 18: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/18.jpg)
Make the common case fast
• Cross-domain RPC
• 100-30x more common
• Tends to be simple
• Few, small parameters
18
![Page 19: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/19.jpg)
Why is the common case slow
• Stub overhead
• Message buffer overhead
• Double buffer
• Message transfer
• Context switch
19
![Page 20: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/20.jpg)
LRPC Solution
• Essentially a bunch of hacks that “work”
• Remap argument stack into server domain
• Client provides thread for execution
• Domain caching
• Single arg copying into A stack
20
![Page 21: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/21.jpg)
Performance
21
![Page 22: Remote Procedure Calls - Cornell University · Remote Procedure Calls Implementing Remote Procedure Calls Andrew D. Birrell, Bruce Jay Nelson Lightweight Remote Procedure Call Brian](https://reader030.vdocuments.net/reader030/viewer/2022040211/5e751f5a4867301515283882/html5/thumbnails/22.jpg)
Performance Cont.
22