SlideShare uma empresa Scribd logo
1 de 3
Baixar para ler offline
Review of Two Papers on Performance of Remote
Procedure Calls: `Performance of Firefly RPC' and
`Lightweight Procedure Call'
Quentin Fennessy
qfennessy@gmail.com
Unpublished, originally written June 26, 1996
This review covers two papers that discuss performance problems and resolutions in remote
procedure calls (RPC). The first paper [1] is a detailed report on RPC performance on the
Firefly multiprocessor system and includes precise measurements of the latency in the
system RPC. The paper goes to great lengths to account for time spent in RPCs, breaking
them down to packet creation, send and receive and packet reception. The authors also
estimate the improvement if certain proposed improvements were made. The second
paper [2] is a report on an highly optimized pseudo-RPC called LRPC (Lightweight RPC) as
implemented on Taos (an operating system also on the Firefly). Lightweight RPC is used to
optimize performance for RPC calls that do not cross machine boundaries and do not have
large or complicated data structures.
These two papers describe two approaches to the same problem. The problem is RPC
performance optimization. Firefly RPC (in [1] is traditional RPC with stub compilation in a
high level language. The RPCs in Firefly handle arbitrarily complex data structures and are
semantically consistent for both local and remote RPCs. Both Firefly RPC and LRPC are
optimized -- that is, the implementation is not straightforward but sacrifices benefits such as
security and portability in the quest for high performance. LRPC (in [2]) is a more exotic
implementation -- RPC so highly optimized for common cases that it barely deserves the
name. LRPC does not handle inter-machine communication and will only handle simple
data structures. The authors of [2] present a good case that most RPCs are actually local
calls with very simple data structure requirements.
The Firefly RPC paper [1] includes remarkably precise and detailed measurements of RPC
latency and throughput. It is very interesting to see both the fixed and variable delays
involved in process communication. The authors baselined their timing via null RPCs, and
compared those times to largest-packet-sized RPCs. Some timings were done by sending
10,000 packets and dividing elapsed time by 10,000, and some were done by counting
machine instructions involved and summing the times the instructions took (from a processor
reference manual). Not surprisingly a large part of the cost was variable and depended on
the size of the RPC packet (Ethernet latency, UDP checksum calculation and system bus
latency).
Some of the interesting aspects of the Firefly optimization were: the awakening of threads to
handle received packets from within interrupt routines and the sharing of address space
between all processes using RPC and the Ethernet driver. The authors admit that these
performance improvements `collapse layers of abstraction' and also admit to the security
implications of shared buffer space.
The Lightweight RPC paper [2] (also about the Firefly system running the TAOS operating
system) discusses a more radical RPC implementation. RPCs traditionally look like normal
function calls but are actually synchronous communication mechanisms with distinct
remote or local processes. The authors argue that simple and local RPCs deserve
optimization as they constitute the bulk of interprocess communication. Accordingly, they
have implemented LRPC (Lightweight RPC) with four new techniques. First the control
transfer between client and server is simplified. The client directly executes the requested
procedure in the server's space. Second, client and server share an argument stack. Third,
LRPC uses simple stubs that preclude sending complex data structures. Fourth and finally
LRPC avoids shared data structure bottlenecks and can take advantage of free processors
in the Firefly multiprocessor system.
These four techniques present interesting tradeoffs. Similar to [1] there are security
implications in the optimizations that involve shared data space between client and server.
These are handled in several ways. Client binding to servers is handled carefully. Clients
cannot communicate without objects that identify them to servers. Client calls are
rigorously checked before being mapped and executed in server space. RPC stubs are
generated in Firefly machine language. In the homogenous Firefly environment this is not
an issue. These stubs are up to four times faster than Modula2+ compiled stubs. LRPC stubs
are invoked directly by the Firefly kernel thus avoiding data copying or message checking
in user space. LRPC is optimized for multiprocessor use by avoiding shared data structures.
Shared argument stacks are locked individually and queuing on these stacks takes less than
2% of call time.
The first paper discusses optimization of traditional RPCs. These optimizations are easily
described but increase risk in execution and probably increase the difficulty of kernel code
maintenance in Firefly. Firefly RPC performance is compared with other distributed systems
such as Sprite, Amoeba, V, Cedar and UNIX. Although Firefly is the only VAX based system
absolute performance numbers are interesting to compare. Firefly RPC latency (at about
2.7ms/call) is within .2ms of the fastest RPC implementations (in V). Firefly RPC throughput
(at 4.6Mbit/sec) is above the median of the compared system but not quite as fast as that
in Sprite (at 5.6Mbit/sec).
The second paper optimizes Firefly RPCs for the simple cases -- local calls and simple data
structures. LRPC are demonstrably lightweight. Null LRPCs add only 48usec to minimum time
for each operation (for a total of 157usec). LRPC at 157usec compares very favorably with
the Firefly Null RPC at 464usec (3:1 difference!). Larger calls show almost the same ratio:
LRPC 200 byte calls at 227usec and Firefly RPC at 636usec. The multiprocessor optimizations
produce good linearity with respect to number of processors. Firefly RPC plateaus at two
processors while LRPC is linear at least to four processors.
These two papers agree in several areas on RPC optimization. Unfortunately, high-level
language implementations, nicely layered designs, clearly distinguished protection domains
and arbitrarily complex data structures are all sacrificed to the need for speed. RPC
optimization is critical in RPC acceptance as otherwise programmers will work around the
system. Fortunately, the dirty details of these optimizations can to a large degree be hidden
from programmers and users, thus allowing higher-level software engineering techniques in
user code.
Works Cited
[1] M. D. Schroeder and M. Burrows, "Performance of Firefly RPC," Transactions on
Computing Systems, vol. 8, no. 1, pp. 1-17, Feb 1990.
[2] B. N. Bershad, T. E. Anderson, E. D. Lazowska and H. M. Levy, "Lightweight Remote
Procedure Call," Transactions on Computing Systems, vol. 8, no. 1, pp. 37-55, Feb 1990.

Mais conteúdo relacionado

Destaque

Electrification of railway, problems and types of solution
Electrification of railway, problems and types of solutionElectrification of railway, problems and types of solution
Electrification of railway, problems and types of solutionRITESH WANJARI
 
C6.mi.p3.s4. integración del informe final
C6.mi.p3.s4. integración del informe finalC6.mi.p3.s4. integración del informe final
C6.mi.p3.s4. integración del informe finalMartín Ramírez
 
Día da paz 2017 CPI As Mirandas
Día  da paz 2017 CPI As MirandasDía  da paz 2017 CPI As Mirandas
Día da paz 2017 CPI As MirandasYolanda Castro
 
Analítica web, google analytics, sem y seo
Analítica web, google analytics, sem y seoAnalítica web, google analytics, sem y seo
Analítica web, google analytics, sem y seoEnma Chancusi
 
Cómo elaborar un plan de negocios
Cómo elaborar un plan de negociosCómo elaborar un plan de negocios
Cómo elaborar un plan de negociosLima Innova
 
Pasos a tener en cuenta con un joven inmigrante extremadura
Pasos a tener en cuenta con un joven inmigrante extremaduraPasos a tener en cuenta con un joven inmigrante extremadura
Pasos a tener en cuenta con un joven inmigrante extremaduraEmagister
 
Permiso de residencia
Permiso de residenciaPermiso de residencia
Permiso de residenciaEmagister
 
Tesis ucsm sistema_de_seguridad_en_redes_informaticas_basado_en_sw_libre
Tesis ucsm sistema_de_seguridad_en_redes_informaticas_basado_en_sw_libreTesis ucsm sistema_de_seguridad_en_redes_informaticas_basado_en_sw_libre
Tesis ucsm sistema_de_seguridad_en_redes_informaticas_basado_en_sw_libreLeidy Reyes Rodriguez
 

Destaque (10)

Electrification of railway, problems and types of solution
Electrification of railway, problems and types of solutionElectrification of railway, problems and types of solution
Electrification of railway, problems and types of solution
 
Family
FamilyFamily
Family
 
C6.mi.p3.s4. integración del informe final
C6.mi.p3.s4. integración del informe finalC6.mi.p3.s4. integración del informe final
C6.mi.p3.s4. integración del informe final
 
Día da paz 2017 CPI As Mirandas
Día  da paz 2017 CPI As MirandasDía  da paz 2017 CPI As Mirandas
Día da paz 2017 CPI As Mirandas
 
Time temperature-transformation diagram
Time temperature-transformation diagramTime temperature-transformation diagram
Time temperature-transformation diagram
 
Analítica web, google analytics, sem y seo
Analítica web, google analytics, sem y seoAnalítica web, google analytics, sem y seo
Analítica web, google analytics, sem y seo
 
Cómo elaborar un plan de negocios
Cómo elaborar un plan de negociosCómo elaborar un plan de negocios
Cómo elaborar un plan de negocios
 
Pasos a tener en cuenta con un joven inmigrante extremadura
Pasos a tener en cuenta con un joven inmigrante extremaduraPasos a tener en cuenta con un joven inmigrante extremadura
Pasos a tener en cuenta con un joven inmigrante extremadura
 
Permiso de residencia
Permiso de residenciaPermiso de residencia
Permiso de residencia
 
Tesis ucsm sistema_de_seguridad_en_redes_informaticas_basado_en_sw_libre
Tesis ucsm sistema_de_seguridad_en_redes_informaticas_basado_en_sw_libreTesis ucsm sistema_de_seguridad_en_redes_informaticas_basado_en_sw_libre
Tesis ucsm sistema_de_seguridad_en_redes_informaticas_basado_en_sw_libre
 

Último

Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonApplitools
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringHironori Washizaki
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingShane Coughlan
 

Último (20)

Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + KobitonLeveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
Leveraging AI for Mobile App Testing on Real Devices | Applitools + Kobiton
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full RecordingOpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
OpenChain Education Work Group Monthly Meeting - 2024-04-10 - Full Recording
 

Review of Two Papers on Performance of Remote Procedure Calls

  • 1. Review of Two Papers on Performance of Remote Procedure Calls: `Performance of Firefly RPC' and `Lightweight Procedure Call' Quentin Fennessy qfennessy@gmail.com Unpublished, originally written June 26, 1996 This review covers two papers that discuss performance problems and resolutions in remote procedure calls (RPC). The first paper [1] is a detailed report on RPC performance on the Firefly multiprocessor system and includes precise measurements of the latency in the system RPC. The paper goes to great lengths to account for time spent in RPCs, breaking them down to packet creation, send and receive and packet reception. The authors also estimate the improvement if certain proposed improvements were made. The second paper [2] is a report on an highly optimized pseudo-RPC called LRPC (Lightweight RPC) as implemented on Taos (an operating system also on the Firefly). Lightweight RPC is used to optimize performance for RPC calls that do not cross machine boundaries and do not have large or complicated data structures. These two papers describe two approaches to the same problem. The problem is RPC performance optimization. Firefly RPC (in [1] is traditional RPC with stub compilation in a high level language. The RPCs in Firefly handle arbitrarily complex data structures and are semantically consistent for both local and remote RPCs. Both Firefly RPC and LRPC are optimized -- that is, the implementation is not straightforward but sacrifices benefits such as security and portability in the quest for high performance. LRPC (in [2]) is a more exotic implementation -- RPC so highly optimized for common cases that it barely deserves the name. LRPC does not handle inter-machine communication and will only handle simple data structures. The authors of [2] present a good case that most RPCs are actually local calls with very simple data structure requirements. The Firefly RPC paper [1] includes remarkably precise and detailed measurements of RPC latency and throughput. It is very interesting to see both the fixed and variable delays involved in process communication. The authors baselined their timing via null RPCs, and compared those times to largest-packet-sized RPCs. Some timings were done by sending 10,000 packets and dividing elapsed time by 10,000, and some were done by counting machine instructions involved and summing the times the instructions took (from a processor reference manual). Not surprisingly a large part of the cost was variable and depended on
  • 2. the size of the RPC packet (Ethernet latency, UDP checksum calculation and system bus latency). Some of the interesting aspects of the Firefly optimization were: the awakening of threads to handle received packets from within interrupt routines and the sharing of address space between all processes using RPC and the Ethernet driver. The authors admit that these performance improvements `collapse layers of abstraction' and also admit to the security implications of shared buffer space. The Lightweight RPC paper [2] (also about the Firefly system running the TAOS operating system) discusses a more radical RPC implementation. RPCs traditionally look like normal function calls but are actually synchronous communication mechanisms with distinct remote or local processes. The authors argue that simple and local RPCs deserve optimization as they constitute the bulk of interprocess communication. Accordingly, they have implemented LRPC (Lightweight RPC) with four new techniques. First the control transfer between client and server is simplified. The client directly executes the requested procedure in the server's space. Second, client and server share an argument stack. Third, LRPC uses simple stubs that preclude sending complex data structures. Fourth and finally LRPC avoids shared data structure bottlenecks and can take advantage of free processors in the Firefly multiprocessor system. These four techniques present interesting tradeoffs. Similar to [1] there are security implications in the optimizations that involve shared data space between client and server. These are handled in several ways. Client binding to servers is handled carefully. Clients cannot communicate without objects that identify them to servers. Client calls are rigorously checked before being mapped and executed in server space. RPC stubs are generated in Firefly machine language. In the homogenous Firefly environment this is not an issue. These stubs are up to four times faster than Modula2+ compiled stubs. LRPC stubs are invoked directly by the Firefly kernel thus avoiding data copying or message checking in user space. LRPC is optimized for multiprocessor use by avoiding shared data structures. Shared argument stacks are locked individually and queuing on these stacks takes less than 2% of call time. The first paper discusses optimization of traditional RPCs. These optimizations are easily described but increase risk in execution and probably increase the difficulty of kernel code maintenance in Firefly. Firefly RPC performance is compared with other distributed systems such as Sprite, Amoeba, V, Cedar and UNIX. Although Firefly is the only VAX based system absolute performance numbers are interesting to compare. Firefly RPC latency (at about 2.7ms/call) is within .2ms of the fastest RPC implementations (in V). Firefly RPC throughput (at 4.6Mbit/sec) is above the median of the compared system but not quite as fast as that
  • 3. in Sprite (at 5.6Mbit/sec). The second paper optimizes Firefly RPCs for the simple cases -- local calls and simple data structures. LRPC are demonstrably lightweight. Null LRPCs add only 48usec to minimum time for each operation (for a total of 157usec). LRPC at 157usec compares very favorably with the Firefly Null RPC at 464usec (3:1 difference!). Larger calls show almost the same ratio: LRPC 200 byte calls at 227usec and Firefly RPC at 636usec. The multiprocessor optimizations produce good linearity with respect to number of processors. Firefly RPC plateaus at two processors while LRPC is linear at least to four processors. These two papers agree in several areas on RPC optimization. Unfortunately, high-level language implementations, nicely layered designs, clearly distinguished protection domains and arbitrarily complex data structures are all sacrificed to the need for speed. RPC optimization is critical in RPC acceptance as otherwise programmers will work around the system. Fortunately, the dirty details of these optimizations can to a large degree be hidden from programmers and users, thus allowing higher-level software engineering techniques in user code. Works Cited [1] M. D. Schroeder and M. Burrows, "Performance of Firefly RPC," Transactions on Computing Systems, vol. 8, no. 1, pp. 1-17, Feb 1990. [2] B. N. Bershad, T. E. Anderson, E. D. Lazowska and H. M. Levy, "Lightweight Remote Procedure Call," Transactions on Computing Systems, vol. 8, no. 1, pp. 37-55, Feb 1990.