Next: Clustering mechanisms
Up: Case Study: System Call
Previous: Case Study: System Call
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: Clustering mechanisms
Up: Case Study: System Call
Previous: Case Study: System Call
Mohan Rajagopalan
2003-06-16