Next: Related Work
Up: Use of Performance Reflection
Previous: Use of Performance Reflection
To demonstrate the feasibility of using reflection in applications, we show that our techniques can be used to do server throttling.
Our experimental setup contains a MySQL database server running under Red Hat Linux 7.0 with the 2.4.18 kernel on an AMD Athlon 1.3 GHz processor.
We used the shopping mix of the TPC-W [12] workload to drive the database server.
Under this workload, the database server is the bottleneck.
The database server thrashes when the number of concurrent queries is too high.
We developed a simple controller that uses the overhead and productivity metrics to dynamically determine the concurrency level of the database by controlling the number of active database connections.
The controller receives all requests for database connections.
It queues excess requests if the demand exceeds the number of available connections.
When connections are released or more connections become available, queued requests are satisfied.
The controller uses the PerfCtr [10] kernel module to read the number of L1 DTLB misses, L2 DTLB misses, and L1 and L2 data cache misses from the Athlon AMD processor [4].
The controller uses feedback from the kernel including the DTLB and data cache miss rates to estimate the overhead metric.
It uses the percentage of user-mode CPU utilization and the throughput rate to estimate the productivity metric.
The controller reads the input values every second, and keeps an exponential moving average of these metrics that spans the last 60 seconds to prevent transient oscillations.
The controller uses a simple heuristic:
It increases the number of database connections whenever both the productivity and overhead metrics increase, which corresponds to the situation where the CPU has idle time and low DTLB and data cache miss rates.
The controller decreases the number of connections whenever the overhead metric increases and the productivity metric stagnates, which corresponds to the situation where the CPU is saturated and the DTLB and data cache miss rates are high.
throttleServer throttling for MySQL database server under TPC-W workload.0.48
Figure 2 shows the performance of the baseline system (without the controller) and of the system using reflection (through the use of the controller).
The performance of the baseline system increases with the load until it reaches the peak plateau.
Then, the performance degrades because of thrashing due to DTLB misses and data cache misses.
As for the configuration that uses reflection, the database server is able to sustain peak throughput throughout the overload region by controlling the number of active connections to prevent thrashing.
Although, the controller prevented thrashing in the overload region, the dynamic behavior of the system is still not satisfactory.
The controller uses that simple heuristic in an ad-hoc manner rather than a control-theoretic approach, which would guarantee stability and responsiveness.
We believe that it is feaible to apply a control-theoretic approach that prevents thrashing and substantially improves the dynamic behavior of the system as the load changes.
Next: Related Work
Up: Use of Performance Reflection
Previous: Use of Performance Reflection
Sameh Mohamed Elnikety
2003-06-15