Das Subsystem TANGRAM (Task and Group Affinity Management) plant für affine Task-Gruppen unter Berücksichtigung ihres Leistungsbedarfs die Zuordnung zu CPUs. Bei bestimmten Multitask-Anwendungen gibt es Gruppen von Tasks, die häufig auf größere Mengen gemeinsamer Daten schreibend zugreifen. Diese Task-Gruppen werden als „affine Task-Gruppen“ bezeichnet.
Um auf Multiprozessoren die Verluste durch Cohits in den CPU-Caches zu reduzieren, ist es günstig, solche Task-Gruppen auf eine Teilmenge der CPUs einzuschränken.
Das Einrichten der Task-Gruppen erfolgt mit dem Makro TINF (siehe Handbuch „Makroaufrufe an den Ablaufteil“ [30]). Die Verwaltung der Taskgruppen übernimmt das bei „System Ready“ automatisch gestartete Subsystem TANGBAS und zwar unabhängig davon, ob die Regelungsfunktion TANGRAM gestartet ist.
Das Subsystem TANGRAM misst die Auslastung der einzelnen CPUs, die Leistungsaufnahme der angemeldeten Task-Gruppen sowie der restlichen Tasks und legt jeweils für ein Regelintervall die für die Initiierung einer Task erlaubten CPUs fest.
Die An- und Abmeldung von Tasks zu Gruppen sowie die Prozessorzuordnung der einzelnen Gruppen kann mit COSMOS-Hooks protokolliert werden. COSMOS ist ein optionaler Bestandteil von openSM2 (siehe Messprogramme im Handbuch „openSM2“ [49]).
Der durch den Einsatz von TANGRAM erzielbare Performance-Gewinn ist abhängig vom Server (Multiprozessorgrad, Cache-Architektur), vom Lastprofil (Anteil und Strukturierung der TP-Anwendungen) und von der Server-Auslastung. Die BS2000-TP-Produkte openUTM, UDS/SQL und SESAM/SQL richten TANGRAM-Task-Gruppen ein. Multitask-Anwendungen sollten daraufhin überprüft werden, ob das Einrichten von TANGRAM-Task-Gruppen einen Performance-Gewinn bringt.
Die Arbeitsweise von TANGRAM kann durch die Angabe von Parametern in der Parameterdatei SYSSSI.TANGRAM.<version> gesteuert werden.
Die angegebenen Voreinstellungen treten in Kraft, wenn einer der Parameter nicht in der Parameterdatei gefunden wird oder keine Parameterdatei zur Verfügung steht. Im zweiten Fall wird außerdem folgende Konsolmeldung ausgegeben:
NTG0002 Warning: Opening of TANGRAM parameter file (&00) failed.
DMS-Error-Code (&01). Processing continued with default parameters.
Um Parameter zu verändern, muss TANGRAM angehalten und mit der geänderten Parameterdatei neu gestartet werden. Bei diesem Vorgang bleiben alle eingerichteten Task-Gruppen erhalten.
Die folgenden Parameter steuern die Arbeit von TANGRAM. Die Reihenfolge der Parameter in der Parameterdatei ist beliebig, es muss jedoch jeder Parameter in einer eigenen Zeile stehen.
PERIOD=<integer 1..100>
Bestimmt den Abstand zwischen zwei aufeinander folgenden Läufen der periodischen TANGRAM-Routinen in Sekunden.
Voreinstellung: 10 Sekunden
CLEARENCE=<integer 0..100>
Gibt einen Wert zur Berechnung der max. CPU-Auslastung einer Task-Gruppe in Prozent an. Die Auslastung wird folgendermaßen berechnet: Auslastung = (1-wert).
Voreinstellung: 20 %, d.h. jede CPU sollte maximal zu 80 % von einer einzelnen Task-Gruppe belegt sein.
THRESHOLD=<integer 0..100>
Bestimmt die Schwelle, ab welcher Gesamtauslastung auf allen CPUs eine Task-Gruppe aktiv am Verfahren der Prozessor-Zuordnung durch TANGRAM teilnimmt.
Voreinstellung: 10 %