Anfang des Inhaltsbereichs

 Load-Balancing 

Das Load-Balancing dient dazu, Tasks optimal auf die zur Verfügung stehenden User-Kernel-Threads zu verteilen. Hierdurch erreicht das Datenbanksystem insbesondere auf Rechnern mit mehreren Prozessoren eine bessere Ressourcenauslastung und damit für die einzelnen Benutzer zu kürzeren Antwortzeiten.

Load-Balancing ist für Datenbankinstanzen ab der Version 7.4.03 möglich.

Das Betriebssystem hat keinen Einfluss darauf, wie Tasks vom Datenbanksystem auf die zur Verfügung stehenden User-Kernel-Threads verteilt werden. 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.

Tasks verhalten sich in einem User-Kernel-Thread grundsätzlich kooperativ. Sie entscheiden selbst darüber, wann sie sich suspendieren und die nächste wartende Task im selben User-Kernel-Thread weiterarbeiten lassen. Dieses Verhalten kann dazu führen, dass eine einzelne Task alle anderen Tasks im selben User-Kernel-Thread lange blockiert.

Beim Load-Balancing koordiniert der Timer-Thread die Verteilung der Tasks auf die einzelnen User-Kernel-Threads. Der Timer fragt in regelmäßigen Abständen ab, wie lange die einzelnen Tasks in den User-Kernel-Threads bereits gewartet haben 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.

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.

Load-Balancing aktivieren

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

Siehe auch:

Database Manager GUI, Datenbankparameter anzeigen und ändern

Database Manager CLI, Ändern des Werts eines Datenbankparameters

Ende des Inhaltsbereichs