## Load-Balancing

### Verwendung

Das Betriebssystem hat keinen Einfluss darauf, wie das Datenbanksystem die Tasks einer Datenbankinstanz auf die zur Verfügung stehenden User-Kernel-Threads verteilt. Es kann daher nicht eingreifen, wenn z. B. ein User-Kernel-Thread einen Prozessor zu 100% auslastet, die anderen drei Prozessoren des Rechners jedoch überhaupt nicht genutzt werden.

Innerhalb eines User-Kernel-Threads verhalten Tasks sich kooperativ, das heißt sie entscheiden selbst, wann sie sich suspendieren und die nächste wartende Task weiterarbeiten lassen (siehe Task-Wechsel). Dieses Verhalten kann dazu führen, dass eine einzelne Task alle anderen Tasks im selben User-Kernel-Thread lange blockiert.

Um die Tasks optimal auf die User-Kernel-Threads zu verteilen, führt das Datenbanksystem deswegen ein internes Load-Balancing durch. So erreicht das Datenbanksystem insbesondere auf Rechnern mit mehreren Prozessoren eine bessere Ressourcenauslastung und für die einzelnen Benutzer kürzere Antwortzeiten.

Um die maximale Anzahl der parallel genutzten Prozessoren zu konfigurieren, verwenden Sie den allgemeinen Datenbankparameter MAXCPU.

### Aktivitäten

Beim Load-Balancing verteilt der Timer (Spezial-Thread) die Tasks auf die einzelnen User-Kernel-Threads. Der Timer analysiert in regelmäßigen Abständen, wie lange die einzelnen Tasks in den User-Kernel-Threads bereits gewartet haben (siehe Übersicht der Task-Zustände) und summiert diese Wartezeiten für jeden User-Kernel-Thread auf.

Wenn die Summe der Wartezeiten in einem User-Kernel-Thread sehr viel größer ist als in einem anderen, dann veranlasst der Timer, dass diejenige Task, die im ersten User-Kernel-Thread am längsten gewartet hat, in den zweiten User-Kernel-Thread verschoben wird.

Um das Load-Balancing zu aktivieren, setzen Sie den speziellen Datenbankparameter LOAD_BALANCING_CHK auf einen Wert größer als Null.

### Beispiel

User-Kernel-Thread UKT1 enthält die Tasks T1, T2, T3, UKT2 die Task T4. T1 befindet sich in einer langen Schleife, während T2 und T3 warten.

Die Summe der Wartezeiten in UKT1 beträgt 210 ms, in UKT 2 jedoch nur 10 ms. Deswegen wird T2, die in UKT1 am längsten gewartet hat, in UKT2 verschoben.

Siehe auch:

Prozessstruktur