Abstract for Snavely, Tullsen, Voelker, "Symbiotic Jobscheduling with Priorities for a Simultaneous Multithreading Processor"

Simultaneous Multithreading machines benefit from jobscheduling
software that monitors how well coscheduled jobs share CPU resources,
and coschedules jobs that interact well to make more efficient use of
those resources.  As a result, informed coscheduling can yield
significant performance gains over naive schedulers.  However, prior
work on coscheduling has only focused on the situation where jobs have equal
priority, which is an unrealistic assumption for schedulers for modern
operating systems.

This paper demonstrates that a scheduler for an SMT machine can both
satisfy process priorities and symbiotically schedule low and high
priority threads to increase system throughput.  Naive priority
schedulers dedicate the machine to high priority jobs to meet priority
goals, and as a result decrease opportunities for increased
performance from multithreading and coscheduling.  More informed
schedulers, however, can dynamically monitor the progress and resource
utilization of jobs on the machine, and dynamically adjust the degree
of multithreading to improve performance while still meeting priority
goals.

Using detailed simulation of an SMT architecture, we introduce and
evaluate a series of five software and hardware-assisted priority
schedulers.  Overall, our results indicate that coscheduling priority
jobs can significantly increase system throughput by as much as 40\%,
and that (1) the benefit depends upon the relative priority of the
coscheduled jobs, and (2) more complex schedulers are more effective
the greater the differences in priorities.  We also show that,
although our priority schedulers focus on increasing system
throughput, as a result they can also decrease average turnaround
times for a random jobmix by as much as 33%.