Check out the new USENIX Web site. next up previous
Next: Case Study: System Call Up: Cassyopia: Compiler Assisted System Previous: Cassyopia: Compiler Assisted System

Introduction

Execution of a program almost always involves multiple address spaces, whether it executes on a standalone system such as a desktop or a PDA or across multiple machines such as a client-server program or a program based on the Web or the Grid. On a standalone system, user-level address spaces--i.e., processes--request services from the kernel address space using system calls and potentially interact with other user-space processes or system daemons. Programs that span machines are by definition composed of multiple processes, which also interact with kernels, e.g., to exchange messages. Address spaces play a valuable role as protection boundaries, and typically represent units of independent development, compilation, and linking. Largely for these reasons, crossing address spaces--even on the same machine--has considerable execution cost, typically orders of magnitude higher than the cost of a procedure call [11,12].

Here, we describe an approach to reducing this cost--sometimes dramatically--using compiler optimization techniques. Unlike traditional uses of such techniques that are confined to optimizing within procedures (intra-procedural optimization), across procedures (inter-procedural optimization), or across compilation units (whole-program optimization), our approach focuses on applying these techniques across address spaces on the same or different machines while preserving the desirable features of separate address spaces. The specific focus is on profiling-based optimization where the address space crossing behavior of a component (e.g., the system calls made by a process) is profiled and then optimized by reducing the number of crossings or the cost of each crossing. This compiler assisted approach to system optimization is being realized in a system called Cassyopia.

This paper elaborates on this overall vision. We first highlight its application in one context, that of optimizing traditional system call performance on a single host. This work complements existing techniques for system call optimization [5,6,11,14,15,16], which focus on optimizing calls in isolation rather than as collections of multiple calls as done here. We then briefly discuss other areas in which these ideas could be applied.


next up previous
Next: Case Study: System Call Up: Cassyopia: Compiler Assisted System Previous: Cassyopia: Compiler Assisted System
Mohan Rajagopalan 2003-06-16