Exkurs: G/G/1 vs. G/G/c — Kingman und mehrere Bedienstellen
Kingman’s Formel beschreibt die Wartezeit in einer Warteschlange mit einer einzelnen Bedienstelle — in der Fachsprache ein G/G/1-System. Aber ein Connection-Pool mit 50 Verbindungen ist keine einzelne Bedienstelle. Ein Thread-Pool mit 200 Threads erst recht nicht. Warum verwenden wir dann eine G/G/1-Formel?
Warum die Überschätzung nicht schadet
Kingman überschätzt die Wartezeit für Systeme mit mehreren Bedienstellen — und zwar nicht um ein paar Prozent, sondern um Größenordnungen. Bei 50 parallelen Verbindungen und 80% Auslastung liegt die tatsächliche Wartezeit weit unter dem, was Kingman vorhersagt.
Aber zwei Dinge relativieren das.
Der Engpass ist fast immer G/G/1. Ein Connection-Pool mit 50 Verbindungen ist ein paralleles System — aber die Datenbank dahinter hat einen einzigen Writer-Thread, einen einzigen Lock auf der Hot-Row, einen einzigen Buffer Pool. Das System hat viele parallele Bedienstellen um den Engpass herum, aber der Engpass selbst ist eine einzelne geteilte Ressource. Das ist die Kernaussage der Theory of Constraints: Der Durchsatz des Systems wird vom engsten Punkt bestimmt — und der engste Punkt ist typischerweise G/G/1.
In Teil 1 bricht der Service nicht zusammen, weil der Thread-Pool zu klein ist (c = 200), sondern weil der Connection-Pool mit seinen 10 Verbindungen erschöpft ist — und dahinter die Datenbank mit ihren geteilten Ressourcen.
Die Hebel bleiben dieselben. Egal ob G/G/1 oder G/G/c — Variabilität senken, Auslastung begrenzen, Servicezeit optimieren. Die Hockeyschläger-Kurve hat bei G/G/c dieselbe Form, nur nach rechts verschoben: Der steile Anstieg beginnt bei höherer Auslastung. Mehr parallele Bedienstellen kaufen Puffer, aber sie ändern nichts am grundlegenden Verhalten. Variabilität halbieren halbiert die Wartezeit — bei G/G/1 und G/G/c gleichermaßen.
Zwei Werkzeuge, zwei Rollen
Kingman liefert keine exakten Millisekunden für einen Thread-Pool mit 200 Threads. Dafür wollen wir die Abschätzung auch gar nicht einsetzen:
Little’s Law rechnet. $L = \lambda \times W$ gilt für jedes stabile System — egal ob eine Bedienstelle oder fünfzig. Keine Näherung, keine Einschränkung. Wer wissen will, wie viele Datenbankverbindungen ein Service braucht, rechnet: 500 Requests/s × 70 ms Servicezeit = 35 gleichzeitige Verbindungen. Exakt.
Kingman erklärt. Warum explodieren die Antwortzeiten bei 85% Auslastung? Weil $\frac{\rho}{1-\rho}$ nichtlinear wächst — bei 50% ist der Faktor 1, bei 85% schon 5,7, bei 95% neunzehn. Was bringt es, die Variabilität zu halbieren? Exakt die Hälfte der Wartezeit. Kingman zeigt, welcher Hebel stärker wirkt — und warum.
Little liefert die Arithmetik — wie viel genau. Kingman liefert die Mechanik — warum, in welche Richtung, in welchen Proportionen. Beide zusammen decken ab, was wir für Kapazitätsentscheidungen benötigen: Little für die Dimensionierung, Kingman für das Verständnis.
Quellen
- Kingman (1961) — The single server queue in heavy traffic. Mathematical Proceedings of the Cambridge Philosophical Society, 57(4).
- Erlang (1917) — Solution of some problems in the theory of probabilities of significance in automatic telephone exchanges. Elektroteknikeren, 13.
- Hopp & Spearman (2011) — Factory Physics. 3rd ed. Waveland Press. Kap. 8.
Kommentare