Multiprocessor Scheduling Using Dynamic Performance Measurement and Analysis
In this paper the authors address using dynamic performance metrics when making scheduling decisions. The focus is on the problem of cache affinity in multiprocessor CPU schedulers. The Linux 2.4 kernel uses a simplistic method to determine cache affinity, one that does not take into account the working set size of the process. They propose using the hardware performance counters in a 4-way multiprocessor Itanium system in order to make better scheduling decisions. The system traces cache behavior per time slice for running processes, then uses off-line analysis to dynamically determine scheduling thresholds that are reported back to the kernel. Using the thresholds along with run-time averages of the process's performance metrics, the scheduler can make more intelligent decisions regarding cache affinity.