This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
= λ *
wobeidie mittlere Anzahl von Prozessen in der Warteschlange bezeichnet. Betrachten wir wieder unser Router-Beispiel. Die mittlere Anzahl ist= 5, davon ist einer in Arbeit und somit ist = 4. Für die mittlere Wartezeit folgt:= / λ = 4/λ; λ = 500 P/sec=
4 40 40 = = 10−3 = 8 msec 500 5000 5
Wegen= + , also 10 = 8 + folgt die mittlere Bearbeitungszeit = 2 msec. Ihr Kehrwert μ = 1 / ist die Bearbeitungsrate und ergibt sich zu 0,5*103 = 500 Pakete/sec. Die Auslastung ρ = λ/μ = 500/500 = 1 ist 100%, ein nicht akzeptabler Betriebszustand! Damit haben wir für das Vorhaben, möglichst einfach das Leistungsverhalten eines Systems zu beschreiben, welches durch einen Strom von Aufträgen charakterisiert ist – und nicht durch einen Auftrag bzw. ein Programm –, eine Lösung in Form von gemittelten Größen gefunden. Diese < tV>, , , , sind durch die Little’schen Gesetze untereinander verknüpft λ *=
λ *=
und geben die Dynamik des Systems in aggregierter Form wieder.
4.3 Zusammenfassung
35
4.3 Zusammenfassung Die Relevanz der Little’schen Gesetze besteht einmal in ihrer Einfachheit und damit auch in einer hohen Transparenz sowie zum anderen in den äußerst schwachen Voraussetzungen, die sie benötigen – mehr als das asymptotische, statistische Gleichgewicht ist nicht notwendig. Mit der leicht zu messenden Ankunftsrate λ und den durch Modellierung relativ einfach abzuschätzenden Größenbzw. sind die mittlere Verweilzeitbzw. die mittlere Wartezeit direkt bestimmbar. Man muss sich jedoch immer vor Augen halten, dass sie für eine einzelne Last keinen Sinn ergeben. Wie am Anfang dieses Abschnitts erwähnt steht für uns als Leistungsgröße der Durchsatz im Vordergrund. Von der Definition her ergibt er sich als die Anzahl erledigter Aufträge pro Zeiteinheit, also z. B. D = / . Nach dem ersten Little’schen Gesetz folgt D = λ, denn im statistischen Gleichgewicht wird, alles was angeboten wird, auch verarbeitet. Es besteht aber auch die Möglichkeit, D über die mittlere Bearbeitungszeit und die Auslastung ρ zu bestimmen: • die Auslastung ρ ergibt sich aus dem Verhältnis einlaufender zu bearbeiteter Prozesse, • in der zur Verfügung stehenden mittleren Bearbeitungszeit kann nicht mehr als der ρ-Anteil verarbeitet werden, ⎤ ρ ⎡ Auslastung • Durchsatz = ⎢ ⎥. < t B > ⎣ mittlere Bearbeitungszeit ⎦ So ist beim Router-Beispiel ρ = 1 und = 2 msec. Damit ergibt sich der Durchsatz D = ρ/ = 1/2 msec = (1/2)*103 [sec–1] = 500 [Pakete/sec] Dies entspricht der Zahl der einlaufenden Pakete, wegen der Auslastung ρ = 1 kommen natürlich auch alle zur Verarbeitung. In unserem Beispiel B3, Disk-I/O, ist ρ = (1/2) und = (1/200) [sec] = (1/2)*10–2 [sec]. Der Durchsatz ergibt daher zu D = ρ / = (1/2)/((1/2)*10–2) = 100 (IO/sec). Weitere Beispiele sollen an dieser Stelle nicht verfolgt werden, da wir später noch ausführlich den Durchsatz-Begriff behandeln werden. Jedoch hat letztere Auffassung viele Vorteile. Einmal, weil sie in der Praxis in der Form *D = ρ durch Messung überprüft werden kann, und zum anderen, weil sie sich unkompliziert im Rahmen von Modellen anwenden lässt. In den Kap. 6 und 7 wird dies deutlicher.
5 Benchmarks oder die Last mit der Last
Im Prinzip müsste das Ausmessen der Leistung durch Ablaufen der Maschineninstruktionen, welche die Last exakt repräsentieren, geschehen – ohne Beeinflussung durch die Ablaufumgebung, etwa einem Betriebssystem. Einem derartigen Unterfangen werden sich jedoch nur Idealisten und Puristen unterziehen. In der Praxis wird man versuchen, durch simple Vergleichsmessungen entsprechende Einflüsse zu eliminieren oder zu minimieren.
5.1 Historie und Voraussetzung Damit gehen wir ab jetzt davon aus, dass unsere Last um Betriebssystemkommandos ergänzt wird, auf welche wir relativ wenig Einfluss haben, im üblichen Jargon redet man von einer „workload“ (s. Abb. 5.1).
t
Start Workload
Unterbrechungen durch das Betriebssystem, wie etwa Caching, I/O, usw.
Ende Workload
Abb. 5.1 Ablauf einer „workload“
In modernen Hochleistungs-Clustern gleichartiger Maschinen (s. Abb. 5.2) kann die durch das Betriebssystem verursachte Koordination sogar eine Kommunikationslast hervorrufen, welche die eigentliche Lastmessung so empfindlich beeinflusst, dass diese praktisch wertlos ist (siehe Abschnitt 13.5).
38
5 Benchmarks oder die Last mit der Last
Cluster
Cluster
-Rechner
-Rechner Kommunikationskanal zum Datenaustausch
Abb. 5.2 Cluster-Modell
Man wird daher diese zusätzliche „Lasten“ gesondert ausmessen und bei der Leistungsberechnung explizit berücksichtigen. Vor diesem Hintergrund sind künstliche Zusammenstellungen von Maschineninstruktionen, sogenannte Mixe oder Kernels entstanden, die von jeglichen Interrupts frei sind. So hatte der berühmte Gibson-Mix in etwa den folgenden Aufbau (s. Abb. 5.3): Load/Store Vergleiche, Verzweigungen Logical Integer-Arithmetik Gleitkomma Rest
30% 20% 05% 05% 20% 20%
Abb. 5.3 Häufigkeiten von Maschinenbefehlen
Durchgesetzt haben sich heute Benchmarks auf der Ebene einer höheren Programmiersprache, so etwa FORTRAN für numerische Anwendungen wie im Linpack oder Livermore Loops, C, C++ und Java sind genauso vertreten. Ältere synthetische Benchmarks wie Whetstone wurden sogar über mehrere Programmiersprachen hinweg weiterentwickelt; von Dhrystone – entwickelt bei Siemens 1984 – ist heute nur noch die C-Version in Gebrauch. Sehr bekannt ist die SPEC-Benchmark-Initiative führender Computerhersteller (SPEC – Systems Performance Evaluation Cooperative), die versucht, die relevantesten Anwendungen in einem weiten Spektrum zu erfassen. Dieses Spektrum deckt ab: • • • •
die Laufzeit eines C-Compilers für verschiedene Quell-Codes, ingenieurwissenschaftliche Anwendungen aus dem Bereich der Simulationen, Anwendungen der symbolischen Datenverarbeitung wie LISP und LOGIK, numerische Anwendungen auf Linpack-Basis, welche auch für Vektorisierung und Parallelisierung geeignet sind.
5.2 Ein explizites Benchmark-Beispiel
39
Mit einer Erweiterung auf Ein-/Ausgabe-Operationen, was einer Einbeziehung von Datenbankanwendungen entspricht, würde es sich als Basis für einen allgemein akzeptierten Standard eignen.
5.2 Ein explizites Benchmark-Beispiel Wir wollen im Folgenden an einem sehr simplen Beispiel erst das Grundmuster eines Benchmarks aufzeigen und im Anschluss daran die Auswertungsmethodik skizzieren. Anwendung: Auswertung einfacher arithmetischer Ausdrücke für eine feste Anzahl von Wiederholungen – es wird klar zwischen integer und real/float Ausdrücken unterschieden Realisierung: Java mit Benutzung der Hardware-Arithmetik Windows 2000 Professional Pentium III, (3/4) GHz Messungen: Abschätzen der Anzahl der Maschineninstruktionen anhand des Byte-Codes => #last Ablaufzeit zcpu Programm: public class Schleife0{ static BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); static int xInt, yInt; static double xRea, yRea; static final int MAXN = 1 000 000; public static void printEingabe(){ System.out.print("\nGeben Sie die erste Zahl ein: "); setZahl('x'); System.out.print("\nGeben Sie die zweite Zahl ein: "); setZahl('y'); } public static void setZahl(char c){. . .} public static void berechneErgebnis(){ int Ergebnis=0; long zeitStart,zeitEnde; for (int i=1; i<= MAXN;i++){}; double dErgebnis=0; /* integer und real add */ zeitStart = System.currentTimeMillis();
40
5 Benchmarks oder die Last mit der Last
for (int i=1; i<= MAXN;i++){Ergebnis=i+xInt; }; zeitEnde = System.currentTimeMillis(); Ergebnis=2*Ergebnis; System.out.println(MAXN + " i+xInteger: " + (zeitEnde zeitStart) + "ms");
zeitStart = System.currentTimeMillis(); for (int i=1; i<= MAXN;i++){dErgebnis=((double)i)+xRea;}; zeitEnde = System.currentTimeMillis(); dErgebnis=2*dErgebnis; System.out.println(MAXN + " i+xReal : " + (zeitEnde - zeitStart) + "ms"); /* integer und real mul */ in gleicher Weise {Ergebnis=i*xInt;};
/* integer und real div */ in gleicher Weise {Ergebnis=yInt/i;};
/* integer und real add+mul+div */ zeitStart = System.currentTimeMillis(); for (int i=1; i<= MAXN;i++){Ergebnis=i+xInt*i+yInt/i;}; zeitEnde = System.currentTimeMillis(); Ergebnis=2*Ergebnis; System.out.println(MAXN + "i+xI*i+yI/i: " + (zeitEnde - zeitStart) + "ms"); }; zeitStart = System.currentTimeMillis(); for (int i=1; i<=MAXN;i++){dErgebnis=((double)i)+xRea*i+yRea/((double)i) ; zeitEnde = System.currentTimeMillis(); dErgebnis=2*dErgebnis; System.out.println(MAXN + "i+xR*i+yR/i: " + (zeitEnde zeitStart) + " ms"); }
5.2 Ein explizites Benchmark-Beispiel
41
public static void main(String[] args){ printEingabe(); berechneErgebnis(); } } Als erste Messung bestimmen wir die Ablaufzeit zcpu der leeren Schleife /*leer*/, um die Last des Hochzählens zu bestimmen, es folgt zcpuleer = 10 msec bei 1 000 000 Wiederholungen. Diese Grundlast wäre von allen weiteren Messungen zu subtrahieren. Im Prinzip können wir diese Leerschleife auch benutzen, um eine erste Leistungsabschätzung zu erhalten: MAXN = 1 000 000 = 106 for (i = 1; i <= MAXN;i++) { }; 3 Maschineninstruktionen:
1 Load/Store 1 Add 1 Test und Verzweigung
#last = 3*MAXN = 3*106 MIPS =
# last 3 *106 10 − 6 = 10 − 6 zcpu leer 10 msec
=
3 [sec −1 ] = 300 [sec-1 ] 10 * 10 − 3
Da wir jetzt die MIPS-Rate kennen und außerdem MIPS ∼ takt/cpi gilt, können wir bei bekanntem takt = (3/4) GHz = (3/4)*109 [sec–1] eine erste Schätzung für cpi im Integer-Bereich abgeben takt (3/4) * 109 3 1 109 = * * 8 10 − 6 = MIPS 4 3 10 350 * 106 5 = 2 Zur weiteren Analyse messen wir in separaten Schleifen den Zeitbedarf [msec] der arithmetischen Operationen x + i, x*i, x/i für eine Reihe von x-Werten (s. Abb. 5.4).
cpiint
=
42
5 Benchmarks oder die Last mit der Last
x 12 123 1234 12345 123456 1234567 12345678 123456789
x+i
x*i
x/i
20 20 20 20 20 20 20 20
20 20 20 20 20 20 20 20
70 70 80 80 80 70 70 80
Abb. 5.4 Messzeiten für Kernels in msec
Betrachten wir zunächst nur die Addition und Multiplikation in dieser Tabelle, so zeigt sich unabhängig vom x-Wert eine Laufzeit zcpuAM = 20 msec, von der noch der Aufwand für die Schleife (10 msec) abzuziehen ist zcpuint = zcpuAM – zcpuleer = 10 msec 4 Maschineninstruktionen: 2 Load 1 Add/ Mul 1 Store Da x sich über die ganze Schleife nicht verändert, wird der Compiler den Wert gleich in einem Register abspeichern. Damit kommen wir wie bei der Leerschleife auf 3 Maschinenoperationen und erhalten einen Wert von 300 MIPS. Durch Einbeziehung der Division ändern sich diese relativ einfachen Betrachtungsweisen, denn man sieht sofort, dass die Laufzeiten erheblich differieren und auch stärker im x-Wert schwanken. Ziehen wir den Schleifenwert zcpuleer ab, so müssen wir mit einem Mittelwert von zcpu DIV =
5 * (70 − 10) + 3 * (80 − 10) 255 = [msec] 8 4
rechnen: # last 3 *106 *10− 6 = *10− 6 255 − 3 zcpu DIV 10 4 12 1 = *103 ≤ *103 = 50 255 20
MIPSDIV =
5.2 Ein explizites Benchmark-Beispiel
43
Damit können wir in der üblichen Weise cpiDIV bestimmen
cpi DIV
3 ( ) *109 takt = *106 = 4 *10− 6 MIPSDIV 50 =
3 *102 = 15 20
und angesichts des hohen Wertes über die Komplexität der Integer-Division im Pentium III spekulieren. Setzen wir unsere einzeln getesteten Bausteine x + i, x*i und x/i zu einem arithmetischen Primitiv-Kernel i + x*i + y/i, x = y zusammen und messen die zcpuZeiten bei den gleichen x-Werten wie in Abb. 5.4, so ergibt sich zcpuMIX = 50 msec. Die Last besteht aus 2 Load, 1 Store 2 Add, 1 Mul, 1 Div #last = 7 sodass sich die MIPSMIX-Rate zu MIPSMIX =
7 *106 7 *10− 6 = *103 = 175 40 40 *10− 3
errechnet, der entsprechende cpi-Wert zu
cpi MIX
3 *109 3 4 30 4 *10− 6 = * *101 = = 7 4 7 7 2 *10 4
Damit bestätigt sich die Konsistenz unserer Überlegungen. Denn in den Einzelmessungen haben wir herausgefunden: cpiINT = 5/2 und cpiDIV = 15 und cpiMIX = 30/7. Da im Mix sechs gleichwertige Maschineninstruktionen (Load/Store, Add, Mul) einer Division gegenüberstehen, gilt
6 1 6 5 1 30 * cpi INT + * cpi DIV = * + *15 = 7 7 7 2 7 7 dies ist aber auch der gemessene cpiMIX-Wert.
44
5 Benchmarks oder die Last mit der Last
Es sollen jetzt in analoger Weise noch die Gleitkommainstruktionen untersucht werden, die Messwerte [msec] ergeben sich zu (s. Abb. 5.5):
y=x 12 123 1234 12345 123456 1234567 12345678 123456789
x+i
x*i
0x/i
30 30 30 30 30 30 30 40
40 30 40 40 40 30 30 30
090 090 080 080 080 101 100 091
i + x*i + y/i 40 50 40 40 40 40 50 40
Abb. 5.5 Messzeiten für Gleitkomma-Kernels in msec
Wir rechnen mit den Mittelwerten: zcpuADD = 20, zcpuMUL = 35, zcpuDIV = 90, zcpuMIX = 45 und erhalten auf der Basis von MFLOPX =
# last X − 6 10 zcpu X
X = ADD, MUL, DIV, MIX
folgende Ergebnisse MFLOPADD ≈ 200 MFLOPDIV ≈ 45
MFLOPMUL ≈ 110 MFLOPMIX ≈ 140
Diese sind nicht unplausibel, aber mit einer gewissen Vorsicht zu bewerten, da die Last #last eventuell nicht hoch genug (106) war. Ein Hochdrehen um den Faktor 100 auf 108 Durchläufe ändert dieses Bild, allerdings bleibt der Wert MFLOPMIX ≈ 140 erstaunlich gut erhalten. Um einen Anhaltspunkt für die Werte von modernen Maschinen (Frühjahr 2003) zu bekommen, zeigen wir in Abb. 5.6 folgende Liste
5.3 Vergleich von Benchmarks
Prozessor
MIPS
MFLOPS
Intel 3.06 AMD 2800+ AMD 2700+ Intel 2.8 AMD 2100
9500 8500 8200 7300 6550
5600 3400 3200 3700 2600
45
Abb. 5.6 Leistungsdaten von ausgewählten Prozessoren
Die MIPS-Rate wurde über Dhrystone gemessen, die MFLOP-Rate über Whetstone. Man beachte, dass man bereits die GFLOP-Region erreicht hat und damit bei den Mikroprozessoren auf einem Stand ist, der zuvor teuren Supercomputern vorbehalten war.
5.3 Vergleich von Benchmarks Wir wollen jetzt die Benchmarks benutzen, um Maschinen hinsichtlich ihrer Leistungsfähigkeit zu vergleichen [2]. Gemessen haben wir die Ablaufzeit [msec] zcpuk von k = 1...4 Kernels auf den Maschinen A und B (s. Abb. 5.7). A
B
zcpu A k zcpu Bk
K1
20
10
02
K2
30
05
06
K3
80
40
02
K4
70
25
≈3 (14/5)
Abb. 5.7 Leistungsvergleichsbeispiel
Es ist völlig klar, dass Maschine B schneller ist, aber der Faktor zcpuA/zpcuB ist bei den verschiedenen Kernels sehr unterschiedlich – im Mittel liegt er bei (2+6+2+3)/4 ≈ 3. Wir könnten natürlich auch die Summe der cpu-Zeiten 4
zcpu X =
∑ zcpu k =1
X k
X = A, B
46
5 Benchmarks oder die Last mit der Last
bilden und diese Werte vergleichen. zcpuA = 200, zcpuB = 80, zcpuB/zcpuA = 5/2 Danach wäre Maschine B nicht ganz so schnell wie beim ersten Vergleich und dieses Ergebnis bleibt natürlich auch erhalten, wenn wir das arithmetische Mittel heranziehen. zcpu A = 200/4 = 50 zcpu B = 80/4 = 20
Eine andere Möglichkeit besteht in der Verwendung des geometrischen Mittels n
zcpu X = n Π zcpu X k k =1
wenn n Messwerte der Maschine X vorliegen. Hinsichtlich unseres Beispiels folgt (n = 4; X = A, B)
zcpu A = 4 20 * 30 * 80 * 70 = 4 10 4 * 2 4 * 21 = 204 21 ≈ 20 *
17 85 ≈ ≈ 42 8 2
zcpu B = 4 10 * 5 * 40 * 25 = 4 2 4 * 5 4 * 5 = 104 5 ≈
85 2 ≈ 15 8
Für den Vergleich ist nur das Verhältnis (zcpu A / zcpu B ) = 204 21 / 104 5 = 2
21 ≈2 2 5
interessant, es liegt ca. 40% über dem direkten Mittelwertvergleich und näher am B Mittelwert 3 der Verhältnisse cpu A k / cpu k von Abb. 5.7.
5.3 Vergleich von Benchmarks
47
B Hätten wir nicht das arithmetische Mittel der Quotienten zcpu A k / zcpu k in Abb. 5.7 gewählt, sondern das geometrische Mittel, wäre natürlich wegen
4 4
A A zcpu1A * zcpu A 2 * zcpu 3 * zcpu 4
zcpu1B * zcpu B2 * zcpu 3B * zcpu B4
=4
zcpu1A * ... zcpu1B
zcpu A 4 zcpu B4
4
der Wert exakt gleich. Es gilt ganz allgemein, dass bei Reihen von Verhältniszahlen das geometrische Mittel am geeignetsten erscheint, dies gilt auch bei Verteilungen mit einer sehr großen Variationsbreite im Vergleich zum Mittelwert. Wir wollen diese Eigenschaft noch ein wenig genauer demonstrieren und messen unsere Kernels K1–K4 an einer weiteren Maschine C (s. Abb. 5.8). K1 50
zcpuc
K2 10
K3 20
K4 20
Abb. 5.8 Messdaten für die Maschine C
In einem ersten Schritt nehmen wir A als Referenzmaschine und schauen, um wie viel B, C schneller sind. Dazu berechnen wir das arithmetische und geometrische Mittel. In einem zweiten und dritten Schritt wiederholen wir dieses Verfahren mit den Referenzen B, C (s. Abb. 5.9). A
B
C
A
B
C
A
B
C
1 1 1 1
1/2 1/6 1/2 5/14
5/2 1/3 1/4 2/7
2 6 2 14/5
1 1 1 1
5 2 1/2 4/5
2/5 3 4 7/2
1/5 1/2 2 5/4
1 1 1 1
1
3/8
6/7
3
1
2
11/4
1
1
c 1 c
a 1 2 2 a
b
c
a
1/2
2 2
1
b
c
a
b
c 2
b
a 1
2 c
Abb. 5.9 Vergleich der Messdaten, die Mittelwerte sind alle genähert
b
2
a
1 b
} }
arithm. Mittel
geom. Mittel
48
5 Benchmarks oder die Last mit der Last
Zwar weisen beide Mittelwertbildungen bei allen Referenzen (A, B, C) B als die schnellste Maschine aus, aber die Proportionen bleiben beim geometrischen Mittel deutlich besser erhalten. So ist bezüglich des arithmetischen Mittels der Unterschied zwischen B und C bei C als Referenz praktisch völlig verschwunden – es sind sogar gegenteilige Schlüsse/Folgerungen möglich – im Gegensatz zur Methode des geometrischen Mittels.
5.4 Einige statistische Standardmethoden In die gleiche Richtung zielt die Frage nach der Vertrauenswürdigkeit (Konfidenz) der gemessenen und berechneten Mittelwerte. Da von der Methodik her klar geworden sein sollte, dass wir nicht an einer last messen, sondern an mehreren oder sogar vielen, kann die Antwort nur von der Statistik kommen. Deshalb benötigen wir einen kleinen diesbezüglichen Exkurs. Wenn z als Ablaufzeit einer last eine Zufallsvariable darstellt – wir wissen ja als externe Beobachter nicht, wie die Werte in der Black-Box zustande kommen –, dann ist P(z ≤ a) die Wahrscheinlichkeit dafür, dass für den gemessenen Wert gilt z ≤ a. P(z ≤ a) heißt die Verteilungsfunktion von z, ihre Ableitung f (z) =
dP(z ≤ a ) dz
die Dichtefunktion der Wahrscheinlichkeit. Bei gegebenem f(z) folgt z2
∫
P(z1 ≤ z ≤ z 2 ) = dz * f(z) z1
+∞
μ = E(z) =
∫ dz * z * f(z)
/* Mittelwert
−∞
+∞
62 = E((z − μ) 2 ) =
∫ dz(z − μ) f(z) 2
-∞
/* Standardabweichung
5.4 Einige statistische Standardmethoden
49
Für die fast überall anzutreffende Normalverteilung gilt f(z) =
1 σ 2π
−
*e
(z − μ) 2 26 2
wobei μ den Mittelwert und σ die Standardabweichung darstellt (s. Abb. 5.10).
15 10 5 0 μ–σ
μ
μ+σ
z
Abb. 5.10 Normalverteilung
Man muss jetzt sorgfältig zwischen den Begriffen Grundgesamtheit/Population und Stichprobe/Sample unterscheiden. Bei einer Stichprobe kann man Mittelwert z und Standardabweichung σ messen, bei der Grundgesamtheit kann ich diese Parameter (σ, δ) nur schätzen, etwa nach dem Schema P(z1 ≤ μ ≤ z2) = 1 – α d. h. die Wahrscheinlichkeit für μ zwischen z1 und z2 zu liegen ist 1 – α. Das Intervall [z1, z2] heißt Konfidenzintervall, α das Signifikanzniveau – typische Werte sind α = 0,1, 0,05 oder 0,01. Die Bestimmung des Konfidenzintervalls bei vorgegebenem α kann auf die Normalverteilung zurückgeführt werden (zentraler Grenzwertsatz der Statistik), bei 100(1 – α)% Konfidenz folgt s s [z1, z 2 ] = [z − z1− α / 2 * , z + z1− α / 2 ] n n wobei n der Stichprobenumfang und z1–α/2 das (1 – α/2)-Quantil der Einheitsnormalverteilung darstellt (s. Abb. 5.11).
50
5 Benchmarks oder die Last mit der Last
15 10 1 – α/2
5 α/2
0 zp
= 1 – α/2
Abb. 5.11 Normalverteilung und Quantile
Für unsere Messung an der Maschine A (s. Abb. 5.7) folgt B1 Messwerte z = (20, 30, 80, 70)
90% Vertrauenswürdigkeit, d. h. 10% Irrtum und damit α = 0,1 p = 1 – α/2 = 0,95 zP = 1,7, dieser Wert wird einer Tabelle entnommen
z = 50, s(z) ≈ 30, n = 4 zP *
s( z) n
≈ 1,7 *
30 4
≈ 25
Damit liegt mit 90%iger Sicherheit der Mittelwert im Intervall [25, 75]. Einige zP-Werte sind in der Abb. 5.12 aufgeführt. Konfidenzniveau 90% 95% 98% 99% Abb. 5.12 Konfidenztabelle
α
α/2
zP = 1 – α/2
0,10 0,05 0,02 0,01
0,050 0,025 0,010 0,005
1,7 2,0 2,3 2,6
5.4 Einige statistische Standardmethoden
51
Soll etwa für Maschine B mit einer Irrtumswahrscheinlichkeit von 1% das Konfidenzintervall geschätzt werden, so folgt: z = 20, s = 18, zP = 2,6, zP*s/√n ≈ 23 => [z1, z2] = [-3, 43]. Für kleinere Werte von n, wie etwa in den beiden obigen Beispielen, sollte man eher die sogenannte normalisierte t-Verteilung benutzen, die von n - 1 und nicht von n abhängig ist (s. Abb. 5.13).
15 10
1–α
5 0
α/2
α/2 -t^
0
^ +t
Abb. 5.13 Normalisierte t-Verteilung
Dabei wird z1–α/2 ersetzt durch ˆt = t[1−α / 2,n −1] , welches ebenfalls einer Tabelle entnommen werden muss. Besonders geeignet ist dieses Verfahren/Schema, wenn zwei Messreihen u = (u1...u2) und v = (v1...v2) über den Mittelwert miteinander verglichen werden sollen. Wir bilden die Differenzreihe z = (u1 – v1, u2 – v2,..., un – vn) und berechnen, ob in einem vernünftigen Konfidenzintervall [z1, z2] die Null enthalten ist, also z1 ≤ 0 ≤ z2. Dies funktioniert natürlich nur bei gleichem Stichprobenumfang von u, v und identischen Messungen, bei ungleichem oder ungepaartem Umfang muss modifiziert vorgegangen werden. B2
zcpu (B) = (10, 5, 40, 25) zcpu (C) = (50, 10, 20, 20) Differenzbildung zcpu (z) = (-40, -5, 20, 5) Mittelwert zcpu (z) = -20/4 = -5 Standardabweichung
52
5 Benchmarks oder die Last mit der Last
1 ((−40 + 5) 2 + (−5 + 5) 2 + (20 + 5) 2 + (5 + 5) 2 ) 4 −1 = 5 2 * 26
s 2 (z) =
s(z) ≈ 25 Diese große Standardabweichung und die geringe Fallzahl legen es nahe, an die Irrtumswahrscheinlichkeit nicht so hohe Anforderungen zu stellen, wir wählen α = 0,1 (10%).
t = t[1− α / 2, n −1] = t[ 0,95,3] ≈ 2,4 8
25 12 ≈ * 25 ≈ 30 2 10 n z1 = −5 − 30, z 2 = −5 + 30 t*
≈ 2,4 *
[z1, z2] = [-35, 25], dieses Intervall enthält mit 10% Irrtum die Null, d.h. die Mittelwerte zcpu(B), zcpu(C) sind auf diesem Niveau nicht verschieden. Wählen wir die gleiche Methode, um die Maschinen A, B auf der Basis der mittleren Ablaufzeit zu vergleichen, so ergibt sich z1 = 30 – 18 = 12 und z2 = 30 + 18 = 48. Das bedeutet 0 ∉ [12, 48] und beide Mittelwerte sind statistisch verschieden.
Wie bereits erwähnt, muss bei Messungen mit ungleichem Umfang na ≠ nb etwas anders vorgegangen werden. Zunächst berechnet man in jeder Gruppe die Mittelwerte (z A , z B ) und Standardabweichungen (sA, sB). Dann wird die Mittelwertdifferenz z = z A − z B und deren Standardabweichung s = (sA2/nA + sB2/nB)½ bestimmt. Entscheidend ist jetzt die effektive Anzahl von Freiheitsgraden
n eff =
s2 ⎛ s2 1 * ⎜⎜ A nA +1 ⎝ nA
⎞ ⎛ 2 ⎞ ⎟ + 1 *⎜ sB ⎟ ⎟ n +1 ⎜ n ⎟ B ⎠ ⎝ B⎠
2
denn über diesen Wert neff wird jetzt das t-Quantil ˆt = t [1−α / 2,n eff ] berechnet und (z A − z B ) ± ˆt ergibt das Konfidenzintervall. Die Schlussweise mit der Lage der Null ist identisch.
6 Messbare Leistungsgesetze
Wir wollen jetzt die Ansätze von früheren Abschnitten „Einfache Leistungsmaße“ und „Gesetze von Little“ wieder aufnehmen. Es wurde dort davon ausgegangen, das zu analysierende System als Black-Box zu betrachten und aus den zu messenden Variablen einfache Leistungsgrößen abzuleiten. Im Folgenden sollen daraus konsequent Leistungsgesetze, ähnlich denen von Little, abgeleitet werden. Diese sollten auch direkten Messungen zugänglich sein (Operational Laws) – und zwar einmal für das System als Ganzes sowie in einem zweiten Schritt für Teilsysteme, welche das vollständige System bilden [2].
6.1 Herleitung des globalen Auslastungsgesetzes Eine differenzierte Betrachtung der Last tritt bei der Herleitung in den Hintergrund, uns interessieren lediglich die Zahl #ank der Ankünfte im Beobachtungsintervall tM, die Anzahl der erledigten Aufträge #erl und die Zahl tA, in der das System aktiv (busy) ist (s. Abb. 6.1).
tM
0
t tA #ank
Abb. 6.1 Mess- und Aktivzeiten
#erl
54
6 Messbare Leistungsgesetze
Selbstverständlich kann tA aus mehreren Teilintervallen zusammengesetzt sein. Als erste abgeleitete Größe definieren wir die Auslastung ρ = tA/tM als das Verhältnis der aktiven Zeit zur Beobachtungszeit (Verweilzeit) – später wird gezeigt, dass dies mit der früheren Definition übereinstimmt. Die zweite auch schon früher abgeleitete Größe ist der Durchsatz D als das Verhältnis von erledigten Aufträgen #erl zum Beobachtungsintervall tM: D = #erl / tM Vor dem Hintergrund, dass relative (prozentuale) Angaben besser zu verstehen sind als absolute, formulieren wir jetzt das sogenannte 1. Auslastungsgesetz: nach Definition: ρ=
tA t # erl t = A * = A *D t M # erl t M # erl
tA/#erl ≈ mittlere aktive Zeit eines Auftrags, wir definieren tS:= tA/#erl (Service-Zeit) => ρ = tS * D
Die mittlere aktive Zeit eines Auftrags entspricht unserer früheren mittleren Bearbeitungszeit. B1 Ein Netz-Gateway habe einen Durchsatz von D = 125 Paketen pro Sekunde und jedes Paket eine Forwarding-/Service-Zeit von tS = 0,002 [sec]. ρ = tS*D = 0,002*125 = 0,25 Damit ergibt sich eine Auslastung von 25%.
6.2 Lokale Auslastungsgesetze und die Flaschenhals-Analyse
55
6.2 Lokale Auslastungsgesetze und die Flaschenhals-Analyse Besteht jetzt unser System aus n Teilsystemen, die ebenfalls nach dem Black-BoxPrinzip funktionieren, so liegt es sofort nahe, auf diese ebenfalls das Auslastungsgesetz anzuwenden und von jedem die mittlere aktive Zeit tS(k) sowie den Durchsatz Dk zu bestimmen. Für die Auslastungen folgt ρk = tS(k)*Dk, k = 1…n ohne dass man sich zunächst über die Beziehungen der Subsysteme untereinander Gedanken machen muss. Damit gibt es jetzt die Möglichkeit, Systemengpässe aufzudecken, denn eine hohe Auslastung einer oder mehrerer Teilsysteme führt zu einem verminderten Fluss der Aufträge, d. h. max{ρ1, ρ2,...ρn–1, ρn} bestimmt den führenden Flaschenhals (bottleneck). B2 System = {cpu, disk-A, disk-B} ρ(System) = {ρcpu= 0,3, ρdA= 0,4, ρdB= 0,7} => Flaschenhals:= disk-B
Ausgehend von dem Teilsystemansatz soll jetzt ein weiteres Auslastungsgesetz entwickelt werden, und zwar mit der Zielrichtung, den Durchsatz D des Gesamtsystems mit dem der i-ten Komponente zu verknüpfen:
fest
#last
ist die Anzahl der zu erledigenden Aufträge
#lasti
ist der Anteil der Aufträge in den i-ten Komponente (Subsystem), für große Zeiten und im statistischen Gleichgewicht ist dies eine zeitunabhängige Konstante
vi =
# last i definiert den Anteil im statistischen Gleichgewicht # last
Di =
# last i legt sinnvollerweise den Durchsatz der i-ten Komponente tM
56
6 Messbare Leistungsgesetze
# last i # last i # last da wir möglichst relative Größen nehmen * = tM tM # last
vi
D
=> Di = vi*D, i = 1…n
Die Größe vi in diesem zweiten Auslastungsgesetz heißt Besuchshäufigkeit (visit ratio); erfordert z. B. eine Datenbanktransaktion 7 Plattenzugriffe (I/O), so wird man v(I/O) = 7 setzen. Eine andere Form des Gesetzes erhält man, wenn wir dieses mit ρi = tS(i)*Di kombinieren ρi = tS(i)*Di = tS(i)*vi*D und eine neue Größe ^tS(i) = tS(i)*vi, die Service-Demand-Zeit einführen: ρi = ^tS(i)*D, i = 1…n Misst man also den Gesamtdurchsatz sowie die Service-Demand-Zeiten ^tS(i) so kennt man die Auslastungen ρi und kann mit max(ρ1...ρn) die Engpass-Analyse durchführen. B3 Ein System besteht aus Terminals T, einem Terminal-Server S und zwei Platteneinheiten A, B. Jedes Terminal beansprucht S und führt ca. 100 I/Os auf B und ca. 80 I/Os auf A aus. Pro I/O benötigt A 50 [msec] und B 25 [msec], der Server braucht 1/120 [sec] zur Kontrolle jeder IO. Der Durchsatz der Platte A sei 16 [I/O/sec]. Es wird das Programm der Engpass-Analyse durchgeführt. Service- bzw. Aktiv-Zeiten: tS = (tS(S), tS(A), tS(B)) = (1/120, 1/20, 1/40) [sec] Besuchshäufigkeiten: vA = 80; vB = 100; vS = 1 + 80 + 100 ≈ 180, denn jede IO braucht den Server zur Kontrolle
6.3 Die Segmentierung von Systemen
57
Service-Demand-Zeiten: tS =^ (vS*tS(S), vA*tS(A), vB*tS(B)) =(
3 5 , 4, ) [sec] 2 2
Di = vi*D (i = S, A, B)
=> D = DA/vA =
16 1 = [sec–1] 80 5
^ ^ ^ tS(B)*D) ρ = (tS(S)*D, tS(A)*D, Es gilt 3 4 1 1 5 1 3 1 ρ = ( * , 4* , * ) = ( , , ) 10 5 2 5 2 5 2 5
Damit ist die Platte A mit einer Auslastung von 80% der Engpass.
6.3 Die Segmentierung von Systemen Die Besuchshäufigkeiten vi=1...n und die damit gerade abgeleiteten Größen sind eine einfache und transparente Methode, um die Inanspruchnahme von Teilsystemen zu beschreiben – man muss sich aber darüber im Klaren sein, dass über die Reihenfolge, in welcher die Teilsysteme durchlaufen werden, nichts ausgesagt werden kann. Kommt es aber genau auf diesen Blickwinkel an – nämlich eine Struktur auf den Teilsystemen einzuführen –, so kann man in einem ersten Schritt Übergangswahrscheinlichkeiten pij zwischen den Komponenten einführen (s. Abb. 6.2).
Subsystem i
Subsystem j 0≤ pij ≤ 1
Abb. 6.2 Definition der Übergangswahrscheinlichkeit
Dieses entspricht wiederum dem Black-Box-Konzept, da man ja auf eine genaue Kenntnis der internen Strukturen von Teilsystemen und Aufträgen bewusst verzichtet. Betrachten wir zur besseren Illustration eine Modifizierung von Beispiel B3, indem wir zu dem Server S, den Platten A, B, den Terminals T noch eine Kontrolleinheit C hinzufügen (s. Abb. 6.3).
58
6 Messbare Leistungsgesetze
p12
p24 A(2) p41
p01 T(0)
S(1)
C(4)
B(3) p34
p13
p40 Abb. 6.3 Beispiel eines strukturierten Modells
Dadurch – die Einführung von C – erreichen wir, dass die Aufträge an die Platten A, B entweder an den Server oder als beendet an die Terminals zurückgegeben werden. Die Matrix P der Übergangswahrscheinlichkeiten hat die in Abb. 6.4 dargestellte Struktur. T
S
A
B
C
0
1
2
3
4
T
0
ø
p01
ø
ø
ø
S
1
ø
ø
p12
p13
ø
A
2
ø
ø
ø
ø
p24
B
3
ø
ø
ø
ø
p34
C
4
p40
p41
ø
ø
ø
Abb. 6.4 Übergangsmatrix zu Abbildung 6.3
Da die Übergänge 01, 24, 34 mit Sicherheit stattfinden, sind die entsprechenden Wahrscheinlichkeiten 1. Die Last #lasti in der i-ten Komponente ist jetzt allerdings nicht mehr frei wählbar, sondern hängt von allen Wegen (Übergängen) ab, über welche diese Komponente erreichbar ist:
6.3 Die Segmentierung von Systemen
59
#last1 = p01*#last0 + p41*#last4 #last2 = p12*#last1 #last3 = p13*#last1 #last4 = p24*#last2 + p34*#last3 Da keine Aufträge verloren gehen, muss gelten p12 + p13 = 1 sowie p41 + p40 = 1. Mit p01 = p24 = p34 = 1 ergibt sich folgende Lösung:
#last1 = (1/p40)*#last0 #last2 = (p12/p40)*#last0
#last3 = ((1 - p12)/p40)*#last0 #last4 = (1/p40)*#last0
Da wir am Beginn dieses Abschnitts betont haben, dass relative Größen im Vordergrund stehen, dividieren wir durch #last0 als externe Quelle und erhalten die Besuchshäufigkeiten vi = #lasti / #last0: (v1, v2, v3, v4) = (1/p40, p12/p40, (1 – p12)/p40, 1/p40) Diese sind im Prinzip zeitabhängig; im Gleichgewicht und bei großen Zeiten können wir jedoch annehmen #lasti(t) ≈ #lasti(t + ∆t) und damit ist #lasti eine Konstante. Damit sind wir in der Lage, die Engpass-Analyse wie bereits skizziert durchzuführen; es wird zur Demonstration noch einmal auf Abb. 6.3 zurückgegriffen: B4 Wir identifizieren den Server von Abb. 6.3 mit 1, die Platten A, B mit 2, 3 und den Controller C mit 4. Die Service-Zeiten sind: tS(1) = 1/120, tS(2) = 1/20, tS(3) = 1/40, tS(4) = 1/100 und für die Übergangswahrscheinlichkeiten nehmen wir an: p12 = 2/5, p13 = 3/5, p40 = 1/200. Die analytischen Ausdrücke für (v1, v2, v3, v4) haben wir schon berechnet, mit den konkreten p-Werten folgt: (v1, v2, v3, v4) = (200, 80, 120, 200)
60
6 Messbare Leistungsgesetze
Jetzt benötigen wir die Service-Demand-Zeiten ^tS(i) = vi*tS(i) ^t = (200/120, 80/20, 120/40, 200/100) = (5/3, 4, 3, 2) [sec] S Für den Durchsatz der Platte A gilt 16 I/O-req/sec = DA = vA*D = 80*D
=> D = 1/5
und für die Auslastungen ρ = ^tS*D = (1/3, 4/5, 3/5, 2/5) In diesem System sind Platte A zu 80% und Platte B zu 60% ausgelastet und damit im Engpass-Bereich.
Sehr einfach lassen sich mit dieser Methode die Auswirkungen von Konfigurationsänderungen abschätzen, wir zeigen dies an einem Beispiel B5 System = {Server, Disk-A, Disk-B}, wobei ts(A) = k*ts(B); k > 0, d. h. B ist das schnellere Plattensystem. Vonseiten des Servers gibt es weniger Zugriffe auf A, d. h. vA = αvB mit α < 1. vS = 1 + vA + vB = 1 + αvB + vB = 1 + (α + 1) vB ~ (α + 1) vB
G
Auslastungssvektor ρ = (ρS, ρA, ρB) = (tS(S)*vS*D, tS(A)*vA*D, tS(B)*vB*D) G ρ = ((1 + α) tS(S), k*αtS(B), tS(B))*vB*D
D. h. wenn α*k < 1, α < 1/k, dann ist B trotz der größeren Geschwindigkeit ein Engpass! Was würde die Verlagerung auf B bringen? v’A = 0, v’B = vA + vB= αvB + vB= (α + 1) vB v’S = 1 + v’A + v’B ~ (1 + α) vB ρ' = [(1 + α) tS(S), 0, (1 + α) tS(S)]*vB*D
d. h. die Auslastung von B erhöht sich um α < 1. Analysieren wir die Verlagerung auf A mit v’’B = 0, v’’A = (α + 1) vB v’’S = 1 + v’’A + v’’B ~ (α + 1) vB:
6.4 Das Central-Server-System
61
ρ' ' = [(α + 1) tS(S), (α + 1) k tS(B), 0]*vB*D
Die Auslastung dieser Konfiguration ist bezüglich der Platten um den Faktor k größer und deshalb ungeeignet!
Wenn #last = (#last0, #last1,..., #lastn) den Vektor der Teillasten in den Komponenten/Subsystemen darstellt, dann ist das eben diskutierte Verfahren nichts anderes als die Lösung eines linearen Gleichungssystems n
# last j =
∑p
ij * last i
, j = 0,1,...n
i =0
Wir dividieren durch #last0 und erhalten # last j # last 0
n
=
vj =
∑p
ij *
∑p
ij * vi
i =0 n
# last i # last 0 mit v0 = 1
i =0
G Wenn v =(1, v1, v2,..., vn) der Vektor der relativen Besuchshäufigkeiten und P die Matrix der Übergangswahrscheinlichkeiten, dann hat man die elegantere Form G G v = vP , d. h. man sucht zu P den Eigenvektor mit dem Eigenwert 1.
6.4 Das Central-Server-System Eines der am häufigsten verwandten Konzepte ist in diesem Zusammenhang das sogenannte „Central-Server-Modell“, bei dem die zu erledigenden Aufträge von einer Quelle S0 in einem Server S1 laufen, welcher sie anschließend an Arbeitsstationen (Clienten) S2….Sn verteilt. Die dort erledigten Aufträge werden dann wieder an den Server zurückgegeben (s. Abb. 6.5).
62
6 Messbare Leistungsgesetze
S2 p21 = 1
p12 P31 = 1
p01
S0
S1
p13
S3
pn1 = 1
p1n Sn Abb. 6.5 Struktur des Central-Server-Modells
Die Übergänge Si Æ Sk sind mit Wahrscheinlichkeiten pik „belegt“ und können damit in folgender Matrix P zusammengefasst werden: 0
1
2
3
…
n
0
0
1
0
0
0
1
p10
p11
p12
p13
p1n
2
0
1
0
0
0
3
0
1
0
0
0
0
1
0
0
0
… n
G
Der Vektor v = (v0, v1, v2, …, vn)= (1, v1, v2, …, vn) bestimmt sich nach den G G obigen Ausführungen über v = v * P; wir demonstrieren das Prinzip an einem kleinen Beispiel mit n = 2:
6.4 Das Central-Server-System
63
B6 Modell p10 = 1/2
p21 = 1
Terminal (0) Disk (2)
Server (1) p01 = 1
p12 = 1/4 p11 = 1/4
1 0 ⎞ ⎛0 ⎛ 0 ⎜ ⎟ ⎜1 Matrix P ⎜ p01 p11 p12 ⎟ = ⎜ ⎜2 ⎜ 0 1 0 ⎟⎠ ⎜⎝ 0 ⎝
1 1 4 1
0⎞ 1⎟ ⎟ 4⎟ 0 ⎟⎠
G G v = v*P ⎛ 0 ⎜ (1, v1, v2)= (1, v1, v2) ⎜ p10 ⎜ 0 ⎝
1 p11 1
0 ⎞ ⎟ p12 ⎟ 0 ⎟⎠
1 = 1*0 + v1*p10 + v2*0 = v1*p10 Æ v1 = 1/ p10 = 1/(1/2) = 2 v1 = 1*1 + v1*p11 + v2*1 = 1 + p11*v1 + v2 v2 = 1*0 + v1*p12 + v2*0 = v1*p12 Æ v2 = (p12/p10) = (1/4)/(1/2) = 1/2 Bei vorgegebenem Gesamtdurchsatz D folgt D1(Server) = v1*D = 2*D und D2(Disk) = v2*D = (1/2)*D, sodass die Auslastung sich zu ρ1 = 2*ts(1)*D, ρ2 = (1/2)*ts(2)*D G ρ = (4*ts(1), ts(2))*D/2
ergeben. Da eine Terminaltransaktion hardwarebedingt mehr Servicezeit ts(2) auf der Platte benötigt, wird diese, trotz des Vorfaktors 4 beim Server, die Auslastung des Systems bestimmen.
64
6 Messbare Leistungsgesetze
6.5 Das verallgemeinerte Antwortzeit-Gesetz Eine interessante Variante des gerade beschriebenen Analysekonzepts erhält man unter Einbeziehung der Little’schen Gesetze:= λ *
und
= λ *
wobei λ die Ankunftsrate der Aufträge,und die mittlere Verweil- bzw. Wartezeit sowie und die Anzahl der Aufträge im System bzw. im Wartezustand darstellen. Diese Gesetze sind zunächst für das ganze System gültig, aber es gibt keinen Grund, sie geeignet auf Subsysteme zu übertragen und dabei das Konzept der Übergangswahrscheinlichkeiten pij (von Subsystem i nach Subsystem j) beizubehalten. Wir führen die Idee an einem sehr einfachen Beispiel aus: B7 λ1
• 1
•
λ2
2
p12 λ1 = Rate der Aufträge nach Subsystem 1 λ2 = Rate der Aufträge nach Subsystem 2 λ1 kann nur die Gesamtlast E der externen Aufträge pro Zeiteinheit sein, λ1 = E + 0*λ1 + 0*λ2 λ2 hat keinen externen Zufluss und nur einen Betrag von Subsystem 1, also λ2 = 0 + 1*λ1 + 0*λ2, denn p12 = 1 in Vektor- und Matrixschreibweise: (λ1, λ2) = (E,0) + (λ1, λ2) 0
1
0
0
klarerweise sind die Lösungen λ1 = λ2 = E und wir können „Little“ auf Subsystem 1, 2 anwenden:
6.5 Das verallgemeinerte Antwortzeit-Gesetz
= λ1* = E
65
;= λ2 ; = E
G Das Prinzip der Verallgemeinerung liegt auf der Hand. Ist λ = (λ1, λ2, λ3,...λn) G der Vektor der internen Zuflussraten (λi Rate auf den Knoten i), E = (E1, E2, E3,...En) der Vektor der externen Zuflussraten (Ei Zahl der externen Aufträge pro Zeiteinheit auf Knoten i) und P die n*n-Matrix der Übergangswahrscheinlichkeiten, so folgt: G G G λ = E + λ *P
d. h. wir haben im Gleichgewicht, das ist die einzige Voraussetzung für „Little“, ein einfaches inhomogenes lineares Gleichungssystem. Zur Demonstration greifen wir auf das Beispiel B4 zurück: B8 p12 =2/5
p24 =1 A(2)
p41 =199/200 E
S(1)
C(4)
B(3) p13 =3/5
p34 =1
G Wir haben 4 Komponenten und damit 4 Zuflussraten λ = (λ1, λ2, λ3, λ4), nur auf Komponente S(1) haben wir den Zufluss der externen Aufträge G E = (E, 0, 0, 0). Die Matrix P der Übergangswahrscheinlichkeiten ist
0
p12
1-p12
0
0
0
0
1
0
0
0
1
p41
0
0
0
G G G und somit ist λ = E + λ * P zu lösen.
66
6 Messbare Leistungsgesetze
λ1 = E + λ 4 * p 41 =
E = 200E 1 − p 41
λ 3 = 0 + λ1 * (1 − p12 ) =
λ 2 = 0 + λ1 * p12 =
p12 E = 80E 1 − p 41
1 − p12 E = 120E λ 4 = 0 + λ 2 + λ 3 = 200E 1 − p 41
Vergleichen wir die Koeffizienten von E für λ1...λ4, so sind diese nichts anderes als die relativen Besuchshäufigkeiten von B4, E ist der Gesamtdurchsatz D und λ1...λ4 die Durchsätze D1...D4 der Subsysteme. Das liegt daran, dass im Gleichgewicht der maximale Durchsatz erreicht wird und dieser per se nicht größer als das Angebot sein kann. Gelingt es uns, (ki) (i = 1...4), die mittlere Anzahl von Aufträgen im Subsystem i, zu messen, kann über Little= λi * leicht die mittlere Verweilzeit in der Subkomponente i bestimmt werden.
Die Verallgemeinerung dieses Beispiels auf n Teil-/Subsysteme liegt auf der Hand. Die mittlere Zahl von Aufträgen im Gesamtsystemist natürlich die Summe der Aufträge in den Teilsystemen = + +... + Andererseits ist = λ* = D* (Letzteres im Gleichgewicht) und = λi* . Eingesetzt in die obige Summe folgt λi = Di: D* < t V >= D1 < t (V1) > + D 2 < t (V2) > +... + D n < t (Vn ) >
< t V >=
D1 D D < t (V1) > + 2 < t (V2) > +... + n < t (Vn ) > D D D
Nach dem zweiten Auslastungsgesetz ist Di = vi*D und somit Di/D = vi. Damit erhalten wir das Antwortzeit-Gesetz < t V >= v1 < t (V1) > + v 2 < t (V2) > +... + v n < t (Vn ) > ,
welches in der englischsprachigen Literatur als “General Response Law“ bekannt ist.
6.6 Dialogsysteme
67
Bei den bisher behandelten Leistungsgesetzen vom operationalen Typ für Systeme, welche aus Subsystemen i = 1...n aufgebaut sind, lassen sich drei Ausrichtungen feststellen: lokale Gültigkeit auf Teilsystemen • Auslastung
ρ i = t S(i ) * D i , i = 1...n
• Antwortzeit
< k i > =< t (Vi ) > * D i , i = 1...n
globale/lokale Gültigkeit, d. h. Verknüpfung von lokalen Größen und globalen • Flussgesetz
D i = v i * D i bzw. ρi = ˆt S(i ) * D
• Antwortzeit
< t V >=
n
∑v *< t i
(i ) v
>
i =1
globale Gültigkeit für das ganze System • Auslastung
ρ = tS * D
• Antwortzeit
< k > = < t V > * D wobei D = λ
6.6 Dialogsysteme Zur Abrundung dieses Analysespektrums sollen noch ein weiteres globales Leistungsgesetz und einige Abschätzungen vorgestellt werden. Das noch fehlende Gesetz ergänzt die Analyse der Antwortzeitund bezieht sich hauptsächlich auf interaktive Systeme wie wir sie bei Server/Client-Architekturen finden. Es soll nach dem bereits öfter erprobten Schema schrittweise abgeleitet werden: • Server N Clienten • der Client schickt eine Forderung (req), das System braucht im Mittel die Antwortzeit , über diese Zeit wollen wir eine Aussage • hat der Client eine Antwort auf die Forderung (req) erhalten, denkt er die mittlere Zeitspanne , bevor er eine weitere Forderung startet • die Gesamtzeit für eine Forderung ist also + • in der Beobachtungszeit tM hat man damit pro Benutzer im Mittel tM # req = < t V > + < t idle > Forderungen, bei N Clienten sind es N*#req • der Durchsatz D des Gesamtsystems in der Beobachtungszeit tM ist somit N*# req N D= = < t M > < t V > + < t idle >
68
6 Messbare Leistungsgesetze
• ist der Durchsatz D schon bekannt, etwa über D = Dk/vk im k-ten Subsystem, können wir nachauflösen und erhalten mit N < t V >= − < t idle > D das gesuchte Antwortzeit-Gesetz. Man muss dabei berücksichtigen, dass es hierbei um Mittelwerte geht, die eine entsprechende Statistik voraussetzen. Die Abhängigkeiten vom Durchsatz D und der Nutzerzahl N dürften unmittelbar einsichtig sein – hinsichtlich der Denkzeit ist klar, dass eine Abnahme/Verminderung die Belastung erhöht und damit die mittlere Antwortzeit verlängert. Die Verknüpfung mit dem Gesetz von Little λ * = = D * , wobei die mittlere Anzahl von Aufträgen (req) im System ist, erhellt diesen Sachverhalt vielleicht etwas besser: = D * = D*(N/D - ) = N – D* d. h. die obere Schranke für die mittlere Anzahl von Prozessen ist N und D* gibt den Wegfall durch die Denkzeit an. B9 Terminal-Beispiel von B4 mit folgenden Ergänzungen: D = 2/5; N = 20; = 5 [sec] < t V >=
20 − 5 = 45 [sec] 2/5
< k >= N − D* < t idle >= 20 − (2 / 5) * 5 = 18
Aufgrund der doch etwas einfachen Argumentation bei der Ableitung dieses Antwortzeit-Gesetzes vom globalen Typ, kann natürlich die Abhängigkeit D(N), also des Durchsatzes von der Nutzerzahl, nicht eingebracht werden. Einige wichtige Abschätzungen in dieser Richtung liefert jedoch die folgende Analyse: (k )
• für die Auslastung ρk jeder Komponente k = 1...n gilt ρk ≤ 1; ρk = t S * D k (k )
also Dk* t S
≤ 1; da der Durchsatz des Gesamtsystems durch das Maximum
6.6 Dialogsysteme
69
der Durchsätze der Subsysteme k festgelegt wird – dies impliziert eine minima(k )
le Service-Zeit t S
D max ≤
–, folgt
1 min(t s(1) ,..., t s( n ) )
Die Existenz eines solchen maximalen Durchsatzes entspricht der Beobachtung an realen Systemen, dass mit wachsendem N keine wesentliche Durchsatzsteigerung mehr zu beobachten ist. • das Antwortzeit-Gesetz
D( N ) =
< t V >=
N − < t idle > wird umgeformt D
N N ; ≤ < t V ( N) > + < t idle > < t V (1) > + < t idle >
die Abschätzung tV(1) ≤ tV(N) ist intuitiv klar, eine wachsende Zahl von Nutzern bedingt eine steigende Antwortzeit bei gleichbleibender Systemleistung. Die Größe tV(1) kennen wir bereits, es gilt tV(1) = v1 * t v + ... + v n t v (1)
(n )
(ge-
neral response law). • die gemeinsame Betrachtung der Ungleichungen D(N) ≤ Dmax und D(N) ≤ aN, wobei a = 1/(+ ), so erhält man den in Abb. 6.6 dargestellten Verlauf 4 D(N) 3,5 3 2,5 Dmax 2 1,5 1 0,5 0 Jan
a*N
D(N)
Feb
Mrz
Apr
N* Mai
Abb. 6.6 Verhalten des Durchsatzes von der Clientenzahl N
Jun
N
70
6 Messbare Leistungsgesetze
• der Punkt N*, D(N*) = Dmax definiert den Sättigungspunkt, von dem an keine wesentliche Durchsatzsteigerung mehr zu erwarten ist. Dmax = aN* => N* = Dmax/a N* =
< t V (1) > + < t idle > min(t s(1) ... t s( n ) )
Zur Illustration des Ablaufs greifen wir auf die Werte von B4 und B8 zurück:
B10= 5 [sec]; ts = (2, 2, 1, 0,02), da der Controller keine relevante Rolle spielt, wird sein Beitrag vernachlässigt: min(2, 2, 1) = 1 und damit Dmax = 1 [req/sec].
= 2 + 2 + 1 = 5 N* = (5 + 5) / 1 = 10, d. h. für N* > 10 ist keine Durchsatzsteigerung mehr zu beobachten und die Antwortzeit wird steigen!
Dieses Sättigungsverhalten des Durchsatzes auf Kosten der Antwortzeit legt es nahe, für letztere in ähnlicher Weise Abschätzungen zu finden (s. Abb. 6.7). Eine untere Schranke konnten wir schon angeben: (≤ ) für alle N ≥ 1. Eine N weitere erhalten wir über das Antwortzeit-Gesetz < t V ( N) >= − < t idle > . D( N ) Da D(N) ≤ Dmax folgt in der Kombination
≥ (N/Dmax) -≥ N*min(tS(1)... tS(n)) -
und somit:≥ max( , N*min(tS(1)... tS(n)) - )
6.6 Dialogsysteme
15
71
10 5
0
N N**
-5
-Abb. 6.7 Antwortzeit in Abhängigkeit von der Clientenzahl N
Der Punkt N** kennzeichnet die Menge von Nutzern/Terminals, ab der die Antwortzeit überproportional ansteigt und die Bildung von Warteschlangen signalisiert. Es gilt= min(tS(1)... tS(n))* N** – und damit N ** =
< t V (1) > + < t idle > min(t s(1) ... t s( n ) )
= N*
d. h. N** entspricht dem Sättigungspunkt beim Durchsatz. Dies entspricht einer dualen Situation in der linearen Optimierung, ein duales Min/Max-Problem hat genau einen solchen gemeinsamen Punkt. B11 Wir nehmen die Situation wie in B9 und B10 an und fragen wie viel Terminals N wir zulassen können, damit die Antwortzeit≤ 20 sec?
= 5 [sec]; = 5 [sec] min(2, 2, 1) = 1
≥ max(5, 1*N - 5) N – 5 ≥ 20 => N ≥ 25
≤ 20
72
6 Messbare Leistungsgesetze
Damit können wir unser Programm abschließen, mit einfachen und messbaren Größen solche Analysegesetze lokalen und globalen Typs zu entwickeln, die ein Verständnis von offenen Systemen – aufgebaut aus Teilsystemen – hinsichtlich der Leistungsgrößen Durchsatz und Antwortzeit ermöglichen. Die Basis dafür bilden die Gesetze von Little, da sie ein komplexes Verhalten bezüglich der Zeit in Mittelwerten aggregieren.
7 Einfache stochastische Modellvorstellungen
Die Zerlegung eines komplexen DV-Systems in n Subeinheiten (Si, i = 1…n) wie im vorangegangenen Kapitel ist natürlich schon eine Modellierung, und zwar eine, welche der Realität ziemlich nahe kommt. Daran ändert auch die Einführung von Übergangswahrscheinlichkeiten pij zwischen den Teilsystemen Si und Sj nichts, weil von einem virtuellen „externen“ Standpunkt die vielen Aufträge im System sich stochastisch verhalten. Trotzdem gelingt es mit dieser Methode recht gute quantitative Aussagen zu gewinnen. Häufig ist man aber daran gar nicht interessiert, sondern möchte mit einem sehr einfachen und durchschaubaren Vorgehen qualitative Verhaltensweisen des untersuchten Systems bestimmen. Unter diesem Gesichtspunkt bieten die Gesetze von Little und das bereits diskutierte Black-BoxModell einen wesentlich günstigeren Ansatzpunkt.
7.1 Voraussetzungen Bei dem Black-Box-Modell haben wir die Gesamtheit der ankommenden Aufträge [req] durch eine Rate λ [req/Zeit] beschrieben, die Bearbeitung in der Black-Box durch die Rate μ [erlreq/Zeit]. Damit einher ging die Vorstellung, dass die einlaufenden Aufträge in einen Wartepool wandern, dem sie dann für die Verarbeitung entnommen werden. Der innere Zustand ist dann im Prinzip durch die Anzahl k der Aufträge im System gekennzeichnet, allerdings kann man wegen der stochastischen Ankunft und Bearbeitung nur eine Wahrscheinlichkeit pk dafür angeben; natürlich wird diese von der Zeit abhängen pk = pk(t), wobei 0 ≤ pk(t) ≤ 1 für alle k = 0, 1, 2,... n und t ≥ 0 (s. Abb. 7.1).
74
7 Einfache stochastische Modellvorstellungen
λ
μ
pk(t)
Abb. 7.1 Definition der Zustandswahrscheinlichkeit
Gehen wir davon aus, dass das System zum Zeitpunkt t = 0 leer ist p0(t = 0) = 1, dann muss man sich überlegen, wie man von diesem sicheren Zustand zu k > 0 mit pk(t) kommt (s. Abb. 7.2)
? p0(0)=1
pk(t)
0
t
Abb. 7.2 Zeitliche Entwicklung der Zustandswahrscheinlichkeit
Wir engen die vielen Möglichkeiten deutlich ein und beschränken uns auf folgende Systemdynamik, λ
k–1
λ
k μ
k+1
...
μ
Abb. 7.3 Markoff’sches Zustandsmodell
d. h. Übergänge können nur zwischen unmittelbaren Nachbarn stattfinden. Da dies gleichbedeutend damit ist, dass • nur der gegenwärtige Zustand den nächsten beeinflusst – also so eine Art Gedächtnislosigkeit, • die Zeiten zwischen zwei Ankünften exponentiell verteilt sind, ebenso die Bearbeitungszeiten, sind die Bedingungen für einen Markoff-Prozess [8, 9] gegeben und man kann für diese Modelle das ganze Rüstzeug der entsprechenden mathematischen Theorie einsetzen (s. Abb. 7.3). Wir benötigen für unsere Zwecke davon allerdings nur einen sehr bescheidenen Anteil, der im Folgenden skizziert werden soll (s. Abb. 7.4).
7.2 Ableitung der Zeit-Dynamik und Skizze der Lösung
75
Die exponentiell verteilten Zwischenankunftszeiten
0
t2
t1
t
Ankünfte Auftrag 1 und 2 t2 – t1 = tZ Zwischenankunftszeit Abb. 7.4 Definition der Zwischenankunftszeit tZ
genügen der Verteilungsfunktion p (tZ ≤ t) = 1 – e–λt mit den Werten 0 für t = 0 und 1 bei t → ∞ . Die Ableitung nach t ist die Verteilungsdichte
f λ ( t ) :=
dp( t Z ≤ t ) = λ e − λt dt
die wir zur Berechnung des Erwartungswertes brauchen (mittlere Zwischenankunftszeit): ∞
∞
0
0
∫
∫
= dtf λ ( t ) t = dtλte − λt =
1 . λ
Ähnliches gilt für die Verteilung der Bearbeitungszeit: p(tB ≤ t) = 1 – e–μt=
1 μ
7.2 Ableitung der Zeit-Dynamik und Skizze der Lösung Damit können wir zur Dynamik von Abb. 7.3 zurückkehren. Sie besagt, dass die Wahrscheinlichkeiten zwischen den Zuständen k – 1, k und k + 1 mit λ und μ zu jedem Zeitpunkt t miteinander verbunden werden müssen: • die Änderung der Wahrscheinlichkeiten pk(t) ist nichts anderes als die Ableitung pk’(t), • die Beiträge, welche zu einem Anwachsen von pk(t) führen, sind λ*pk–1(t) + μ*pk+1(t), wobei λ, μ die Übergangsraten darstellen, und • die Beiträge, welche zur Abnahme von pk(t) führen, sind -λ*pk(t) – μ*pk(t) = -(λ + μ) pk(t);
76
7 Einfache stochastische Modellvorstellungen
• fassen wir zusammen, so folgt: pk’(t) = λ*pk–1(t) + μ*pk+1(t) – (λ + μ) pk(t); k = 1, 2, 3,... p0’(t) = μ*p1(t) – λ*p0(t) ∞
p0(0) = 1 und
∑ p (t) = 1 für t ≥ 0. k
k =0
Diese Zusammenstellung beschreibt ein rekursives Differenzialgleichungssystem 1. Ordnung, für welches eine vollständige Lösung angegeben werden kann. Solche Gleichungen enthalten immer einen exponentiellen Anteil, den man herauszieht: pk(t) = e–(λ+μ)t qk(t). Setzt man dies in die Differenzialgleichung ein, erhält man für die neue Funktion qk(t) qk’(t) = μ qk+1(t) + λ qk–1(t); k = 1, 2, 3,... k
⎛ λ ⎞2 Mit dem Standardansatz q k ( t ) = ⎜⎜ ⎟⎟ rk ( t ) ⎝μ⎠
entfernt man die Koeffizienten λ und μ:
1 λμ
*
drk ( t ) = rk +1 ( t ) + rk −1 ( t ) dt
Den verbleibenden Koeffizienten λμ dt = μ
1 λμ
schaffen wir durch die Substitution
1 λ λ dt = * 2μ ρdt; wobei ρ = : 2 μ μ 2
drk (t Z ) = rk +1 (t Z ) + rk −1 (t Z ) dt Z
t Z = 2μt ρ
Dies ist die Rekursionsgleichung für die gutmütigen modifizierten BesselFunktionen Ik(tZ).
7.3 Zeitunabhängige Lösungen im Gleichgewicht
77
Damit folgt für das zeitliche Verhalten der Wahrscheinlichkeiten (ohne Berücksichtigung der Normierung):
pk
k (t) ≈ ρ 2 I
− k (t Z )e
1+ ρ 2 ρ
τ
ρ = λ/μ, t Z = 2μt ρ
,
und man kann dann zeigen, dass diese für große Zeiten praktisch konstant sind: lim p k (t) = πk (unabhängig von t); k = 0, 1, 2,... t →∞
lim p' k (t) = 0 ; k = 0, 1, 2,... t →∞
7.3 Zeitunabhängige Lösungen im Gleichgewicht Die obige Situation entspricht einem Gleichgewicht, die Zeitabhängigkeit ist verschwunden p k ( t ) → π k , p' k ( t ) = 0 , so dass die Differenzialgleichungen in einfache Rekursionen bzw. ein lineares Gleichungssystem übergehen 0 = λπk–1 + μπk+1 – (μ + λ)πk ∞
0 = μπ1 – λπ0
∑π
und
k
=1
k =0
Ohne große Schwierigkeiten, schon allein durch Probieren, findet man die Lösungen λ πk = ( ) k π0 = ρk π0 ; k = 1, 2, ... μ ρ := λ / μ
Die noch unbekannte Wahrscheinlichkeit π0 für ein leeres System ergibt sich durch Ausnutzung der Normierungsbedingung 1=
∞
∑ k =0
πk =
∞
∑ k =0
π 0ρ k = π 0
∞
∑ρ
k
k =0
wenn 0 ≤ ρ < 1 π0 = 1 – ρ πk = (1 – ρ)ρk k = 1, 2,...
=
π0 1− ρ
78
7 Einfache stochastische Modellvorstellungen
Diese Wahrscheinlichkeiten πk bilden die Basis, um die Leistungsgrößen des Systems/Modells abzuleiten – interessanterweise hängen sie nur von einem Parameter ρ ab und nicht von den absoluten Größen λ, μ. In Abhängigkeit vom Parameter ρ zeigen die Zustandswahrscheinlichkeiten πk folgendes Verhalten (s. Abb. 7.5):
Abb. 7.5 Verhalten der Zustandswahrscheinlichkeiten
k und wandert gegen 1 bei wachsendem k +1 k, die Wahrscheinlichkeit selber verschwindet. Daraus resultiert, dass Zustände mit hohem k sehr unwahrscheinlich sind. Als erste Leistungsgröße bestimmen wir die mittlere Anzahlvon Aufträgen im System:
Das Maximum von πk ist bei ρmax = k
∞
∞
< k >= ∑ k * π k = (1 − ρ ) ρ ∑ k ρ k − 1 k=0
k =1
∞
d k d ∞ k ρ = (1 − ρ ) ρ (∑ρ ) d ρ k =1 k =1 d ρ d 1 < k >= (1 − ρ ) ρ ( − 1) dρ 1 − ρ < k >= (1 − ρ ) ρ ∑
< k >=
ρ ; 0 ≤ ρ <1 1− ρ
7.3 Zeitunabhängige Lösungen im Gleichgewicht
79
Zusammen mit dem Gesetz von Little λ *= < k > haben wir sofort eine Möglichkeit, die mittlere Verweilzeit eines Auftrags im System auszurechnen < t V >=
1 1 ρ * < k >= * λ λ 1− ρ
natürlich gilt dies auch für die Subsysteme. B1 Ein Gateway zwischen zwei Netzen erfülle die Voraussetzungen für unser theoretisches Modell. Der Strom der einlaufenden Datenpakete wird durch λ = 250 [Pakete/sec] beschrieben, im Mittel werden= 2 msec zum Weiterleiten benötigt.
= 2*10–3 [sec] => μ = 1/ = 500 [Pakete/sec] als Verarbeitungsrate ρ = λ/μ = 250/500 = 1/2, also 50% Auslastung < k >=
ρ 1/ 2 = = 1 ; im Mittel ist also ein Paket im Gateway λ − ρ 1 − 1/ 2
= (1/λ)* = (1/250)*1 = 4 msec Ein Datenpaket verbringt also im Mittel 4 msec im Gateway, da 2 msec zum Weiterleiten benötigt werden, beträgt die mittlere Wartezeit 2 msec. Der Verlauf von in Abhängigkeit von ρ zeigt ein starkes Anwachsen bei ρ ≈ 1 (s. Abb. 7.6),
80
7 Einfache stochastische Modellvorstellungen
Abb. 7.6 Verlauf vonin Abhängigkeit von ρ
welches natürlich durch den Pol bei ρ = 1 bewirkt wird, so steigtum 100% von 3 auf 6 beim Wechsel von ρ = 3/4 auf 6/7. Dies bedeutet: Wird ein System schon mit einer hohen Auslastung ρ ≥ 3/4 (75%) betrieben, so genügen schon kleine Schwankungen, um die Last im System deutlich zu erhöhen. Da sich die mittlere Bearbeitungszeit nicht ändert, ist eine Verlängerung der Antwortzeit oder sogar ein vollständiger Stillstand die Folge, da der gleichen Gesetzmäßigkeit folgt.
7.4 Weitere Leistungsgrößen Die nächste abgeleitete Leistungsgröße ist die mittlere Anzahlvon Aufträgen, die im System auf die Verarbeitung wartet; wir gehen wie folgt vor: • k Aufträge warten im System der Prozessor wird frei und nimmt sich 1 Auftrag • k – 1 Prozesse warten, 1 ist in Verarbeitung • dann istder Mittelwert über alle Zustände, außer Ø – denn dann braucht nicht gewartet zu werden, mit dem Gewicht k – 1 < q >= < q >=
∞
∑
(k − 1)π k =
∑
kπ k −
k =1 ∞
∑ k =1
k =0
• < q >=
∞
ρ2 1− ρ
∞
∑π k =0
k
kπ k −
∞
∑π
k
k =1
+π0 =< k > −1 + (1 − ρ)
7.4 Weitere Leistungsgrößen
81
Wegen des Nenners haben wir das gleiche Verhalten bei ρ ≈ 1 wie, da im Zähler aber ρ2 statt ρ und 0 ≤ ρ ≤ 1, ist der Verlauf für ρ ≤ 3/4 insgesamt deutlich flacher und somit der Anstieg für ρ > 3/4 erheblich stärker. Um die mittlere Wartezeit auszurechnen, benutzen wir das zweite Little’sche Gesetz = λ *und erhalten < t W >=
< q > 1 ρ2 1 λ ρ = * = * * λ λ 1− ρ λ μ 1− ρ
< t W >=
1 ρ 1 * =μ 1− ρ μ
Dies ist ein unmittelbar einleuchtendes Ergebnis, denn die Wartezeit bestimmender Faktoren sind die Verarbeitungsrate μ und die mittlere Anzahlvon Aufträgen im System.
B2 Wir können jetzt unser Beispiel B1 erweitern, es galt ja ρ = 1/2,= 1, μ = 500 Pakete/sec Länge der Warteschlange = ρ2/(1 – ρ)=(1/4)/(1/2) = 1/2 mittlere Wartezeit= (1/μ)* = (1/μ)*1 = 2 [msec] Ein Ergebnis, dass wir vorher in B1 über = + berechnet hatten.
B3 Ein Prozessor schickt 10 I/Os pro Sekunde an eine Platte, die für eine I/OOperation im Mittel 20 msec benötigt. Da die Zeitverteilungen der einlaufenden I/Os und der Bearbeitung vom exponentiellen Typ sind, kann unser theoretisches Modell für das Plattensubsystem als gültig angesehen werden. Wir bestimmen die Leistungsgrößen: λ = 10 [IO/sec]= 1/μ = 20 [msec] = 20*10–3 [sec] –3 ρ:= λ/μ = λ*1/μ = 10*20*10 = 2*10–1 = 1/5, d. h. die Auslastung beträgt 20%; = ρ/(1 – ρ) = (1/5)/(1 – 1/5) = 1/4; die mittlere Verweilzeit einer IOOperation ist = (1/λ)* = (1/10)*(1/4) = 1/40 [sec] = 25 [msec]; und die mittlere Wartezeit
82
7 Einfache stochastische Modellvorstellungen
= (1/μ)* = 20*10–3*1/4 = 5 [msec]; der Durchsatz D = ρ/ = (1/5)/(1/50) beträgt 10 I/O-Operationen pro Sekunde, was im Gleichgewicht zu erwarten ist.
Zur Analyse des Wartezeitverhaltens genügt es nicht, nurundzu kennen, häufig ist es auch wichtig zu wissen, mit welcher Wahrscheinlichkeit pW(ρ) ein ankommender Auftrag warten muss. Nun, das trifft immer dann zu, wenn das System nicht im Zustand k = 0 (π0) ist. p w (ρ) =
∞
∑ k =1
πk =
∞
∑π
k
− π0 = 1 − π0 = 1 − (1 − ρ) = ρ
k =0
p w (ρ) = ρ
Dies impliziert einen linearen Zusammenhang
0,6
1 0,5 pw(ρ)
0,4 0,3 0,2 0,1 0 1
0
2
1
3
4
ρ
Abb. 7.7 Verlauf der Wahrscheinlichkeiten
zwischen dem Systemparameter ρ und der Wartewahrscheinlichkeit (s. Abb. 7.7). Eine andere, mehr intuitive Ableitung der Wartewahrscheinlichkeit erhält man über den Ansatz pW(ρ) =/mit ≤. Setzen wir die analytischen Ausdrücke für und ein, erhalten wir das bekannte Ergebnis. Zur Vermeidung von Verwechslungen und Fehleinschätzungen sollen noch drei weitere Wahrscheinlichkeiten skizziert werden:
7.5 Endliche Modelle
83
• πk = (1 – ρ)ρk: es sind genau k Prozesse im System • πk(q): es sind genau k Prozesse/Aufträge in der Warteschlange πk(q) = πk+1 = (1 – ρ)ρk+1, denn ein Auftrag wird sofort bedient • πk(n) ist die Wahrscheinlichkeit, dass mehr als n Aufträge im System sind π(n ) =
∞
∑π
k
k =n
=1−
n −1
∑π
k
= 1 −(1 − ρ)
k =0
1 − ρk 1− ρ
π k = (1 − ρ)ρ k
π( n ) = ρ n Die Nützlichkeit dieser Größen, vor allem von π(n) wird in dem folgenden Beispiel deutlich: B4 Wir nehmen unser Gateway von den vorangegangen Beispielen und ρ = 1/2. Es kann einen Verlust von einem auf 220 Pakete (≈ 1 000 000) tolerieren. Wie viele Pakete dürfen sich maximal im Gateway befinden?
Die Wahrscheinlichkeit für den Verlust ist pV = 1/220 und diese muss gleich der Wahrscheinlichkeit π(n ) = ρ n sein: pV = 1/220 = (1/2)20 = π(n ) = ρ n = (1/2)n
=> n = 20
d. h. für n > 20 tritt der Verlustfall ein => die maximale Paketanzahl darf den Wert 20 nicht überschreiten.
Damit kann die Skizze und Analyse eines der einfachsten Modelle vorläufig abgeschlossen werden. Die analytischen Ausdrücke fürund erlauben transparente und rasche Schlüsse auf das Verhalten des Modells – allerdings muss man sich sorgsam über die Gültigkeit der Voraussetzungen – exponentiell verteilte Zwischenankunfts- und Bearbeitungszeiten – Gewissheit verschaffen.
7.5 Endliche Modelle Ein Problem der vorangegangenen Diskussion könnte auch die unendliche Zahl von Modellzuständen sein (es rechnet sich aber in diesem Fall leichter) oder ihre Anordnung in einer aufsteigenden linearen Kette. Darauf soll noch kurz eingegan-
84
7 Einfache stochastische Modellvorstellungen
gen werden, in einem späteren Kapitel werden wir noch einmal explizit darauf zurückkommen, hier wollen wir uns mit einem einfachen Beispiel begnügen. Betrachten wir ein redundantes Datenbanksystem, welches aus zwei Servern A, B besteht, die jeweils mit der Rate λ ausfallen und mit der Rate μ wieder gestartet werden. Dann gibt es folgende Zustände 1.: kein Server ist ausgefallen, 2.: Server A ausgefallen, B arbeitet, 3.: Server B ausgefallen, A arbeitet, 4.: A und B sind ausgefallen. Bevor wir die Übergänge zwischen den Zuständen k = 1…4 bestimmen, müssen wir uns über den Charakter von 4 klar werden. Entweder es besteht die Möglichkeit des Neustarts von A und B, dann kann das System weiterlaufen (4 ist ein reflektierender Zustand, s. Abb. 7.8)
1
λ
λ μ
μ
2
3 λ
λ
μ
μ
4
Abb. 7.8 Reflektierende Systemkonfiguration
oder das Wiederanlaufen von A, B kann nicht mehr stattfinden (4 ist ein absorbierender Zustand, s. Abb. 7.9). Dann ist der Zustandsgraph 1
λ
λ μ
μ
2
3
λ
λ
4 Abb. 7.9 Absorbierende Systemkonfiguration
7.5 Endliche Modelle
85
und da dieser Fall etwas weniger Aufwand erfordert, behandeln wir ihn explizit. π1…π4 sind die Zustandswahrscheinlichkeiten im stationären Gleichgewicht und es gilt 2λπ1 = μπ2 + μπ3 => 2ρπ1 = π2 + π3 (μ + λ) π2 = λπ1 = (μ + λ) π3 => π2 = π3 = ρπ1 π4 = ρπ2 + ρπ3 = 2ρπ2 = 2ρπ3 = 2ρ2π1 Es muss gelten π1 + π2 + π3 + π4 = 1 und somit N(ρ) = 1 + 2ρ + 2ρ2 ergeben sich die Wahrscheinlichkeiten zu π1 = 1/ N(ρ), π2 = π3 = ρ/N(ρ), π4 = 2ρ2/N(ρ) deren Verlauf Abb. 7.10 zeigt
Abb. 7.10 Zustandswahrscheinlichkeit in Abhängigkeit von ρ
Man sieht sofort, dass π1 (beide Systeme/Server sind funktionsfähig) immer mit wachsendem ρ abnimmt, d. h. der optimale Zustand 1 wird immer unwahrscheinlicher. Die Zustände 2 und 3 haben ihre maximale Wahrscheinlichkeit π2max ,3 bei (√2/2), d. h. die Ausfallrate beträgt dann ca. 75% der Reparaturrate. Der Zustand 4 wird mit wachsendem ρ (der Ausfallrate λ) immer wahrscheinlicher und dominiert alle anderen – er ist absorbierend. Dies zeigt sich auch bei einer Analyse des Mittelwertes= 1*π1 + 2*π2 + 3*π3 + 4*π4, wenn die π’s explizit eingesetzt werden =
1 + 7ρ + 8ρ2 1 + 2ρ + 2ρ2
86
7 Einfache stochastische Modellvorstellungen
Dieser verhält sich für große ρ wie bei≈ 4, welches allerdings für ρ = 2 schon zu 90% der Fall ist. Es mag zunächst erstaunen, dass ρ = λ/μ auch Werte größer 1 annehmen kann, aber dies ist eine fundamentale Eigenschaft endlicher Modelle des diskutierten Typs. Wir werden später sehen, dass für ρ ≤ 1 der Unterschied zwischen endlich und unendlich vielen Zuständen vernachlässigt werden kann, sodass wir immer letztere annehmen können, da leichter mit ihnen umzugehen ist. Endliche Modelle von der Art des letzten Beispiels finden häufig Anwendung in der Zuverlässigkeitsanalyse.
8 Die Chapman-Kolmogoroff-Gleichungen
Die Modellierung von Computersystemen mit wahrscheinlichkeitstheoretischen Methoden basiert auf ganz einfachen Prinzipien, welche letztlich in den ChapmanKolmogoroff-Gleichungen münden, die die zeitliche Dynamik des entsprechenden Modells beschreiben. Um die Basis zu vermitteln, verzichten wir auf die übliche mathematische Strenge und beschränken uns auf ein sehr simples Modell mit zwei Zuständen 0 und 1. In Zustand 0 ist das Modell (die Maschine) ohne Auftrag (leer), in Zustand 1 wird ein Auftrag bearbeitet. Die Aufträge kommen mit einer festen Auftragsrate λ an und werden mit der Rate μ bearbeitet. Folgende Übergänge sind zwischen den beiden Zuständen möglich: 0→0: es wird kein neuer Auftrag akzeptiert, 0→1: ein Auftrag wird angenommen, 1→1: ein Auftrag wird bearbeitet, 1→0: der bearbeitete Auftrag verlässt das System, und werden durch eine Übergangswahrscheinlichkeit pij(i, j = 0, 1) charakterisiert. Diese bilden die Übergangsmatrix
p ( t ) p01 ( t ) ⎞ P(t) = ⎛⎜ 00 ⎜ p ( t ) p ( t ) ⎟⎟ 11 ⎝ 10 ⎠ für welche wir jetzt das Gesetz der zeitlichen Entwicklung, die ChapmanKolmogoroff-Gleichungen, ableiten wollen. Dabei setzen wir jeden Übergang i→j aus elementaren Schritten zusammen. Wir demonstrieren die Vorgehensweise für den Übergang 0→0 ganz ausführlich, für die Übergänge 0→1, 1→1, 1→0 verlaufen die Argumentationen völlig analog.
88
8 Die Chapman-Kolmogoroff-Gleichungen
8.1 Der Übergang 0→0 Das System startet zum Zeitpunkt t = 0 und wir setzen die Kenntnis von pij(0) (i, j = 0, 1) voraus. Zur Zeit t beobachten wir pij(t) und fragen nach der Änderung zum Zeitpunkt t + ∆t, ∆t > 0 (s. Abb. 8.1).
1
Pfad2 Pfad1
0
Z t + Δt
t Abb. 8.1 Pfade für den Übergang 0→0
Der Übergang 0→0 kann über zwei Pfade laufen, d. h. diese Wahrscheinlichkeiten müssen schon einmal aufsummiert werden w(Pfad1) + w(Pfad2); gleichzeitig sind auf einem Pfad alle Wahrscheinlichkeiten zu multiplizieren: w(Pfad1) = p00(t – 0) * p00(t + ∆t – t) = p00(t) * p00(∆t) w(Pfad2) = p01(t – 0) * p10(t + ∆t – t) = p01(t) * p10(∆t) p00(t + ∆t) = w(Pfad1) + w(Pfad2) = p00(t) * p00(∆t) + p01(t) * p10(∆t) Die Änderungen von p00 gegenüber dem Zeitpunkt t ist einfach die Differenz p00(t + ∆t) – p00(t) und bezogen auf ∆t folgt:
p00 ( t + Δt ) − p00 ( t ) p (Δt ) −1 p (Δt ) = p00 ( t ) 00 + p01 ( t ) 10 Δt Δt Δt Mit dem Grenzübergang ∆t → 0 wird die linke Seite zu p′00 ( t ) , während lim
Δt →0
p00 (Δt ) − 1 , Δt
lim
Δt → 0
p10 (Δt ) Δt
sich zu Konstanten q00 bzw. q10 reduzieren, welche nicht mehr von der Zeit abhängen, da ∆t → 0: p′00 (t) = p00(t) * q00 + p01(t) * q10
Wir erhalten eine Differenzialgleichung erster Ordnung in der Zeit.
8.2 Der Übergang 1→1
89
8.2 Der Übergang 1→1
Pfad2 1 0
Pfad1
Zeit t
t + ∆t
Abb. 8.2 Pfade zum Übergang 1→1
Wir haben die gleiche Situation wie in Abb. 8.1, nur die Rolle von 0, 1 muss konsequent getauscht werden (s. Abb. 8.2). ′ (t) p11
q11 = lim
Δt → 0
= q11 * p11(t) + q01 * p10(t) p11 (Δt ) − 1 Δt
q01 = lim
Δt → 0
p 01 ( Δt ) Δt
90
8 Die Chapman-Kolmogoroff-Gleichungen
8.3 Der Übergang 0→1
1
Pfad2
0 Pfad1 Zeit t
t + ∆t
Abb. 8.3 Pfade zum Übergang 0→1
Pfad1: p00(t) * p01(∆t) Pfad2: p01(t) * p11(∆t) p01(t + ∆t) = w(Pfad1) + w(Pfad2) = p00(t) * p01(∆t) + p01(t) * p11(∆t) Wir bilden wieder lim (p01 ( t + Δt ) − p 01 ( t )) / Δt = p′01 ( t )
Δt → 0
und erhalten p′01 ( t ) = p00(t) * q01 + p01(t) * q11
8.5 Zusammenfassung und Ableitung der Zustandsgleichungen
91
8.4 Der Übergang 1→0
1
0
Pfad2
Pfad1 Zeit
t + Δt
t Abb. 8.4 Pfade zum Übergang 1→0
Wir haben die gleiche Situation wie in Abb. 8.3, nur die Rolle von 0, 1 muss konsequent getauscht werden (s. Abb. 8.4). ′ ( t ) = p11(t) * q11 + p10(t) * q00 p10
8.5 Zusammenfassung und Ableitung der Zustandsgleichungen Jetzt können wir unsere Ergebnisse elegant und übersichtlich in einem linearen Gleichungssystem zusammenfassen:
q 01 ⎞ ⎛ p′00 ( t ) p′01 ( t ) ⎞ ⎛ p ( t ) p 01 ( t ) ⎞ ⎛q ⎜⎜ ⎟⎟ = ⎜⎜ 00 ⎟⎟ * ⎜⎜ 00 ⎟ ′ ( t ) p11 ′ (t) ⎠ p10 p10 ( t ) p11 ( t ) ⎠ q10 q11 ⎟⎠ ⎝ ⎝ ⎝
P’(t)
P(t)
Q
In Matrixschreibweise folgt kürzer P’(t) = P(t)*Q(t) wobei P(0) und Q vorgegeben sein müssen.
92
8 Die Chapman-Kolmogoroff-Gleichungen
Die Übergänge i→j sind sehr interessant, aber in der Praxis sind die Wahrscheinlichkeiten für die Zustände 0, 1: p0(t) und p1(t) mit ihrem zeitlichen Verlauf noch interessanter (s. Abb. 8.5): p0(0) → p0(t) p1(0) → p1(t)
und p0(t) + p1(t) = 1
,t≥0
Gemäß unserer Pfadvorstellung haben wir
p0(t) = p00(t)p0(0) + p10(t)p1(0) p1(0)
p10(t)
p0(0)
0
p00(t)
t
p11(t) p1(0)
1
p0(0)
p01(t)
p1(t) = p01(t)p0(0) + p11(t)p1(0) t
Abb. 8.5 Zur Berechnung der Zustandswahrscheinlichkeiten
Also pi(t) =
∑ p (t)p (0) i = 0, 1 ji
j
j=1, 2
was leicht verallgemeinerbar ist.
G
Wir bilden den Vektor p(t) = (p 0 (t), p1 (t)) der Zustandswahrscheinlichkeiten, und sei P(t) die Matrix der Übergangswahrscheinlichkeiten, folgt damit: G G p(t) = p(0)*P(t)
8.6 Zur Lösung der Zustandsgleichungen
93
Differenzieren nach der Zeit ergibt: G G G G G p'(t) = p(0)*P'(t) = p(0)*P(t) * Q → p' (t) = p(t) * Q
G p(t)
wobei Q die zeitunabhängige Matrix der Übergangsraten darstellt.
8.6 Zur Lösung der Zustandsgleichungen Wir haben ein Differenzialgleichungssystem erster Ordnung in der Zeit mit dem G Input p(0) = (p1 (0), p 2 (0),...p n (0)) und Q = (qij) (i,j = 0,1…n), [qij] = t–1. Wir gehen noch einmal auf ihre ursprünglichen Definitionen zurück: p ii ( Δt) − 1 Δt → 0 Δt
q ii = lim
q ij = lim
Δt → 0
p ij ( Δ t) Δt
und versuchen eine explizite Berechnung. Dazu müssen wir eine weitere Voraussetzung für die Zahl #ank der Ankünfte im Zeitintervall [0, t] machen; diese soll der Poisson-Verteilung gehorchen, also (λt) k − λt prob [#ank= k] = e k! wobei λ die übliche konstante Ankunftsrate darstellt. Wir diskutieren zunächst p00(Δt), die Wahrscheinlichkeit, dass in Δt kein Auftrag ankommt und somit der Zustand des Modells unverändert bleibt, d. h. aber #ank = k = 0 (λΔt ) (λΔt)) 2 (λΔt))3 p 00(Δt ) = e-λΔt = 1+ + + ... 1! 2! 3! Damit ist p 00(Δt ) − 1 λ λ 2Δt λ 3Δt 2 =- + + ... Δt 1! 2! 3!
und q 00 = lim
Δt → 0
p00(Δt ) − 1 = −λ Δt
da alle Terme O(Δt) verschwinden. Für die Berechnung von q01 können wir ähnlich vorgehen – wir müssen nur berücksichtigen, dass mindestens ein Auftrag ankommt. Dies ist aber das komplementäre Ereignis zu 0→0 und dann folgt einfach
94
8 Die Chapman-Kolmogoroff-Gleichungen
p01(Δt ) = 1-p00(Δt ) = 1-e-λΔt λΔt λ 2Δt 2 λ 3Δt 3 − + − ... 1! 2! 3! p (Δt ) q 01 = lim 01 =λ Δt → 0 Δt =
Für die möglichen Zustandsänderungen von 1 spielt die Abarbeitungsrate μ die Rolle von λ, d. h. bei 1→1, ein Auftrag wird bearbeitet, und es passiert nichts: p11(Δt ) = e-μΔt
→ q11 = -μ
Der Übergang 1→0 ist dann das komplementäre Ereignis zu 1→1, und wir erhalten: p10(Δt ) = 1-p11(Δt ) = 1 − e -μΔt → q10 = μ Damit haben wir alle Größen zusammen, um Chapman-Kolmogoroff für dieses Modell explizit hinzuschreiben und zu lösen ⎛ -λ λ ⎞ ⎟⎟ (p0'(t), p1'(t)) = (p0(t), p1(t))*⎜⎜ ⎝ μ − μ⎠ p0(0) = 1 und p1(0) = 0 Da p0(t), p1(t) für alle t ≥ 0 Wahrscheinlichkeiten mit 0 ≤ p0(t), p0(t) ≤ 1 und p0(t) + p1(t) =1, können die Lösungen für die Chapman-Kolmogoroff-Gleichungen keine exponentiell ansteigenden Funktionen sein – oszillierende Lösungen scheiden ebenfalls aus. Übrig bleiben Konstanten und exponentiell abfallende Funktionen der Art: a + be–αt welche für große Zeiten sich praktisch nicht mehr ändern, d. h. ihre Ableitungen verschwinden ebenfalls lim p0,1(t) = π 0,1 lim p'0,1(t) = 0 t →∞
t →∞
Das Differenzialgleichungssystem reduziert sich damit auf ein simples, homogenes, lineares System: ⎛ -λ λ ⎞ ⎟⎟ (0,0) = (π 0, π1)*⎜⎜ ⎝ μ −μ⎠ 0 = π 0 (-λ ) + π1μ → π1 = (λ / μ) * π 0
8.6 Zur Lösung der Zustandsgleichungen
95
π 0 + π1 = 1 = π 0 + ( λ / μ ) * π 0 = 1 π0 =
1 1+
λ μ
π1 =
λ/μ 1 + (λ / μ )
Beide Lösungen hängen nur von ρ = λ/μ ab und haben folgenden Verlauf:
Abb. 8.6 Stationäre Zufallswahrscheinlichkeiten
Der Punkt ρ = 1 entspricht der Situation, dass Ankunfts- und Verarbeitungsrate identisch sind (s. Abb. 8.6). Das Auffinden der zeitabhängigen Lösungen folgt den üblichen Standardmethoden. Wir nutzen p1(t) = 1 – p0(t) aus, so dass p0’(t) + (λ + μ)p0(t) = μ und wählen die Variation der Konstanten. Mit den Anfangsbedingungen p0(0) = 1, p1(0) = 0 (das Modell ist bei t = 0 leer) folgt: 1 ρ p 0(t) = e-(1+ ρ)μt + 1+ ρ 1+ ρ p1(t) =
ρ (1-e-(1+ ρ)μt ) 1+ ρ
Es ist offensichtlich, dass unsere asymptotischen Lösungen π0, π1 reproduziert werden.
96
8 Die Chapman-Kolmogoroff-Gleichungen
8.7 Zwei konkrete Modelle über Reserve Wir wollen jetzt das obige zweidimensionale Modell in zweifacher Hinsicht verändern – einmal bezüglich der Systemdynamik und zum anderen über die Zahl der Zustände. Wie im Kap. 7 sollen zwei DB-Server modelliert werden, wobei das System funktionstüchtig ist, wenn einer arbeitet. Dies läuft unter dem Namen kalte Reserve, der Zustand 0 beschreibt zwei funktionstüchtige Server; fällt der aktuelle arbeitende Server aus, übernimmt die Reservemaschine diese ohne Zeitverzögerung (Zustand 1). Fällt Server 2 während der Reparatur auch noch aus, erreichen wir Zustand 2,
λ Ausfallrate λ 0
1
2
μ Reparaturrate Abb. 8.7 Systemdynamik der kalten Reserve
von dem es keine Rückkehr mehr gibt (s. Abb. 8.7). Die Zustandswahrscheinlichkeiten p0(t), p1(t) und p2(t) gehorchen nach Chapman-Kolmogoroff der Dynamik: p′0 ( t ) = −λp0 ( t ) + μp1 ( t ) p1′ ( t ) = λp0 ( t ) − (λ + μ)p1 ( t ) p′2 ( t ) = λp1 ( t )
mit den Anfangswerten p0(0) = 1 und p1(0) = 0. Die Gleichungen für p0, p1 entkoppeln von p2 und Einsetzen liefert p1′′( t ) + (2λ + μ) * p1′ ( t ) + λ2p1 ( t ) = 0
Zum Lösen dieser linearen Differenzialgleichung 2. Ordnung machen wir den Ansatz p1 ( t ) = eνt . Es folgt ν 2 + (2λ + μ)ν + λ2 = 0 , sodass ν1, 2 = −
λ 2λ + μ μ ± * D , D2 = 1 + 4 > 0 2 2 μ
8.7 Zwei konkrete Modelle über Reserve νt
97
ν t
Damit haben wir zwei Basislösungen e 1 bzw. e 2 und die Gesamtlösung lautet p1 ( t ) = Aeν1t + Beν 2 t . Da p1(0) = 0, ist B = -A und explizites Einsetzen ergibt
p1 ( t ) = 2Ae
−
2λ + μ t 2
⎡ μ tD − μ tD ⎤ ⎢e2 − e 2 ⎥ *⎢ ⎥ 2 ⎢ ⎥ ⎣ ⎦
wobei A noch festzulegen ist. Wir bestimmen p0(t) über λp0 ( t ) = p1′ ( t ) + (λ + μ)p1 ( t )
1 − p0 (t) = e D
⎛ μ 2λ + μ ⎜ 2 tD t e 2 ⎜ ⎜⎜ ⎝
−e 2
μ − tD 2
μ ⎞ ⎛ μ ⎞ ⎟ − 2λ + μ t ⎜ e 2 tD + e − 2 tD ⎟ 2 ⎟+e ⎜ ⎟ 2 ⎟⎟ ⎜⎜ ⎟⎟ ⎠ ⎝ ⎠
⎛λ⎞ die Konstante A berechnet sich über p1(0) = 0 zu ⎜⎜ ⎟⎟D −1 . ⎝μ⎠ Da 2λ + μ = (2ρ + 1)μ und −
(
)
2λ + μ μ μ t + tD = − 2ρ + 1 − 4ρ + 1 t < 0 2 2 2
denn 2ρ + 1 − 4ρ + 1 ~ 2ρ mit ρ ≥ 0 , konvergieren bei μt → ∞ alle Exponentialterme gegen null, sodass
π0 = lim p 0 ( t ) = 0 , π1 = lim p1 ( t ) =0 t →∞
t →∞
π2 = 1 wegen π0 + π1 + π2 = 1
Die folgende Abb. 8.8 zeigt das zeitliche Verhalten für ρ = 1 (Ausfall = Reparaturrate) – man erkennt, wie rasch der obige stationäre Zustand sich einstellt. Für ρ < 1 hält die Nichtstationarität deutlich länger an, bei ρ > 1 erreichen wir π2 = 1 noch schneller. Daher ist natürlich die Zeitspannebis zum Erreichen von 2 interessant – man nennt sie die Lebensdauer des Systems.
98
8 Die Chapman-Kolmogoroff-Gleichungen
Abb. 8.8 Zeitlicher Verlauf der Zustandswahrscheinlichkeiten
Zur Berechnung vonbenötigt man F( t ) , die Verteilung der Überlebenswahrscheinlichkeit, diese ergibt sich zu F( t ) = p 0 ( t ) + p1 ( t ) . Die gesuchte mittlere Überlebenszeit [10] ist ∞
∞
∫
∫
< t 02 >= dt F( t ) = dt (p0 ( t ) + p1 ( t )) 0
0
wobei die Herleitung unter 1 zu finden ist.
1
Der Mittelwerteiner Zufallsgröße t ergibt sich über die Verteilungsdichte f(t) zu
∞
∞
0
0
= ∫ dt * t * f ( t ) = ∫ dt * t * F′( t ) wobei F(t) = prob(tL ≤ t) die Verteilung darstellt. Die zweite Form legt eine partielle Integration mit u = t, u’ = 1, υ’ = F’(t) nahe:
[
]∞
∞
∞
= t * F( t ) 0 − ∫ dt *1 * F( t ) = lim(t * F( t )) − ∫ F( t )dt
0
t →∞
0
Stellt t die Überlebensdauer dar, ist es günstiger, nach der Überlebenswahrscheinlichkeit und deren Verteilung F( t ) = prob( t L > t ) = 1 − F( t )
zu analysieren:
8.7 Zwei konkrete Modelle über Reserve
99
Für eine bessere Transparenz und um ein Gefühl für diese Art von Rechnung zu bekommen, betrachten wir erst den einfachen Fall μ = 0, d. h. es findet keine Reparatur statt. Die Lösung der Chapman-Kolmogoroff-Gleichungen lauten in diesem Fall p 0 ( t ) = e − λt und p1 ( t ) = (λt )e −λt , sodass ∞
∫
< t μ02= 0 > k = dt (1 + λt )e− λt = 0
∞
∫
1 d(λt )(1 + λt )e− λt λ 0
∞
=
∫
1 2 dτ(1 + τ)e − τ = λ λ 0
Dieses Ergebnis leuchtet sofort ein, denn der Prozess des Ausfallens kann zweimal auftreten. Im Reparaturfall μ > 0 kann die Lebensdauer < t 02 > k nur größer werden – zu erwarten ist ein Korrekturterm proportional μ. Wir definieren eine neue Konstante a = (2ρ + 1) / D = (2ρ + 1) / 4ρ + 1 sowie die neue Variable τ = μtD/2 und bilden
wieder die Verteilung F = p0 + p1 = e− aτ (a sinh τ + cosh τ)
wobei sinh τ = (eτ – e–τ)/2 und cosh τ = (eτ + e–τ)/2 die üblichen Hyperbolischen Funktionen darstellen. Da τ = (μ*t*D)/2, ist dt = (2/(μ*D))dτ, sodass ∞
< t 02 > k =
∫
2 dτ(a sinh τ + cosh τ) μD 0
⎡
t
t →∞ ⎣
⎤
0
= lim ⎢ t * F( t ) − ∫ dtF( t )⎥
⎦
⎡ ⎤ = lim ⎢ t * F( t ) − t + ∫ dt (1 − F( t ))⎥ t →∞ ⎣ 0 ⎦ t ⎡ ⎤ = lim ⎢− t (1 − F( t ) + ∫ dt (1 − F( t ))⎥ t →∞ ⎣ 0 ⎦ t
[
]
∞
= lim t * F( t ) + ∫ dt F( t ) t →∞
0 ∞
Für Exponentialverteilungen verschwindet der Grenzwert und es bleibt= ∫ dt F( t ) 0
100
8 Die Chapman-Kolmogoroff-Gleichungen
=
2 1 2(4ρ + 1) 2ρ + 1 1 2ρ + 1 * * = μ 4ρ + 1 4ρ2 4ρ + 1 μ ρ2
Mit ρ = λ/μ folgt < t 02 > k =
2 1 2 μ + = + 2 λ ρλ λ λ
Man beachte bei dem Korrekturterm μ/λ2 die starke Abhängigkeit von λ2, welche seinen Einfluss erheblich beschränkt. Bei festen λ können wir die dimensionslose Größe λk = 2 + 1/ρ bilden, welche für Vergleiche besser geeignet ist. Wenn z. B. die beiden Server immer parallel laufen (heiße Reserve, s. Abb. 8.9), was in modernen redundanten Systemen häufig realisiert wird, dann haben wir eine andere dynamische Situation, μ
0
1
2 λ
2 Abb. 8.9 Doppeltes System der heißen Reserve
welche sich in den folgenden Differenzialgleichungen wiederfindet p′0 ( t ) = −2λp0 ( t ) + μp1 ( t ) p1′ ( t ) = 2λp 0 ( t ) − (λ + μ)p1 ( t ) , p′2′ ( t ) = λp1 ( t )
Im Prinzip können wir jetzt genauso wie beim System der kalten Reserve vorgehen. Zunächst der Fall μ = 0, es folgt Fh ( t ) = e −2λt + 2e − λt (1 − e − λt ) , < t μ02= 0 > h =
31 2λ
Bei festen λ ergibt der Vergleich der beiden Systeme (kalte und heiße Reserve) ohne Reparatur λ < t μ02= 0 > k = 2 , λ < t μ02= 0 > h =
3 2
eine um 50% schlechtere Lebensdauer des „heißen“ Systems.
8.7 Zwei konkrete Modelle über Reserve
101
Der Reparaturfall μ > 0 folgt ebenfalls dem Muster der kalten Reserve – die entsprechende Rechnung resultiert in λ < t 02 > h =
3 1μ 3 1 + = + 2 2 λ 2 2ρ
Abbildung 8.10 demonstriert dann die Verlaufsunterschiede in beiden Modellsystemen:
Abb. 8.10 Lebensdauervergleich von kalter und heißer Reserve
Wenn also der Umschaltprozess ohne Verzögerung verläuft, ist das System der kalten Reserve wegen seiner deutlich längeren Lebensdauer, auch bei Reparaturen, zu bevorzugen.
9 Von der Lust am Modellieren
Die im vorigen Abschnitt entwickelten Modellvorstellungen lassen sich nun beliebig ausbauen und mit einer gewissen Lust an Mathematik ergeben sich interessante Einblicke – wie realitätsnah diese sind, hängt natürlich von den Voraussetzungen ab. Wir unterstellen einmal durchgängig exponentiell verteilte Zwischenankunfts- und Bearbeitungszeiten und geben uns dem Vergnügen hin, durch simple Umformungen einige, hoffentlich transparente und übertragbare Ergebnisse aus Modellanalysen und Beispieldiskussionen hervorzubringen.
9.1 M/M/1/∞ und die Skalierung Wir beginnen mit dem einfachsten Modell des letzten Abschnitts, in welchem ein Strom von Forderungen mit einer Rate λ auf einen Server trifft, der diese mit der Rate μ bedient. Die offizielle Bezeichnung ist M/M/1/∞, da Ankunfts- und Bearbeitungszeit jeweils exponentiell verteilt sind (vom Typ Markoff), ein (1) Server existiert und unendlich (∞) viele Warteplätze vorhanden sein sollen. Die mittlere Verweilzeitin diesem System berechnet sich über das 1. Little’sche Gesetz λ * = < k > zu ρ λ 1 = * 1− ρ μ 1− ρ 1 1 1 < t V >= * =< t S > μ 1− ρ 1− ρ
λ < t V >=< k >=
da= 1/μ.
104
9 Von der Lust am Modellieren
Was geschieht mit, wenn wir die Service-/Bearbeitungszeit auf den p-ten Teil herabsetzen können, d. h. → /p? Es folgt: =
< tS > 1* = S ρ p p−ρ 1− p
und damit können wir das Verhältnis von alter () und neuer ( ) Verweilzeit, den Speed-Up S(p) diskutieren: ρ < tS > 1− < tV > p−ρ p 1− ρ = = = p* S(p) = < t V ( p) > < t S > 1 − ρ 1− ρ p−ρ
Für große p verhält sich S(p) ~ p, dies versteht man im Prinzip unter Skalierung. Zur Übung wird angeregt, eine obere Schranke für den Speed-Up der Wartezeit (p²/ (1 – ρ)) auszurechnen.
9.2 Das Modell M/M/1/B mit endlichem Wartepool Eine vernünftige Variante des Standardmodells M/M/1/∞ besteht darin, nur endlich viele Warteplätze zuzulassen, und wenn diese voll sind, alle weiteren Forderungen abzuweisen. Man spricht in diesem Fall auch von einem Verlustsystem M/M/1/B und dieser Sachverhalt impliziert folgendes Zustandsdiagramm: λ 0
λ 1
μ
λ 2
μ
...
λ
k–1
k
...
μ
mit den Zustandswahrscheinlichkeiten π0, π1... πB. Man sieht sofort k = 1...B λπk–1 = μπk ρ = λ/μ, πk = ρπk–1 πk = ρkπ0
B–1
B μ
9.2 Das Modell M/M/1/B mit endlichem Wartepool
105
Die noch freie Konstante π0 (die Wahrscheinlichkeit, dass dieses System leer ist) wird über die Normierung bestimmt B
1=
∑
B
π k = π0
k =0
∑ k =0
ρ k = π0 *
1 − ρB +1 1− ρ
1− ρ π0 = 1 − ρB +1
Der nächste Schritt besteht in der Bestimmung der relevanten Leistungsgrößen wie Wartewahrscheinlichkeit pW = 1 – π0 Durchsatz DB(ρ) Blockierungswahrscheinlichkeit pB Beginnen wir mit pW: p W = 1 − π0 = 1 −
1− ρ 1 − ρB = ρ * 1 − ρB +1 1 − ρB +1
und tragen diese Größe gegen die Auslastung ρ auf (s. Abb. 9.1). B = 10 B=3
Abb. 9.1 Wartewahrscheinlichkeit für M/M/1/B
106
9 Von der Lust am Modellieren
Man sieht sofort, dass nach einem fast linearen Anstieg im Bereich 0 ≤ ρ ≤ 1 die Wartewahrscheinlichkeit für höhere Auslastungsbereiche im Sättigungsbereich ist. Für jeden Zustand k = 1, 2, 3... kann es eine Verarbeitungsrate μk geben, die den maximalen Durchsatz in diesem Zustand festlegt. Da jeder Zustand k nur mit einer Wahrscheinlichkeit πk vorkommt, ist der reale Durchsatz πk*μk und der Gesamtdurchsatz ergibt sich zu DB (ρ) =
∑ k ≥1
B
μ k * πk =
∑
B
μ * πk = μ
k =1
∑π
k
= μ(1 − π0 ) = μpW
k =1
↑ in diesem Modell und mit der gerade diskutierten Formel für pW gilt D B (ρ) = μ * ρ
1 − ρB
= λ*
1 − ρB
1 − ρ B+1 1 − ρ B+1 Im M/M/1/∞-Modell ist D(ρ) = μ * pW = μ * ρ = λ, sodass wir sehr einfach den Unterschied beider Modelle verstehen können.
D(ρ) – DB(ρ) = λ − λ = λ * ρB
1 − ρB 1 − ρB ( 1 = λ − ) 1 − ρB+1 1 − ρB +1
1− ρ 1 − ρB +1
Da pB = ρB(1 – ρ)/(1 – ρB+1) die Wahrscheinlichkeit ist, dass alle Warteplätze belegt sind, stellt λ*pB genau den Anteil der Forderungen dar, der abgewiesen werden muss. Der Verlauf von pB zeigt, dass diese Größe für viele Warteplätze, also B >> 1 im Bereich 0 ≤ ρ ≤ 1 vernachlässigbar ist [4]. B1 Wir betrachten einen Router mit mehreren Kanälen, pro Kanal sind B Pufferplätze vorgesehen. Wie groß muss B sein, wenn wir die Blockadewahrscheinlichkeit p(B) vorgeben. Es gilt 1− ρ p(B) = ρB 1 − ρB +1 und dies muss nach B aufgelöst werden. Wir setzen x = ρB und erhalten p(B) =
1− ρ x 1− ρ* x
=>
x=
p(B) 1 − ρ + ρ * p(B)
9.3 Ein weiteres Verlust-Modell mit p Prozessoren
107
Da 0 ≤ ρ ≤ 1 und 0 < p(B) < 1 ist sicherlich ρp(B) << 1, d. h. x = ρB ≤
p(B) 1− ρ
Wir logarithmieren auf beiden Seiten B≈
ln(p(B) /(1 − ρ)) ln ρ
und können somit bei vorgegebenem p(B) den Kurvenverlauf diskutieren. p(B) = 10-6
10-5 10-3
10-2
10-1
Sprung um den Faktor ρ bei B(5 => 20) und bei p(B): 10-2 => 10-6 So folgt im Lastbereich 0,5 ≤ ρ ≤ 0,6, dass zwischen 5 und 10 Pufferplätze pro Kanal bei p(B) = 10–3 benötigt werden.
9.3 Ein weiteres Verlust-Modell mit p Prozessoren Ein weiteres Modell, welches einen Teil von Forderungen ablehnt, weil seine Kapazität es nicht zulässt, ist M/M/p/0. Das bedeutet Ankunft- und Bedienprozess sind vom Typ Markoff (M), statt einem Prozessor haben wir p gleichartige mit einer Servicerate μ für jeden einzelnen – ein Wartepool existiert jedoch nicht (0).
108
9 Von der Lust am Modellieren
Ein Beispiel wären die p Einwahlmodems in ein Providernetz, λ wäre die mittlere Zahl der Einwahlversuche pro Zeiteinheit und 1/μ die mittlere Belegungsdauer. Die möglichen Zustände dieses Modells sind durch die Anzahl k der belegten Prozessoren/Bedieneinheiten (Modem) gekennzeichnet. Es gilt k = 0, 1, 2,... p und damit folgendes Zustandsdiagramm λ
λ
0
λ
1
2
μ
...
2μ π1
π0
k-1
λ k
k*μ πk–1 πk
π2
...
p-1
p
p*μ πp–1 πp
Im statistischen Gleichgewicht gilt für die Zustandswahrscheinlichkeiten πk: λ * πk −1 = kμ * πK
k = 1 ... p
λ ρ πk = πk −1 = πk −1 k *μ k λ ρ= μ
Durch Ausprobieren für k = 1, 2, 3,... kann man die Lösung von πk = (ρ/k) πk–1 relativ einfach zu ρk π= π0 k = 1, 2, ... p k! raten. Wie immer ist die freie Konstante π0 über die Normierung festgelegt p
p
1=
∑π
k
= π0
k =0
ρk
∑ k! = e k =0
ρ
Γ(p + 1, ρ) π0 Γ(p + 1,0)
wobei die Γ-Funktion (s. Abb. 9.2) wie folgt definiert ist ∞
∫
Γ(p + 1,0) = pΓ(p,0) = p!= dt e − t t p 0
∞
∫
Γ(p + 1, ρ) = dt e − t t p ≤ Γ(p + 1,0) ρ
9.3 Ein weiteres Verlust-Modell mit p Prozessoren
109
Diese Funktion hat nur einen ungewöhnlichen Namen, vom Verlauf her ist sie völlig unkompliziert Г(p + 1, ρ) p!
ρ ρ≤1
Γ(p + 1, ρ) ≈ p! Γ(p + 1, ρ) ≈ ρpe–ρ
ρ >> 1
Abb. 9.2 Verlauf der unvollständigen Γ- Funktion
und mit ihrer Hilfe folgt für die Zustandswahrscheinlichkeiten π0 = e − ρ
Γ(p + 1,0) Γ(p + 1, ρ)
πk = e −ρ
Γ(p + 1,0) ρk * Γ(p + 1, ρ) k!
Damit sind wir in der Lage, die Leistungsgrößen wie Blockier-/Abwehrwahrscheinlichkeit pB, den Durchsatz D oder die mittlere Anzahlbelegter Prozessoren/Bedienstationen zu berechnen und zu analysieren. Die Blockade- oder Abwehrwahrscheinlichkeit ist ganz einfach über die Besetzung aller p Prozessoren definiert p B = πk = p =
Γ(p + 1,0) − ρ ρp *e * p! Γ(p + 1, ρ)
Mit einigen Umformungen, insbesondere Г(p + 1, 0) = p! ergibt sich p B = ρp * e −ρ
1 Γ(p + 1, ρ)
110
9 Von der Lust am Modellieren
Nutzen wir noch die Relation Г(p + 1, ρ) = pГ(p, ρ) + ρpe–ρ aus, so folgt schließlich pB = 1− p
Γ(p, ρ) Γ(p + 1, ρ)
Die Zahl der akzeptierten Prozesse oder die effektive Ankunftsrate oder der Durchsatz ergibt sich dann zu (1 − p B )λ = λ
pΓ(p, ρ) Γ(p + 1, ρ)
Hält man μ fest und variiert ρ, indem man λ verändert, so lässt Abb. 9.3 das Sättigungsverhalten des Durchsatzes bei steigender Last (ρ) erkennen.
8
p = 10
6
p=5
4
p=2
2
p=1
0 0
2
4
ρ
6
8
10
Abb. 9.3 Durchsatzverhalten von M/M/p/0
Ähnliches gilt für die Auslastung ρ(S) in diesem Systemmodell: ρ(S) =< t S > *D =
1 λpΓ(p, ρ) Γ(p, ρ) * =ρ pμ Γ(p + 1, ρ) Γ(p + 1, ρ)
denn im Bereich 0 ≤ ρ ≤ 1 ist Г(p + 1, ρ) ≈ p! und damit ρ(S) ~ ρ/p, also ein schwacher linearer Anstieg. Für ρ >> 1 gilt Г(p + 1, ρ) ~ ρpe–ρ, sodass ρ(S) ≈ 1. Interessant ist nun/p, d. h. die mittlere Anzahl von Forderungen pro Prozessor, diese ist mit der Auslastung ρ(S) identisch. Solange /p < 1, wird keine Blockade/Abweisung von Forderungen erfolgen müssen – erst bei /p ≥ 1 tritt dieser Fall ein und man müsste eventuell weitere Prozessoren hinzunehmen. Betrachtet man daher die Abhängigkeit von p, ρ bleibt fest, so erhält man einen relativ schwachen Abfall in p (s. Abb. 9.4).
9.4 Der Fall unendlich vieler Prozessoren
111
p 0,9 0,8
ρ=5
0,7 0,6 0,5
ρ=2
0,4 0,3
ρ=1
0,2 0,1
ρ = 1/2 1
2
3
4
5
p Abb. 9.4 Verlauf der Auslastung/p
Γ(p, ρ) =ρ p Γ(p + 1, ρ)
Dieser geht für höhere Auslastungswerte ρ fast in eine Konstante über, sodass eine Hinzunahme weiterer Prozessoren p kaum noch einen Effekt zeigt.
9.4 Der Fall unendlich vieler Prozessoren Vor dem Hintergrund moderner Hochleistungssysteme mit mehreren tausend bzw. hunderttausend Prozessoren liegt es nahe, einmal den Fall p → ∞ beim M/M/p/0-Modell zu untersuchen. Die Zustandsübergänge ändern sich nicht, es gilt λπ0 = 1 * μ * π1 λπ k = k * μ * πk +1 für k = 1…∞
Wie vorhin lässt sich die Lösung zu πk = (ρk / k!)π0 leicht erraten, die Wahrscheinlichkeit π0 wird standardmäßig über die Normierung festgelegt. 1=
∞
∑ k =0
π k = π0
∞
∑ρ k =0
k
/ k! = π0eρ ⇒ π0 = e −ρ
112
9 Von der Lust am Modellieren
Und damit haben wir πk = (ρ k / k!)e −ρ , k = 0…∞. Man beachte, dass dieser Fall mit unendlich vielen Prozessoren sehr viel leichter zu behandeln ist als mit festen p! Wir berechnen zunächst den Mittelwert der aktiven Prozessoren ∞
=
∑
k * πk =
k =1
= ρe − ρ
∞
ρk
∑ k k! e
ρ
k =1
∞
ρk −1
∑ (k − 1)! = ρe
−ρ ρ
e =ρ
k =1
und mit Hilfe des 1. Little’schen Gesetzes die mittlere Verweilzeit λ= = ρ = λ/μ, d. h. aber = (1/μ). Für den Durchsatz ∞
D = ∑ μk * πk , μk = k * μ k =1
folgt auf die gleiche Weise D = μρ = λ und damit werden alle ankommenden Aufträge in der gleichen Zeit abgearbeitet – eine Blockade oder Abweisung wie im endlichen Fall erfolgt klarerweise nicht.
9.5 Modelle mit variabler Last In den bisherigen Situationen ist die Last, ausgedrückt über die Ankunftsrate λ, immer als konstant angenommen – eine Voraussetzung, welche in vielen Fällen (selbst im Rahmen einer Modellierung) nicht besonders zutreffend ist. Nahe liegt eine Abhängigkeit von der Zeit λ = λ(t), diese haben wir aber durch unsere Gleichgewichts- und Mittelwertsbetrachtungen praktisch eliminiert. In gewisser Hinsicht wird sie jedoch durch die Abfolge der möglichen Zustände k = 0, 1, 2, 3,... ersetzt. Wir greifen diesen Aspekt auf und postulieren als Ersatz eine Abhängigkeit der Form λ = λ(k). Ein gutes Beispiel dafür ist die Fluss-Kontrolle oder Fluss-Steuerung bei Datenübertragungsprotokollen (s. Abb. 9.5). Zum Beispiel wenn der Sender (S) den Empfänger (E) mit Datenpaketen überflutet
9.5 Modelle mit variabler Last
E
113
tE λ
stop; λ’< λ
λ’
S
tS
Abb. 9.5 Fluss-Kontrolle bei DFÜ
und die Senderate vom Empfänger heruntergesetzt wird λ λ’ < λ. Solche Mechanismen sind in Modemprotokollen, aber auch in TCP/IP verankert. Wir werden dazu zwei Modelle diskutieren – eines, welches Zustände mit k >> 1 gar nicht zulässt und leicht zu analysieren ist. Das andere ist etwas unhandlicher, wir können aber daran besser die Methode, Submodelle zu einem Ganzen zusammenzusetzen, besser verstehen. Wir beginnen mit dem leichteren Fall, dass die Last zustandsabhängig kontinuierlich abnimmt λ(k) = λ/k für k = 1, 2, 3,... – dies entspricht folgendem Zustandsdiagramm λ/1 0
λ/2 1
μ π0
λ/3 2
μ π1
λ/k 3
...
μ
μ
π2
πk-1
Im Gleichgewicht gilt ⎛λ⎞ ⎛λ⎞ ⎜ ⎟π0 = μπ1 sowie μπk = ⎜ ⎟πk −1 1 ⎝ ⎠ ⎝k⎠ und damit πk =
ρ πk −1 k
k–1
k = 1,2,3,...
ρ=
λ μ
πk
k
114
9 Von der Lust am Modellieren
Die Lösung kann durch sukzessives Einsetzen leicht zu πk =
ρk π0 k!
k = 1,2,3,...
geraten werden. Natürlich bestimmen wir die Wahrscheinlichkeit für das leere System π0 wieder über die Normierung: 1=
∞
∑π
k
= π0
k =0
∞
ρk
∑ k! = π e
ρ
0
k =0
Die Summe im obigen Ausdruck ist mit Maple [11] leicht zu bewerkstelligen. Damit gilt π0 = e − ρ
πk =
ρk −ρ e k!
k = 1,2,3,...
und wir können die Leistungsgrößen berechnen, als Erstes die Wartewahrscheinlichkeit pW = 1 – π0 = 1 – e–ρ
pw 1/e ~ 1/3
0
0,2
0,4
0,6
0,8
1
ρ
Abb. 9.6 Wartewahrscheinlichkeit im verzögerten System
Im verzögerten System muss bei höherer Last deutlich weniger wahrscheinlich (30%) gewartet werden (s. Abb. 9.6). Die mittlere Anzahl von Forderungen/Prozessen im Systemberechnet sich zu < k >=
∞
∑ k =1
kπ k = e − ρ
∞
∑ k =1
∞
k
ρk ρk −1 = e − ρρ = e−ρρeρ = ρ k! ( k − 1 )! k =1
∑
9.5 Modelle mit variabler Last
115
und zeigt damit im Vergleich zum Standardsystem M/M/1/∞ einen simplen Verlauf in Abhängigkeit von ρ – vor allem im Überlastbereich ρ > 1/2 sind bis zu 30% weniger Prozesse aktiv. Dieser Sachverhalt wird noch verständlicher, wenn wir die Wahrscheinlichkeit p(n) berechnen, dass mindestens n Forderungen/Prozesse im System sind: p( n ) =
∞
∑
πk = 1 −
k =n
n −1
∑
πk = 1 −
k =0
n −1
ρk −ρ Γ(n, ρ) ρ e = 1 − e −ρ e Γ(n,0) k! k =0
∑
Wir vergleichen p(n) mit ρn, dem Wert für das Standardsystem M/M/1/∞ ρn
p(n)
Abb. 9.7 Vergleich mit dem M/M/1/∞-Modell
und konstatieren, dass im lastabhängigen Modell höhere n-Werte praktisch nicht vorkommen (s. Abb. 9.7). Bestimmt man den Durchsatz D(λ) und die Auslastung ρ(S), so muss man berücksichtigen, dass λ zustandsabhängig ist – sinnvoll ist daher < λ >=
λ
∞
∑λ π
k k
k =0
zu substituieren. Im Gleichgewicht wird D(λ) = <λ>, die explizite Rechnung ergibt D(λ ) =
∞
∞
∞
k ⎛ λ ⎞ ρk ρk −1 ⎛ λ ⎞ ρ −ρ −ρ = μe −ρ ⎜ ⎟ e = e μ ⎜⎜ ⎟⎟ k + 1 ⎠ k! (k − 1)! μ (k + 1)! k =0 ⎝ k =0 ⎝ ⎠ k =0
∑
= μe −ρ (eρ − 1) = μ(1 − e −ρ )
∑
∑
116
9 Von der Lust am Modellieren
Für ρ << 1 gilt e–ρ ≈ 1 – ρ und damit D(λ) = μ*ρ = λ wie nicht anders zu erwarten, ansonsten sind die Verhältnisse so wie bei der Wartewahrscheinlichkeit. Berechnen wir die Auslastung ρ(S) =*D(λ), wobei
< t S >=
⎛1⎞ 1 , ρ(S) = ⎜⎜ ⎟⎟ * μ(1 − e −ρ ) = 1 − e −ρ μ ⎝μ⎠
d. h. bis auf konstante Faktoren haben wir wiederum die (1 – e–ρ)-Abhängigkeit. Als letzte Leistungsgröße bleibt uns noch die Diskussion der mittleren Verweilzeit, welche natürlich am einfachsten über das 1. Gesetz von Little <λ>* = bestimmt wird: < t V >=
ρ 1 ρ2 = = * −ρ < λ > μ(1 − e ) λ 1 − e −ρ
Für ρ << 1 nähern wir wieder e–ρ ≈ 1 – ρ und erhalten damit einen linearen Verlauf≈ (1/λ)*ρ, eine genauere Analyse zeigt auch für größere ρ-Werte keine qualitativ entscheidende Abweichung davon.
9.6 Komposition von Submodellen Alternativ zu dem gerade diskutierten Modell kann man eine Konstruktion betrachten, in der die Last/die Ankunftsrate λ genau in einem Zustand n von λ auf λ’ = α λ mit 0 ≤ α ≤ 1 herabgesetzt wird. λ
λ
λ
λ λ’
0
1
2
...
S1
n–1
n
n+1 S2
Abb. 9.8 Zustandsabhängige Fluss-Kontrolle
Aus Abb. 9.8 wird ersichtlich, dass man ein endliches Submodell S1(0...n) mit einem nicht beschränkten Submodell S2 zusammensetzen muss. Den Anschluss bildet der gemeinsame Zustand n und der Idle/Leer-Zustand 0. S1 ist nichts anderes als M/M/1/n, früher M/M/1/B, mit πk = ρk*π0, k = 0, 1,... n für die Zustandswahrscheinlichkeiten (ρ = λ/μ).
9.6 Komposition von Submodellen
117
S2 stellt sich bei genauer Betrachtung als ein verschobenes Standard(M/M/1/∞)-Modell heraus mit folgenden Beziehungen für die Zustandswahrscheinlichkeiten πk: πn+1 = (α*λ/μ)πn = α*ρ*πn, πn+k+1 = α*ρ*πn+k Da für den gemeinsamen Zustand n gilt πn = ρnπ0, können wir leicht durch Probieren raten πn+k = αkρkρnπ0. Die Zustandswahrscheinlichkeit π0 legen wir im üblichen Verfahren über die Normierung fest: n
1=
∑
πk +
k =0
π0 = (1 − ρ)
∞
∑
n
πk =
k = n +1
∑
ρ k π0 +
k =0
∞
∑α ρ ρ π k k n
0
k =1
1 − αρ (1 − αρ) − (1 − α )ρn +1
Korrekturterm zum Standardmodell (α = 1) Für die Wahrscheinlichkeit pw = 1 – π0 ergibt sich damit pw = ρ
(1 − αρ) − (1 − α)ρn (1 − αρ) − (1 − α )ρn +1
An dieser Leistungsgröße pw lassen sich schon alle wesentlichen Eigenschaften des Modells diskutieren. Werte von α nahe bei 1, also wenig Änderung in λ, führen zu pw ~ ρ, damit ergibt sich kaum ein Unterschied zum Standardmodell. Ist α ~ 1/5, erhalten wir bei ρ ≥ 1/2 eine ca. 30-prozentige Verminderung der Wartezeit (s. Abb. 9.9).
1
ρ n = 10 n=5
0,2 0
0,2
0,4
Abb. 9.9 Wartezeit bei der einfachen Fluss-Kontrolle
0,6
0,8
1
118
9 Von der Lust am Modellieren
Wachsendes n, d. h. die Fluss-Kontrolle erfolgt bei einer höheren Anzahl von Forderungen im System, bewirkt wiederum eine Approximation an das Standardmodell. Nur Werte n ≤ 5 führen zu signifikanten Unterschieden, in diesem Fall nähern wir uns aber dem Verlauf pw = 1 – e–ρ des bereits ausführlich diskutierten Modells λ(k) = λ/k. Die vernachlässigbaren Abweichungen führen uns zu der Annahme, das Problem der Lastverminderung ausschließlich mit diesem Konzept zu modellieren und auf λ’ = α λ bei festem n zu verzichten. In methodischer Hinsicht ist jedoch das Zusammensetzen von Submodellen äußerst nützlich und effektiv, wie wir im Folgenden sehen werden.
9.7 Leistungsunterschiede Wir untersuchen den Unterschied zwischen den Modellen M(λ)/M(m*μ)/1/∞ und M(λ)/M(μ)/m/∞ an der Leistungsgröße, der mittleren Wartezeit, bzw. , der mittleren Verweilzeit. Die Variable m steht für m Verarbeitungseinheiten/Prozessoren, welche alle die gleiche Bearbeitungsrate μ haben – also eine Verallgemeinerung des Standardmodells. Wie üblich benötigen wir die Zustandswahrscheinlichkeiten πk, k = 0, 1, 2, … m, m + 1, …, und beginnen deshalb mit dem Zustandsdiagramm: λ 0
λ 1
μ π0
λ 2 …
2μ π1
m
λ m+1
m*μ π2
Modell M/M/m/0
m+2 … m*μ
πm
πm+1
πm+2
Modell M/M/1/∞
λ
λ
μk = k*μ
μ = m*μ
πk = ρk/k! * π0
πk = πk^ρk–m
k = 0, 1,... m
k>m
ρ = λ/μ
ρ^ = ρ/m
9.7 Leistungsunterschiede
119
Im Standardverfahren würde man in diesem zusammengesetzten Modell jetzt π0 über die Normierung berechnen. Da wir nur anbzw. interessiert sind, soll die Normierungsrechnung möglichst vermieden werden. Wir argumentieren = + , = 1/μ d. h. wir brauchen noch . Solange die Zahl der Anforderungen kleiner als die Zahl der Prozessoren ist, gibt es keine Wartezeit, also trägt nur das rechte Submodell dazu bei. Mit dem 2. Little’schen Gesetz λ* = benötigen wir eigentlich nur die mittlere Zahl der wartenden Forderungen < q >=
∞
∑ ( k − m) π
k
= πm
k =m
∞
∑ (k − m)ρˆ
k −m
k =m
= πm (0 + 1 * ρˆ 1 + 2 * ρˆ 2 + ...) = πm
∞
∑ kρˆ
k
k =1
= πm
ρˆ (1 − ρˆ ) 2
Für den letzten Schritt der Summation setzen wir Maple [11] ein. Hinsichtlich der weiteren Überlegungen zeigt es sich, dass es günstig ist, die Wartewahrscheinlichkeit pW (wie in der letzten Analyse) einzuführen pW =
∞
∑π
k
= πm
k =m
∞
∑ ρˆ
k −m
k =m 2
= π m (1 + ρˆ + ρˆ + ρˆ 3 + ...) 1
= πm
∞
∑ ρˆ
k
k =0
=
πm 1 − ρˆ
Da < q >= πm
ρˆ π ρˆ ρˆ = m * = pW 2 1 − ρˆ (1 − ρˆ ) 1 − ρˆ 1 − ρˆ
folgt < t W >=
1 ρˆ 1 λ p 1 1 p * pW = * * W = * * W ˆ ˆ λ 1− ρ λ m * μ 1 − ρ μ m 1 − ρˆ
Da= 1/μ ergibt sich letztlich < t W > = < tS >
pW m(1 − ρˆ )
120
9 Von der Lust am Modellieren
Als Problem bleibt natürlich die explizite Ausformulierung der Wartewahrscheinlichkeit pW, wir verzichten darauf und schätzen (brutal aber richtig) pW < ρ/m = ^ρ (s. Abb. 9.10). M/M/1/∞ M/M/m/∞
pW 1
ρ
ρ/m pW (exakt)
0 0
1
m
ρ
Abb. 9.10 Wartewahrscheinlichkeit im M/M/m/∞-Modell
Mit dieser Abschätzung folgt für die mittlere Wartezeit < t W > ≤ < tS >
ρˆ m(1 − ρˆ )
und für die mittlere Verweilzeit einer Forderung ⎞ ⎛ ρˆ ⎟⎟ < t V > = < t S > + < t W > ≤ < t S > ⎜⎜1 + ⎝ m(1 − ρˆ ) ⎠ wobei 0 ≤ ρ^ ≤ 1 oder 0 ≤ ρ ≤ m. Wir demonstrieren die Einsatzfähigkeit des obigen Resultats an einem etwas ausführlicheren Beispiel [6]. Ein Datenbank-Server empfängt 40 req/sec, seine mittlere Service-Zeit für ein req ist 20 msec = 20*10–3 sec. Mit diesen Werten folgt für die Ankunfts- und Bearbeitungsraten
λ = 40 req/sec, μ = 1/= 1/20*103 sec–1 = 50 req/sec von denen wir annehmen, dass beide die Mittelwerte einer Exponentialverteilung sind. In diesem Fall kann der Server durch ein M/M/1/∞-Modell modelliert werden
9.7 Leistungsunterschiede
ρ=
λ 40 4 = = (80%) μ 50 5
121
(hohe Auslastung!)
1 1 1 = < tS > * = 5 < t S > = 100 m sec * 4 μ 1− ρ 1− 5
< t V >=
Da= + , ist = 80 msec (4 ), d. h. 80% der Verweilzeit gehen mit Warten verloren. Zur Verbesserung dieser Situation stehen folgende Alternativen zur Auswahl: a) neuer Prozessor mit = /2 b) zwei Prozessoren mit Wir analysieren zunächst die Alternative (a) mit dem schnelleren Prozessor: μ=
1 < tS > a
=
2 2 , ρ = λ* < t S > / 2 = (40%) < tS > 5
Damit haben wir schon einmal eine deutliche Lastverminderung. Die neue mittlere Verweilzeitberechnet sich wie , < tS > 50 1 5 = * < tS > = m sec * 3 1− 2/5 6 2 20 1 ⎛5 1⎞ > = < t V a > − < t Sa > = ⎜ − ⎟ < t S > = < t S > = m sec 3 3 ⎝6 2⎠
< t Va > = < t Wa
Hinsichtlich der Verbesserung von Warte- und Verweilzeit sind die Gewinne eklatant < tV > < tV > a
=
5 < tS > < tW > 4 < tS > = 6, = = 12 a 5 / 6 < tS > < t W > 1/ 3 < tS >
wobei vor allem die Wartezeitverminderung beachtenswert ist.
122
9 Von der Lust am Modellieren
Die Alternative (b) besteht aus dem Einsatz von zwei Prozessoren – beide mit der Service-Zeit. Das entsprechende theoretische Modell ist M/M/2/∞, d. h. m = 2. Mit unseren vorherigen Überlegungen gilt 1 pW * m 1 − ρˆ ρ/ 2 1 ≤ < tS > * * m 1− ρ/ 2
< t W b > = < tS > *
und wenn die Zahlenwerte ρ = 4/5 und m = 2 eingesetzt werden 2 5 1 2/5 1 < t W b > ≤ < tS > * * = < tS > * * = < tS > 5 6 3 2 1− 2/5 4 < t V b > ≤ < tS > + < t W b > = < tS > 3
Bezogen auf die unbefriedigende Ausgangssituation ergeben sich folgende Relationen < tV > < t Vb >
=
5 < tS > 15 < t W > 4 < tS > = , = = 12 4 / 3 < tS > 4 < t W b > 1/ 3 < tS >
Das heißt der Gewinn bei der Wartezeit ist gegenüber der schnellen Prozessorlösung (a) gleichgeblieben, bei der Verweilzeit ist das Verhältnis nicht mehr so günstig. Man gewinnt mit dem Dual-Prozessor (b) nur noch einen Faktor 4 statt 6 bei der Alternative (a). Interessant ist natürlich noch, wie gut bzw. schlecht unsere Approximation pW ~ ρ/m gegenüber der exakten Rechnung ist. Mit den vorliegenden Zahlenwerten folgt π0
pW
/
/
exakt
3/7
2/9 (8/35)
1/5 (4/21)
6/5
approx.
-
2/5
1/3
4/3
Die Resultate der Näherung liegen, wie nicht anders zu erwarten, deutlich über den exakten Werten – bei den mittleren Verweilzeiten beträgt die Differenz allerdings nur ca. 10%, dies ist aber wegen des Einflusses der Service-Zeiten verständlich.
9.8 Modell eines File-Servers
123
9.8 Modell eines File-Servers Als letztes Beispiel diskutieren wir das Modell eines File-Servers mit M Clienten (s. Abb. 9.11). Der File-Server S(μ) bedient im Mittel μ Aufträge pro Zeiteinheit. Diese werden von M-Clienten jeweils mit der gleichen Rate α erzeugt, α α α
1 2 3
S(μ)
. . . α
M Abb. 9.11 File-Server-Modell
im Server bearbeitet und anschließend zurückgegeben. Dabei wird folgendes Zustandsschema eingehalten. 0: kein Client aktiv 1: ein Client aktiv 2: zwei Clienten aktiv . . . k: k Clienten aktiv M – 1: M – 1 Clienten aktiv M: M Clienten aktiv
M*α (M – 1)α (M – 2)α
Aufträge möglich Aufträge möglich Aufträge möglich
(M – k)α 1*α 0
Aufträge möglich Aufträge möglich Aufträge möglich
und die Abläufe bzw. Übergänge zwischen den Zuständen 0, 1,... M – 1, M gehorchen dem Diagramm
M*α
(M – 1)α
0
1 μ
2 μ
(M – k)α ...
k
k+1 μ
1*α ...
M–1 M μ
Dies impliziert zwischen den Zustandswahrscheinlichkeiten (πk, k = 0, 1,... M) die Gleichgewichtsbeziehungen
124
9 Von der Lust am Modellieren
M*α*π0 = μ*π1
π1 = M(α/μ)π0
(M – k)α*πk = μ*πk+1
πk+1 = (M – k)(α/μ)πk k = 1,... M – 1
1*α*πμ–1 = μ*πM
πM = 1*(α/μ)πM–1
Wir lösen schrittweise auf (ρ = α/μ): π2 = (M – 1)ρ*π1 = (M – 1)M*ρ2π0 π3 = (M – 2)ρ*π2 = (M – 2)(M – 1)M*ρ3π0 . . . πk = (M – k + 1)(M – k + 2)... (M – 1)M*ρkπ0 und legen die noch freie Konstante über die Normierung fest: M ⎛ ⎞ π k = π 0 ⎜1 + (M − k + 1)(M − k + 2)...(M − 1)Mρ k ⎟ ⎜ ⎟ k =0 ⎝ k =1 ⎠ Zum Auswerten der Summe bringen wir die Koeffizienten von ρk in eine bessere Darstellung, für M = 3 folgt zum Beispiel: M
1=
∑
K=1 K=2 K=3 K=4
∑
M M(M – 1) M(M – 1)(M – 2) M(M – 1)(M – 2)(M – 3)
3 3*2 3*2*1 3*2*1*0
Das Ganze sieht in etwa so aus wie Binomialkoeffizienten: ⎛M⎞ M! ⎜⎜ ⎟⎟ = ⎝ k ⎠ k!(M − k )!
⎛M⎞ M! k!⎜⎜ ⎟⎟ = ⎝ k ⎠ (M − k )!
und dies sind genau unsere Koeffizienten (M – k + 1)(M – k + 2)...(M – 1)M, wobei ⎛ M ⎞ M! ⎜⎜ ⎟⎟ = =1. ⎝ 0 ⎠ 0!M!
9.8 Modell eines File-Servers
125
Für unsere Normierungsgleichung folgt nun ⎛ 1 = π 0 ⎜1 + ⎜ ⎝
M ⎛M⎞ ⎛M⎞ ⎞ k!⎜⎜ ⎟⎟ρk ⎟ = π0 k!⎜⎜ ⎟⎟ρk = π0SM (ρ) k ⎠ ⎟⎠ k⎠ k =1 ⎝ k =0 ⎝ M
∑
∑
Die Berechnung von SM(ρ) überlassen wir Maple/Mathematica [11, 12] SM (ρ) = e1 / ρρ M Γ(M + 1, 1 / ρ)
wobei wiederum die schon bekannte unvollständige Γ-Funktion auftaucht. Da π0 = 1/SM(ρ), folgt hierfür
M=1
2
10
5
Abb. 9.12 Idle-Wahrscheinlichkeit π0
und man sieht, dass ab 5 Clienten und ρ > 1/2 das System fast vollständig den Idle(0)-Zustand vermeidet (s. Abb. 9.12). Betrachten wir den einfachsten Fall mit einem Clienten (M = 1) 1*α π0 0
1 π1
μ wobei π0 = 1/(1 + ρ) und π1 = ρ/(1 + ρ).
126
9 Von der Lust am Modellieren
π π0 π1
ρ Abb. 9.13 Zustandswahrscheinlichkeit im repair-man-Modell
Man erkennt die Bevorzugung des Leer(Idle)-Zustandes für ρ ≤ 1/2, erst für ρ > 1 ist es damit vorbei. Für die Wartewahrscheinlichkeit gilt pW = 1 – π0 = ρ/(1 + ρ) = π1, d. h. ein kontinuierliches Anwachsen mit steigender Last (Bemerkung: wegen des Pendelns zwischen zwei Zuständen läuft dieses Modell unter dem Namen repairman, s. Abb. 9.13). Zurück zum M-Clienten-Modell, das wir jetzt vollständig behandeln können. π0 =
1 SM (ρ)
⎛M⎞ πk = k!⎜⎜ ⎟⎟ρk π0 ⎝k⎠
k = 1, 2, ... M − 1, M
Als erste Leistungsgröße schauen wir uns die Wartewahrscheinlichkeit pW(M, ρ) an: p W (M, ρ) = 1 − π0 = 1 −
e −1 / ρ ρM Γ(M + 1, 1 / ρ)
9.8 Modell eines File-Servers
127
5
M=1
Abb. 9.14 Wartewahrscheinlichkeit im File-Server-Modell
Man sieht sofort, dass man nur dann eine reelle Chance hat, einen File-Server ohne große Wartezeiten für die einzelnen Clienten zu betreiben, wenn ρ ≤ 1/5, also im Niedriglastbereich (s. Abb. 9.14)! Als nächste Leistungsgröße betrachten wir die mittlere Zahlvon Anforderungen im Server/Clienten-System: M
< k >=
∑
M ⎛M⎞ ⎛M⎞ k!⎜⎜ ⎟⎟k * ρk = π0ρ k!⎜⎜ ⎟⎟k * ρk −1 k⎠ k⎠ k =1 ⎝ k =1 ⎝ M
k * π k = π0
k =0
∑
∑
Nun ist k*ρk–1 = d(ρk)/dρ und wir können ohne Probleme die Differenziation d/dρ vor die Summe ziehen < k >= π0ρ
=
M ⎛M⎞ ⎞ d ⎛⎜ d k!⎜⎜ ⎟⎟ρk ⎟ = π0ρ (SM (ρ) − 1) ⎜ ⎟ dρ ⎝ k =1 ⎝ k ⎠ ⎠ dρ
∑
1 ρSM (ρ)
+
Mρ − 1 Mρ − 1 π0 (M, ρ) p = + =M− W ρ ρ ρ ρ
Der Verlauf von(M, ρ) kann relativ simpel aus den bisherigen Resultaten bestimmt werden: π (M, ρ) ~ M , denn π0 fällt für alle M mit ρ >> 1 : < k > ~ M + 0 ρ wachsendem ρ π0 1 1 = ~ → 0 1 / ρ M +1 ρ e1/ ρ ρ M +1Γ(M + 1, 1 / ρ) e ρ M!
128
9 Von der Lust am Modellieren
ρ < 1: hier läuft die Argumentation über 1/ ρ >> 1(M) und(M, ρ = 0) = 0 Also folgt ein ähnliches Verhalten wie pw (s. Abb. 9.15).
5
M=4
4 3 2 1
M=1
0 0
1
ρ
2
Abb. 9.15 Mittlere Zahl von Aufträgen im Client/Server-Modell
Die Verweil- und Wartezeiten berechnen wir mithilfe der Little’schen Gesetze, dazu benötigen wir nebenauch zunächst : M M M M ⎛M ⎞ < q >= ∑ (k − 1) πk = ∑ kπk − ∑ π k = ∑ kπk −0 * π0 − 1* π1 − ⎜ ∑ π k −π0 − π1 ⎟ k =2 k =2 k =2 k =0 ⎝ k =0 ⎠ = < k > −π1 − 1 + π0 + π1 =< k > −(1 − π0 ) =< k > −p w Für das Server-M-Clienten-Modell folgt also
=
Mρ − 1 ρ
+
M ρ − 1 + π0 − ρp w π0 − pw = ρ ρ
ρ < q > = Mρ − (1 − π0 ) − ρp w = Mρ − p w − ρp w = Mρ − (1 + ρ)p w < q >= M −
1+ ρ pw ρ
Im Fall M = 1 ist pw = ρ/(1 + ρ) und damit= 0, für M = 2 gilt pw = (2ρ + 2ρ2)/(1 + 2ρ + 2ρ2), sodass folgt= 2ρ2/(1 + 2ρ + 2ρ2) (s. Abb. 9.16).
9.8 Modell eines File-Servers
129
1,5 1
M=2 0,5 0 0
1
2
3
ρ
Abb. 9.16 Mittlere Warteschlangenlänge
Zur Bestimmung der mittleren Wartezeitwürde man das Little’sche Gesetz λ* = heranziehen – allerdings gibt es nur eine Generierungsrate α von einzelnen Clienten – daher bietet sich hier die Mittelung M
< α >=
∑α
k
* πk
k =0
an. Vom Zustandsdiagramm her ist αk = (M – k)*α und daher M
< α >=
∑
M
( M − k ) * α * π k = αM
k =0
∑ k =0
M
πk − α
∑k * π
k
k =0
= α*M*1 – α*= α(M – ) = α(M – M + pw/ρ) = α*pw/ρ = μ*pw Einsetzen in das 2. Little’sche Gesetz <α>*