next up previous contents
Next: Mischformen Up: Dynamische Scheduling-Verfahren Previous: Fair Share   Inhalt


Guaranteed Percentage

Beim Guaranteed Percentage [KrMU99] bekommt jeder Thread einen festen Prozentsatz Pi der Rechenleistung des Prozessors zugeteilt. Der Thread bekommt diesen Prozentsatz in einem bestimmten Intervall garantiert. Eine Deadline wird sicher eingehalten, wenn sie auf die Grenze zwischen zwei solchen Intervallen fällt, ansonsten kann es passieren, daß der Thread seinen Anteil an der Rechenleistung erst in dem Teil des Intervalls bekommt, der jenseits der Deadline liegt.

Wenn ein Ereignis eintrifft, das einen Thread anstößt, wird dieser an der nächsten Intervallgrenze gestartet. Es tritt also eine gewisse Latenz auf. Zudem muß der Thread vor Beginn des Intervalls, in dem seine Deadline liegt, fertig sein. Er verliert also weniger als zwei Intervalle. Wenn man davon ausgeht, daß ein Job eine Periode von etwa 100.000 Takten hat - zum Beispiel für Ti=5ms bei 20MHz Takt - und die Intervalle 100 Takte lang sind, liegt der Verschnitt unter 0,2%.

Abbildung: Verzögerung eines Ereignisses bei Guaranteed Percentage

Daher ist es von entscheidender Bedeutung, die Intervalle möglichst klein zu wählen, im Prozessor selbst zum Beispiel 100 Takte. Dadurch geht dem Scheduler allerdings der Überblick verloren, so daß er auf lange Blockierungen, wie sie etwa bei I/O-Befehlen auftreten können, nicht mehr optimal reagieren kann.

Ein weitere Verfeinerung bei der Auswahl des nächsten Thread ist die Frage, ob ein Thread mindestens, höchstens oder genau seinen Prozentsatz einhalten muß.

In einem Prozessor können diese drei Varianten kombiniert werden, indem jedem der Threads ein zusätzliches Flag zugeordnet wird, das seine Zugehörigkeit zu einer der drei Klassen anzeigt. Wenn jeder Thread seinen Anteil bekommen hat, kann der Scheduler nur noch Threads aus der Klasse minimal heranziehen, um die Restzeiten zu füllen.

Der Unterschied zu Proportional Share aus Abschnitt 2.5.5.3 besteht darin, daß immer ein fester Prozentsatz der Prozessorleistung vergeben wird und nicht nur ein Verhältnis der Threads zueinander festgelegt wird. Beim Proportional Share wird die gesamte Leistung im entsprechenden Verhältnis an die Threads vergeben. Kommt ein neuer hinzu, verringert sich der Anteil aller alten Threads. Dagegen kann man bei Guaranteed Percentage sofort feststellen, ob der neue Thread noch eingeplant werden kann, oder ob 100% der Prozessorleistung überschritten würden.

Abbildung 2.8 zeigt das Ablaufdiagramm der drei Threads unter Guaranteed Percentage Scheduling. Hier erkennt man auch deutlich einen wichtigen Vorteil dieses Verfahrens: Durch die gleichmäßige Verteilung der Rechenleistung über die Zeit können Datenraten sehr gleichmäßig eingehalten werden. Das ermöglicht den Einsatz kleinerer Puffer und spart somit Hardware. Eine serielle Schnittstelle zum Beispiel liest Daten mit einer festen Rate ein. Wenn ein Thread ein Datum immer sofort abholt, wenn es ankommt, ist kein Puffer nötig. Wenn der Thread aber erst später aktiv werden kann und dann mehrere Daten auf einmal abholt, muß die Schnittstellenhardware die Daten in einem Puffer zwischenspeichern.

Abbildung 2.8: Drei Threads unter Guaranteed Percentage Scheduling

Ein weiterer Vorteil liegt darin, das jeder Thread seinen Anteil bekommt, unabhängig davon, was die anderen Threads gerade tun.


next up previous contents
Next: Mischformen Up: Dynamische Scheduling-Verfahren Previous: Fair Share   Inhalt
Alexander Schulz
2000-06-18