Check out the new USENIX Web site. next up previous
Next: Clustering mechanisms Up: Case Study: System Call Previous: Case Study: System Call

Overview

As an application of the general approach described above, we describe system call clustering, a profile-directed approach to optimizing a program's system call behavior. In this approach, execution profiles are used to identify groups of systems calls that can be replaced by a single call implementing their combined functionality, thereby reducing the number of kernel boundary crossings. A key aspect of the approach is that the optimized system calls need not be consecutive statements in the program or even within the same procedure. Rather, we exploit correctness preserving compiler transformations such as code motion, function inlining, and loop unrolling to maximize the number and size of the clusters that can be optimized. The single combined system call is then constructed using a new multi-call mechanism that is implemented using kernel extension facilities like those described in [3,4,7,8,15,20]. We also introduce an extension to the basic technique called looped multi-calls, and illustrate the approach using a simple copy program. Our approach goes beyond earlier work on batching system calls to improve performance [2,6] by its use of compiler-based techniques to create optimization opportunities and by its orientation towards optimizing a program's entire system call behavior in a holistic manner.


next up previous
Next: Clustering mechanisms Up: Case Study: System Call Previous: Case Study: System Call
Mohan Rajagopalan 2003-06-16