Ziel des TANGRAM-Konzepts (Task and Group Affinity Management) ist die bessere Nutzung der Hardware-Leistung von Multiprozessoren.
Zur Überbrückung des Unterschiedes zwischen CPU-Geschwindigkeit und der Zugriffszeit zum Hauptspeicher verwenden alle Server schnelle Pufferspeicher (Caches). Abhängig vom Befehlsprofil (im Wesentlichen vom Anteil der Hauptspeicher-Zugriffe) hängt die erreichbare Leistung stark von der Trefferrate im Cache ab.
Es gibt zwei Arten von Caches, die meist kombiniert werden:
Store-Through-Caches (STC)
Die Daten werden so rasch wie möglich "durchgereicht", d.h. nach einem Schreibvorgang werden die Daten im Hauptspeicher sofort aktualisiert.Store-In-Caches (SIC)
Die Daten verbleiben im Cache und werden nach einer LRU-Strategie (Least Recently Used) in den Hauptspeicher zurückgeschrieben. In diesem Fall sind die im Hauptspeicher stehenden Daten nicht aktuell.
Während bei Monoprozessoren die volle Leistung durch einen ausreichend großen Cache erreicht werden kann, ist die Lage bei Multiprozessoren wesentlich komplexer.
"
Bild 9: Cache-Hierarchie bei einem Quadroprozessor mit First-Level Store-Through-Caches und Second-Level Store-In-Caches
Je mehr Tasks, die auf verschiedenen CPUs laufen, auf die gleichen Hauptspeicher-Bereiche (z.B. Memory-Pools) zugreifen, desto größer ist die Wahrscheinlichkeit, dass die aktuelle Information sich nicht im CPU-eigenen Cache (SIC), sondern in einem "Nachbar"-Cache befindet.
Damit die CPU weiterarbeiten kann, muss die aktuelle Information erst in den eigenen Cache gebracht werden, wodurch die für den Anwender nutzbare CPU-Leistung sinkt. Die Lage verschärft sich, je größer der Schreibanteil auf die gleichen Hauptspeicher-Seiten wird.
Das TANGRAM-Konzept versucht, diesem Leistungsverlust durch die Bildung von Taskgruppen und deren Zuordnung zu bestimmten CPUs (möglichst einer Untermenge der vorhandenen physikalischen CPUs) entgegenzuwirken.
Bildung von Taskgruppen
Zu einer Taskgruppe werden sogenannte "affine Tasks" zusammengefasst, die eine große Menge von gemeinsamen Daten schreibend referenzieren.
Die Anmeldung zu einer Taskgruppe erfolgt mit dem Makro TINF. Die Verwaltung der Taskgruppen übernimmt das bei "System Ready" automatisch gestartete Subsystem TANGBAS.
Zuordnung zu CPUs
Die Zuordnung von Taskgruppen zu CPU-Gruppen erfolgt dynamisch abhängig von der Last, wenn ein längerer Zeitraum betrachtet wird.
Für ein kurzes Zeitintervall (Parameter PERIOD, Default-Wert: 10 Sekunden) dagegen herrscht eine feste Zuordnung, um die erwähnte Cache-Problematik zu entschärfen.
Der Zuordnungs-Algorithmus des Subsystems TANGRAM, welches explizit gestartet werden muss, misst periodisch folgende Werte:
CPU-Verbrauch jeder einzelnen Taskgruppe
Auslastung der einzelnen CPUs
CPU-Gesamtauslastung
Anschließend wird eventuell eine neue Zuordnung der Taskgruppen zu den CPU-Gruppen unter folgenden Randbedingungen vorgenommen:
Die Taskgruppe muss eine gewisse CPU-Mindestleistung aufnehmen (Parameter THRESHOLD, Default-Wert: 10%), um bei der individuellen CPU-Zuordnung berücksichtigt zu werden.
Lastet eine Taskgruppe einen oder mehrere CPUs weitgehend aus (Parameter CLEARENCE, Default-Wert: 20%, entspricht einer CPU-Auslastung von 80%), so erhält sie jeweils eine CPU mehr zugeordnet, um eine Laststeigerung dieser Taskgruppe im nächsten Zuteilungsintervall nicht zu unterbinden.
Die Zuteilung der Taskgruppen zu CPUs erfolgt so, dass alle CPUs möglichst gleichmäßig ausgelastet sind.
Der Scheduling-Algorithmus von PRIOR überprüft bei jedem Taskwechsel, ob eine Task entsprechend der vom Zuordungs-Algorithmus getroffenen Zuordnung auf der CPU ablaufen darf. Dabei wird die Strategie "IDLE vor Fremd" verfolgt, d.h. es wird der Leerlauf einer CPU in Kauf genommen, bevor eine fremde Task initiiert wird (die den Cache-Inhalt komplett neu aufbauen müsste).
Nutzen von TANGRAM
Die bessere Nutzung der Hardware-Leistung bei Multiprozessoren hängt von folgenden Bedingungen ab:
Multiprozessorgrad (höherer Gewinn bei mehr CPUs)
Hardware-Architektur (große Store-In-Caches)
Anwendung (Größe des Schreibanteils, Aufteilungsmöglichkeit auf Teilmenge der vorhandenen CPUs)
Auslastung (merkbarer Gewinn erst bei höherer Auslastung)
Eine allgemeine Aussage über den Nutzen von TANGRAM ist schwierig. Messungen mit verschiedenen Lasten zeigten ein Mehr an verfügbarer Hardware-Leistung von ca. 5% bei Bi-Prozessoren und ca. 10% bei Quadro-Prozessoren.