Hyper-Threading-Benchmarks

Anforderungen an den Scheduler

Während für den Programmierer kaum ein Unterschied zwischen einem HT-System und einem echten Dual-System besteht, muss ein optimierter Task-Scheduler eines Betriebssystems beide Varianten unterschiedlich behandeln. Solange nur ein einziger Thread auf einem HT-System läuft, sollte der Scheduler das Hyper-Threading ausschalten. Dazu führt er auf der logischen CPU im Leerlauf den privilegierten Halt-Befehl aus und deaktiviert sie damit. Dann stehen dem aktiven Thread auf der anderen "CPU-Hälfte" alle CPU-Ressourcen voll zur Verfügung.

Kommt nun ein weiterer, niedriger priorisierter Thread hinzu, kann der Scheduler diesen auf einem "echten" SMP-System der zweiten CPU zuordnen. Der höher priorisierte erste Thread auf der ersten CPU wird dadurch nicht gebremst.

Bei Hyper-Threading würde ein nicht optimierter SMP-Scheduler die zweite logische CPU nun aktivieren und dieser den niedrig priorisierten Thread zuweisen. Da innerhalb der physikalischen HT-CPU aber keine Priorisierung der beiden logischen CPUs stattfindet, bremst der unwichtige Job so den wichtigen aus. Sinnvoller ist es in diesem Fall, den niedrig priorisierten Job ganz zurückzustellen oder ihm nur gelegentlich eine kurze Zeitscheibe auf der zweiten logischen CPU zu geben.