125
Universit¨ at Paderborn Fakult¨ at f¨ ur Elektrotechnik / Informatik / Mathematik Diplomarbeit Implementierung und Analyse von Lastbalancierungsverfahren in einer Web-Computing-Umgebung von Joachim Gehweiler Erstgutachter: Prof. Dr. Friedhelm Meyer auf der Heide Zweitgutachter: Prof. Dr. Odej Kao Paderborn, im Februar 2005

Implementierung und Analyse von Lastbalancierungsverfahren

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Zweitgutachter:
Danksagung
An dieser Stelle mochte ich Prof. Dr. Friedhelm Meyer auf der Heide und Olaf Bonorden fur die hervorragende Betreuung und Ulrich Ahlers fur das Bereitstellen der Testrechner danken.
Erklarung
Hiermit versichere ich, dass ich die vorliegende Arbeit sowie die zugehorige Software selb- standig angefertigt und keine weiteren als die angegebenen Quellen und Hilfsmittel benutzt habe.
Paderborn, im Februar 2005
4.2.1 Durchfuhrung der initialen Verteilung . . . . . . . . . . . . . . . . . 26
4.2.2 Der Lebenszyklus eines BSP-Programms . . . . . . . . . . . . . . . 29
4.2.3 Implementierung von PON . . . . . . . . . . . . . . . . . . . . . . . 30
4.2.4 Implementierung von PMN . . . . . . . . . . . . . . . . . . . . . . 31
4.2.5 Implementierung von SOJ . . . . . . . . . . . . . . . . . . . . . . . 33
4.2.6 Implementierung von SMJ . . . . . . . . . . . . . . . . . . . . . . . 34
5 Analyse 37
5.3 Lastmessungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.3.5 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4.1 Die Testbedingungen . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6 Zusammenfassung und Ausblick 97
6.1 Die Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
A.1 Der Quelltext von PUBWCL v2.0 . . . . . . . . . . . . . . . . . . . . . . . 101
B Quellcode 109
B.2 Das BSP-Programm fur die Benchmarks . . . . . . . . . . . . . . . . . . . 110
B.3 Der Algorithmus IVT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
B.4 Der Algorithmus MZA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
B.5 Der Algorithmus OVT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
iv
Zusammenfassung
1
ZUSAMMENFASSUNG
2
Wenn man bedenkt, wie viele Millionen Rechner uber die ganze Welt verteilt existieren, kann man sich leicht vorstellen, dass deren Idle-Zeit zusammengenommen eine riesige unge- nutzte Rechenkapazitat darstellt. Daher beschaftigen sich seit einiger Zeit Wissenschafter damit, wie man diese ungenutzte Rechenkapazitat fur rechenintensive Aufgaben nutzen kann.
In den meisten Fallen werden Programme, im Folgenden als Clients bezeichnet, zum Down- load angeboten, mit denen die Besitzer bzw. Administratoren der Rechner ihre ungenutzte Rechenkapazitat auf freiwilliger Basis1 einem Großprojekt zufuhren konnen.
distributed.net [dis05], Great Internet Mersenne Prime Search (GIMPS) [GIM05], Search for Extraterrestrial Intelligence (SETI@home) [set05] oder Folding@home Distributed Com- puting [fol05] sind z.B. bekannte derartige Projekte.
Eine gemeinsame Eigenschaft der genannten Projekte ist, dass das zu untersuchende Pro- blem von einem zentralen Server in viele kleine Teilprobleme zerlegt wird; die Clients, die – oftmals in Form von Bildschirmschonern – im Hintergrund die Berechnungen durchfuhren, laden sich ein Teilproblem herunter, losen es, schicken das Ergebnis zuruck zum Server und fahren mit dem nachsten Teilproblem fort.
Bei dieser Herangehensweise finden die Berechnungen zwar parallel statt, jedoch konnen zeitgleich nur von einander unabhangige Teilprobleme gelost werden, da zwischen den Clients keinerlei Kommunikation stattfindet.
Um diese Einschrankung aufzuheben, wurde in [Geh03] das System Paderborn Univer- sity BSP-based Web Computing Library (PUBWCL) entwickelt. PUBWCL fuhrt massiv parallele Algorithmen auf uber das Internet verteilten Rechnern aus, die nach dem Bulk- Synchronous Parallel (BSP)-Modell miteinander kommunizieren und sich synchronisieren. Nahere Informationen zum BSP-Modell und PUBWCL folgen in den Kapiteln 2.1 und 2.4.
1Bei einigen Projekten wird eine Belohnung ausgesetzt fur denjenigen, auf dessen Recher eine Losung gefunden wurde.
3
Da die PUBWCL zugeteilten Rechenkapazitaten auf den einzelnen Rechnern standig schwan- ken und ein BSP-Programm bereits durch einen langsamen Prozess
’ ausgebremst‘ werden
kann, unterstutzt PUBWCL Migrationen (Details in den Kapiteln 2.2 und 2.4), um die Rechenlast zur Laufzeit geeignet umverteilen zu konnen.
Um die Rechenlast nun sinnvoll zu verteilen, bedarf es intelligenter Lastbalancierungsstra- tegien, die fur jeden BSP-Prozess entscheiden, ob eine Migration nutzlich ist, und welcher Rechner ggf. das Migrationsziel sein sollte. In dieser Diplomarbeit werden deshalb verschie- dene Lastbalancierungsstrategien fur PUBWCL implementiert und analysiert.
Im Folgenden werden zunachst wichtige Grundlagen vorgestellt (Kapitel 2). Die Konzeption der Arbeit wird in Kapitel 3 dargelegt. Den Schwerpunkt bilden die Kapitel 4 und 5 uber die Implementierung und Analyse. Eine abschließende Zusammenfassung wird in Kapitel 6 gegeben.
Verwandte Arbeiten
In [LMSadH04] stellen Stefano Leonardi, Alberto Marchetti-Spaccamela und Friedhelm Meyer auf der Heide ein Modell vor, in dem Computer mit gleich schnellen Prozessoren zu jedem Zeitpunkt entweder vollstandig oder gar nicht ausgelastet sind; jeder Computer bietet also eine Sequenz disjunkter Zeitintervalle an, in denen er verfugbar ist. Die Intervall- großen und die Joblangen (die Berechnungsphase eines Superstep in einem BSP-Programm laßt sich offensichtlich in einzelne Jobs zerlegen) sind Zweierpotenzen. In dem vorgestellten Modell ist keine Preemption moglich, d.h. die Prozesse konnen nicht an einem Intervallende angehalten und im nachsten Intervall fortgesetzt werden, sondern sie werden am Interval- lende abgebrochen und mussen spater neu gestartet werden. Die Autoren nehmen weiter an, dass sich die verfugbare Rechenkapazitat eines Netzwerks von n Computern P1, . . . , Pn
zwischen zwei auf einander folgenden Zeitabschnitten, I1 und I2, nicht dramatisch andert, und formulieren zwei Einschrankungen, von denen die schwachere wie folgt lautet:∑
i∈J
q (r) i ∀J ⊆ {1, . . . , n} : |J | ≥ α · n
wobei 0 < ε, α < 1 und q (r) i bzw. q′
(r) i die Anzahl der freien Intervalle der Lange 2r in I1
bzw. I2 fur Prozessor Pi sind. Darauf aufbauend prasentieren die Autoren u.a. einen Online- Algorithmus, der einen Superstep bestehend aus m gleich schweren Jobs mit competitive ratio O(log∗(m)) ausfuhrt.
Maria Calzarossa und Giuseppe Serazzi beschrieben in [CS93] Charakteristiken der Aus- lastung fur bestimmte Typen von Systemen, z.B. Recher im Batchbetrieb, Rechner im interaktiven Betrieb, Datenbank-Server oder Parallelrechner. Die in dieser Arbeit betrach- teten Rechner werden jedoch typischerweise universell genutzt und lassen sich daher nicht ohne weiteres einer dieser Klassen zuordnen.
In [Kun91] wird untersucht, wie gut ein gegebenes Lastbalancierungsverfahren arbeitet,
4
wenn es seine Entscheidungen anhand bestimmter Kenngroßen zur Beschreibung der Aus- lastung eines Systems (u.a. die Idle-Zeit, die Anzahl der Prozesse in der Run-Queue und der Load-Average-Wert) trifft. Da es sich dabei jedoch um ein
’ binares‘ Lastbalancierungs-
verfahren handelt (d.h. es gibt kein Maß dafur, wie viel Kapazitat auf einem Rechner noch frei ist, sondern es wird pro Rechner nur zwischen den Zustanden
” unterbelastet“ und
5
In diesem Kapitel werden wichtige Modelle, Konzepte und Projekte vorgestellt, auf die spater noch mehrfach Bezug genommen wird.
2.1 Das BSP-Modell
Um die Entwicklung paralleler Algorithmen zu vereinfachen, entwarf Leslie G. Valiant das Bulk-Synchronous Parallel (BSP)-Modell (s. [Val90]), das eine Verbindung zwischen der zu verwendenden Hardware und der zu entwickelnden Software darstellt; es ermoglicht dem Software-Entwickler eine abstrahierende Sicht auf die technische Struktur und die Kommunikationsmoglichkeiten der einzusetzenden Hardware (z.B. einen Parallelrechner, ein Cluster von Workstations oder eine Menge uber das Internet verbundener PCs).
In diesem Modell besteht ein Computer – von Valiant als BSP-Computer bezeichnet – aus
• einer Menge von Prozessor/Speicher-Paaren, zwischen denen uber einen zugrunde liegenden Kommunikationsmechanismus (z.B. ein Netzwerk oder Shared Memory) Punkt-zu-Punkt-Kommunikation moglich ist (vgl. Abbildung 2.1), und
• einem Mechanismus zur effizienten Barriere-Synchronisation.
Ein BSP-Algorithmus besteht aus einer Reihe von zeitlich durch die Barriere-Synchronisa- tion getrennten Abschnitten, den sog. Supersteps. Innerhalb eines Supersteps fuhrt jeder Prozessor lokale Berechnungen durch und verschickt ggf. Nachrichten an andere Prozes- soren; anschließend signalisiert er durch Aufruf der Synchronisationsfunktion, dass er fur die Barriere-Synchronisation bereit ist. Haben alle Prozessoren die Synchronisationsfunk- tion aufgerufen, wird noch solange gewartet, bis alle Nachrichten an ihrem Ziel angekom- men sind. Dann beginnt der nachste Superstep und erst dann stehen den Prozessoren die wahrend des letzten Supersteps versandten Nachrichten zur Verfugung. Abbildung 2.2 veranschaulicht diesen Vorgang.
7
PID 0 PID 1 PID 2 PID p-2 PID p-1
Kommunikationsmedium
Prozessor 0 ...Prozessor 1 Prozessor 2 Prozessor p-2 Prozessor p-1
ein Superstep
lokale Berechnungen
Nachricht verschicken
8
Prozessor 0 ...Prozessor 1 Prozessor 2 Prozessor p-2 Prozessor p-1
Barriere-Synchronisation
Barriere-Synchronisation
Abbildung 2.3: ’ Ausbremsen‘ eines BSP-Programms
Es existieren verschiedene Bibliotheken zur Entwicklung von Programmen nach dem BSP- Modell, z.B. die BSPlib (s. [HMS+98]), die Paderborn University BSP Library (PUB) (s. [BJvOR03], [pub05b]) oder die Paderborn University BSP-based Web Computing Library (PUBWCL) (s.u.).
2.2 Migration
Komplexe Berechnungen erfordern oft viel Rechenzeit und die Ausfuhrung eines BSP- Programms kann somit relativ lange andauern. Daher ergibt sich in einer Web-Computing- Umgebung folgendes Problem: Mochte der Besitzer des Rechners, auf dem ein BSP-Prozess lauft, seinen Rechner vorubergehend wieder selbst stark beanspruchen, sinkt die Rechen- zeit, die dem BSP-Prozess zur Verfugung steht, stark ab; dadurch wird jedoch nicht nur dieser eine Prozess des BSP-Programms aufgehalten, sondern es wird auch die nachste Syn- chronisation (und somit die Ausfuhrung des gesamten BSP-Programms) hinausgezogert. Abbildung 2.3 veranschaulicht dies.
Um auf Schwankungen der zur Verfugung stehenden Rechenleistung wahrend der Laufzeit
9
KAPITEL 2. GRUNDLAGEN
reagieren zu konnen, ist ein Mechanismus vonnoten, der es erlaubt, einzelne BSP-Prozesse wahrend der Ausfuhrung des BSP-Programms zu migrieren und dabei die Kommunikation der BSP-Prozesse untereinander aufrecht zu erhalten.
2.3 Fehlertoleranz
Durch die aufgrund komplexer Berechnungen oftmals relativ lange Laufzeit eines BSP- Programms steigt die Wahrscheinlichkeit stark an, dass irgendeiner der Rechner, auf dem gerade ein BSP-Prozess ausgefuhrt wird, vor der Vollendung des BSP-Programms absturzt oder das Peer-to-Peer-System verlasst.
Web-Computing-Umgebungen fur BSP-Programme sollten daher unbedingt resistent sein gegen den Ausfall einiger Rechner.
2.4 PUBWCL
Die Paderborn University BSP-based Web Computing Library (PUBWCL) (s. [Geh03], [pub05a]) ist eine Bibliothek zur Entwicklung paralleler Algorithmen nach dem BSP- Modell, konzipiert fur den Einsatz auf uber das Internet verteilten Rechnern. PUBWCL nutzt auf diesen Rechnern jeweils nur die ansonsten ungenutzte Rechenleistung.
Die eingesetzte Programmiersprache ist Java, woraus sich Vorteile in puncto Sicherheit1, Plattformunabhangigkeit und Objekt-Orientierung ergeben.
Als Teilnehmer am System PUBWCL muss man sich wie in den in der Einleitung zitier- ten Projekten einen Client2 herunterladen und installieren. Im Gegensatz zu den ande- ren Projekten, die nur dann eine Internetverbindung benotigen, wenn sie die Ergebnis- se hochladen und sich neue Arbeit zuteilen lassen, setzt PUBWCL wegen der standigen Kommunikation eine permanente Internetverbindung voraus; neben direkten Anschlussen kommen aber auch Einwahlzugange (z.B. DSL-Verbindungen) in Frage, da PUBWCL kurz- fristige Netzwerkfehler (z.B. Unterbrechung der Verbindung durch Neueinwahl) und sogar IP-Adressanderungen toleriert.
Die Architektur von PUBWCL ist hybrid: Die Ausfuhrung der BSP-Programme geschieht auf Peer-to-Peer-Basis, d.h. die mit der Ausfuhrung eines BSP-Programms betrauten Cli- ents wickeln diese Aufgabe eigenstandig unter sich ab. Die organisatorischen Aufgaben (z.B. Zuteilung von Clients an ein BSP-Programm) dagegen geschehen auf Client-Server-Basis. Abbildung 2.4 veranschaulicht dies.
1Die sog. Java Sandbox gesteht anhand einer Sicherheitsrichtlinie Java-Programmen (abhangig von deren Herkunft) nur bestimmte, konfigurierbare Rechte zu; beispielsweise konnen Festplattenzugriffe un- terbunden werden.
2Bei PUBWCL handelt es sich jedoch nicht um einen Bildschirmschoner, sondern um einen Hinter- grundprozess mit niedriger Prioritat.
10
Abbildung 2.4: Die Architektur von PUBWCL
Der Proxy dient zur Anbindung von Clients in Subnetzen mit privaten IP-Adressen oder hinter einer Firewall.
Die in Kapitel 2.2 angesprochenen Migrationen fuhrt PUBWCL fur den BSP-Programmie- rer unsichtbar durch, d.h. die Programmausfuhrung wird nach einer Migration so fortge- setzt, als hatte die Migration gar nicht stattgefunden.
Die technische Unterstutzung fur Migrationen kann in PUBWCL auch zur Realisierung von Mechanismen zur Steigerung der Fehlertoleranz verwendet werden, wie in Kapitel 4.1 dargelegt wird.
2.5 JavaGO
Um die oben angesprochenen Migrationen technisch umzusetzen, gibt es verschiedene Ansatze, von denen JavaGO (s. [SMY99], [jgo05a]) fur PUBWCL der am besten geeig- nete ist (Details hierzu finden sich in [Geh03]).
JavaGO ist eine Erweiterung der Sprache Java um drei Schlusselworter:
• Mit go wird eine Migration durchgefuhrt (gibt man als Migrationsziel eine Datei an, kann man auf diese Weise eine Sicherungskopie des Ausfuhrungszustands anlegen).
• Funktionen, in denen eine Migration stattfinden kann, mussen als migratory dekla- riert werden.
• Mit dem undock-Statement kann die Tiefe, bis zu der der Stack migriert wird, be- grenzt werden.
11
Mithilfe des JavaGO-Compilers jgoc wird diese erweiterte Sprache in Java-Quellcode uber- setzt, der die fur die Migration notigen Modifikationen enthalt. Die Ausfuhrung des kom- pilierten Programms geschieht mithilfe eines Wrappers (javago.Run); zur Fortsetzung der Ausfuhrung ist auf Seiten des Migrationsziels ein Server (javago.BasicServer) erforder- lich.
Da die ursprungliche Implementierung von JavaGO nicht vollstandig kompatibel ist zum Java-Standard RMI (Remote Method Invocation), wird in PUBWCL eine vom Autor dieser Arbeit modifizierte Version, JavaGO RMI (s. [jgo05b]), verwendet, die zwar nicht mehr zur ursprunglichen Version von JavaGO, dafur aber zu RMI vollstandig kompatibel ist.
12
In diesem Kapitel werden zunachst die Rahmenbedingungen dargelegt und die Art der Lastmessung erlautert; abschließend werden die zu vergleichenden Lastbalancierungsalgo- rithmen vorgestellt.
3.1 Rahmenbedingungen
Aus den Eigenschaften des BSP-Modells ergibt sich folgende Vorgabe: Am Ende eines jeden Supersteps werden alle BSP-Prozesse synchronisiert; folglich lasst sich das Scheduling- Problem fur einen BSP-Algorithmus mit n Supersteps auf n unabhangige Teilprobleme, namlich das Scheduling innerhalb eines Supersteps, reduzieren.
Da in einem idealen BSP-Programm in allen Supersteps auf jeden der p BSP-Prozesse ein gleicher Anteil der Arbeit entfallt, erzeugen die BSP-Prozesse pro Superstep jeweils dieselbe Last. Der Scheduler hat also p gleich schwere Aufgaben zu verteilen.
Neben den genannten impliziten Rahmenbedingungen gibt es auch eine einschrankende Anforderung: Aus Grunden des Datenschutzes ist auf keinem Rechner eine Aufschlusselung der CPU-Nutzung verfugbar, d.h. es ist insbesondere unklar, ob bzw. wie viel Idle-Zeit zur Verfugung steht, und wie viel Prozent der Rechenkapazitat den BSP-Prozessen zugeteilt wird.
3.2 Lastmessung
13
Definition 3.1 Ein Rechner sei zu einem bestimmten Teil vom Benutzer ausgelastet. Die verbleibende Idle-Zeit kann dann von Idle-Time-Computing (ITC)-Prozessen (z.B. von BSP-Prozessen) genutzt werden.
Die Rest-Rechenkapazitat ist nun definiert als die Rechenleistung, die einem neuen (d.h. zusatzlich auf dem Rechner gestarteten) ITC-Prozess zugeteilt wurde.
Dieser Wert lasst sich relativ einfach bestimmen, indem man in regelmaßigen Zeitabstanden fur ein kurzes Zeitintervall1 einen Messprozess2 startet, der typische Rechenoperationen in einer Schleife ausfuhrt; die Anzahl der in dem zugeteilten Zeitintervall ausgefuhrten Opera- tionen liefert dabei den Messwert fur die Rest-Rechenkapazitat. Aus diesem Messwert kann man zwar nicht auf die CPU-Nutzung zuruckschließen, dafur ist der Wert aber architek- turunabhangig und daher systemweit (d.h. zwischen allen PUBWCL-Clients) vergleichbar, was fur die Lastbalancierung von großem Vorteil ist.
Die Rest-Rechenkapazitat ist folglich gut geeignet fur die initiale Verteilung der BSP- Prozesse auf PUBWCL-Clients sowie fur die Auswahl von geeigneten Migrationszielen.
Wieso kann man aber aus der Rest-Rechenkapazitat nicht auf die CPU-Nutzung zuruck- schließen? Dazu stelle man zunachst folgende Voruberlegungen an: PUBWCL hat eine niedrige Prozessprioritat, um nur die Rechenleistung zu konsumieren, die der Besitzer des Rechners ubrig hat. Die von PUBWCL gestartenen Subprozesse sind untereinander gleich- berechtigt; das bedeutet insbesondere, dass der Messprozess dieselbe Prioritat hat wie die BSP-Prozesse, woraus folgt, dass auf einem voll ausgelasteten Rechner die vorhande- nen n BSP-Prozesse jeweils 1
n+1 der ihnen zugeteilten Rechenleistung an den Messprozess
abgeben. Die Rest-Rechenkapazitat also kann bei einem voll ausgelasteten Rechner im Extremfall bis zu 50% der Rechenleistung betragen.
Zur Veranschaulichung ein paar Beispiele: Abbildung 3.1 zeigt, welchen Anteil an der Re- chenleistung der Messprozess bekommt, wenn das System Leerlauf hat (Fall a) bzw. wenn bereits ein (Fall b) oder drei (Fall c) BSP-Prozesse die Idle-Zeit konsumieren. t0 stellt dabei einen Zeitpunkt vor dem Starten des Messprozesses und t1 einen Zeitpunkt wahrend der Messung dar.
Die Folgerung, dass jedem BSP-Prozess nun gegenwartig das n+1 n
-fache der Rest-Rechenka- pazitat an Rechenleistung zugeteilt sei, weil die BSP-Prozesse dieselbe Prioritat haben und daher untereinander gleichberechtigt sind, ist ein Trugschluss, denn es ist moglich, dass ge- rade einige BSP-Prozesse blockiert sind (z.B. durch einen blockierenden entfernten Metho- denaufruf) oder sich im Wartezustand befinden (z.B. weil sie zur Barriere-Synchronisation bereit sind, aber noch auf andere BSP-Prozesse warten mussen). In einem solchen Fall verbrauchen sie kaum Rechenleistung, was dazu fuhrt, dass dem Messprozess weit mehr als
1 n+1
1Bei der Implementierung wurde hierfur ein Zeitintervall der Lange von einer Sekunde gewahlt. 2Aus Effizienzgrunden wurde bei der Implementierung dafur ein Thread anstatt eines Prozesses ver-
wendet.
14
t t 10
Abbildung 3.2: Anomalie bei der Messung der Rest-Rechenkapazitat
tuation dar, wo diese Anomalie auftritt. Man kann leicht erkennen, dass alle BSP-Prozesse zusammen weit mehr Rechenleistung verbrauchen wurden als der Prozessor uberhaupt hat, wenn jedem der 7 BSP-Prozesse das 8
7 -fache der Rest-Rechenkapazitat zugeteilt ware.
Zusatzlich gilt es noch zu berucksichtigen, dass die ITC-Prozesse nicht ausschließlich BSP- Prozesse sein mussen, sondern dass auch noch andere unbekannte ITC-Prozesse laufen konnen, die PUBWCL nicht erkennen kann. Es ist folglich also nicht moglich, mithilfe der Rest-Rechenkapazitat festzustellen, wie viel Rechenleistung ein bestimmter BSP-Prozess gegenwartig zugeteilt bekommt. Daher werden die Entscheidungen, ob eine Migration durchgefuhrt werden sollte, in den im Folgenden vorgestellten Lastbalancierungsverfah- ren auf Zeitmessungen beruhen: Anhand der bislang benotigten Rechenzeit lasst sich fur jeden BSP-Prozess feststellen, ob ihm (durchschnittlich) tatsachlich so viel Rechenleistung zur Verfugung gestellt wurde wie angenommen.
15
Algorithmus 3.2 (PON) Sei r ∈ R, r > 1.
Das Lastbalancierungsverfahren ” Parallele Ausfuhrung ohne Neuzuweisung“, PON(r), ar-
beitet wie folgt:
1. Zu Beginn des BSP-Programms werden die BSP-Prozesse auf die im System verfugba- ren Rechner anhand der Rest-Rechenkapazitat derart verteilt, dass jeder BSP-Prozess nach Moglichkeit dieselbe Rechenleistung erhalt.
2. Jeder Rechner fuhrt nebenlaufig den nachsten Superstep der ihm zugewiesenen BSP- Prozesse aus.
3. Der Scheduler wartet solange, bis alle BSP-Prozesse die Rechnungen des aktuellen Supersteps vollendet und die Barriere-Synchronisation durchgefuhrt haben.
4. Von allen Rechnern, auf denen die BSP-Prozesse fur den zuletzt ausgefuhrten Su- perstep mehr Zeit als das r-fache des Durchschnittswertes benotigt haben, wird ein geeigneter Teil der BSP-Prozesse auf andere Rechner migriert, wenn dadurch ein Laufzeitgewinn zu erwarten ist.
5. Falls der zuletzt ausgefuhrte Superstep nicht der letzte war, gehe zu Schritt 2.
Fur den Lastbalancierungsalgorithmus PON(r) zeigt Abbildung 3.3 ein UML-Aktivitats- diagramm fur den Scheduler.
Initiale Verteilung anhand Rest-Rechenkapazität
Nebenläufige Prozess- ausführung starten mit nächstem Superstep
Warten bis alle Prozesse mit Superstep fertig
[letzter Superstep]
Abbildung 3.3: Aktivitatsdiagramm fur PON(r)
3d.h. die Anzahl der BSP-Prozesse ist deutlich großer als die Anzahl der PUBWCL-Clients
16
3.3. DIE LASTBALANCIERUNGSVERFAHREN
Wahrend PON(r) zu langsame Prozesse migriert, nachdem der aktuelle Superstep abge- schlossen ist, bricht folgender Algorithmus zu langsame Prozesse mitten im Superstep ab und startet sie auf einem anderen Rechner neu (es handelt sich dabei nicht mehr um eine Migration, sondern um ein Reset auf den Status zu Beginn des aktuellen Supersteps).
Der Zeitraum vom (Neu-) Starten der (verbliebenen) Prozesse bis zum Abbruch der zu langsamen Prozesse wird als Phase bezeichnet. Dieser Vorgang wird ggf. mehrmals wieder- holt; ein Superstep besteht folglich aus einer oder mehreren Phasen.
Algorithmus 3.3 (PMN) Seien r, s ∈ R, r > 1, 0 < s < 1 und sei p ∈ N die Anzahl der BSP-Prozesse. Weiter bezeichne rnd(x) das Ergebnis der Rundung von x auf eine ganze Zahl.
Das Lastbalancierungsverfahren ” Parallele Ausfuhrung mit Neuzuweisung“, PMN(r, s), ar-
beitet wie folgt:
1. Wie in PON(r) werden zu Beginn des BSP-Programms die BSP-Prozesse auf die im System verfugbaren Rechner anhand der Rest-Rechenkapazitat derart verteilt, dass jeder BSP-Prozess nach Moglichkeit dieselbe Rechenleistung erhalt.
2. Jeder Rechner fuhrt nebenlaufig wie in PON(r) den aktuellen Superstep der ihm zugewiesenen BSP-Prozesse aus.
3. Nachdem in der aktuellen Phase x := max{1, rnd(s · p)} BSP-Prozesse die Rech- nungen des aktuellen Supersteps vollendet haben und zur Barriere-Synchronisation bereit sind, wartet der Scheduler auf alle ubrigen BSP-Prozesse maximal die r-fache Zeitdauer4, die der langsamste unter den ersten x BSP-Prozessen der aktuellen Phase benotigt hat. Diejenigen BSP-Prozesse, die in diesem Zeitrahmen nicht fertig wurden, werden abgebrochen und einem Rechner mit moglichst viel Rest-Rechenkapazitat zu- gewiesen. Eine neue Phase beginnt.
4. Die Schritte 2 und 3 werden solange wiederholt, bis alle BSP-Prozesse die Rechnungen des aktuellen Supersteps vollendet und die Barriere-Synchronisation durchgefuhrt haben.
5. Falls der zuletzt ausgefuhrte Superstep nicht der letzte war, optimiere die Verteilung und gehe zu Schritt 2. Zur Optimierung wird dabei fur jeden beteiligten Rechner der Durchsatz errechnet und anhand dieser Kenngroße werden ggf. BSP-Prozesse derart migriert, dass im nachsten Superstep alle BSP-Prozesse annahernd gleichzeitig fertig werden, falls sich der Durchsatz der Rechner bis dahin nicht andert. Die Anzahl der dazu benotigten Migrationen wird so klein wie moglich gehalten.
Fur den Lastbalancierungsalgorithmus PMN(r, s) zeigt Abbildung 3.4 ein UML-Aktivitats- diagramm fur den Scheduler.
4gemessen ab dem Beginn der Berechnungen
17
Warten, bis x Prozesse der Phase mit Rechnen fertig
[letzter Superstep]
d := Rechendauer von x-schnellstem
Superstepzähler erhöhen
[sonst]
[sonst]
Abbildung 3.4: Aktivitatsdiagramm fur PMN(r, s)
Die beiden Verfahren PON(r) und PMN(r, s) fuhren die einem Rechner zugewiesenen Pro- zesse parallel aus; die im Folgenden vorgestellten Strategien hingegen arbeiten auf einem jeden Rechner jeweils sequentiell, d.h. es werden insgesamt nur noch so viele Prozesse parallel ausgefuhrt, wie es Rechner gibt (die ubrigen Prozesse werden in Warteschlangen verwaltet).
Wie Algorithmus PMN(r, s) arbeitet auch der folgende Algorithmus in Phasen:
Algorithmus 3.4 (SOJ) Seien r, s ∈ R, r > 1, 0 < s < 1 und sei n ∈ N die Anzahl der aktuell beteiligten Clients. Weiter bezeichne rnd(x) das Ergebnis der Rundung von x auf eine ganze Zahl.
Das Lastbalancierungsverfahren ” Sequentielle Ausfuhrung ohne Just-in-Time-Zuweisung“,
SOJ(r, s), arbeitet wie folgt:
1. Wie in PMN(r, s) werden zu Beginn des BSP-Programms die BSP-Prozesse auf die im System verfugbaren Clients anhand der Rest-Rechenkapazitat derart verteilt, dass jeder BSP-Prozess nach Moglichkeit dieselbe Rechenleistung erhalt.
2. Jeder Client fuhrt sequentiell fur jeden der ihm zugewiesenen BSP-Prozesse den ak- tuellen Superstep aus.
3. Nachdem in der aktuellen Phase x := max{1, rnd(s ·n)} Clients fur alle zugewiesenen BSP-Prozesse die Rechnungen des aktuellen Supersteps vollendet haben, wartet der Scheduler auf alle ubrigen Clients maximal die r-fache Zeitdauer5, die der langsamste der ersten x Clients der aktuellen Phase benotigt hat. Diejenigen BSP-Prozesse, die
5gemessen ab dem Beginn der Berechnungen
18
Warten, bis x Clients der Phase mit zugewiese-
nen Prozessen fertig
d := Rechendauer von x-schnellstem
Superstepzähler erhöhen
[sonst]
[sonst]
in diesem Zeitrahmen nicht fertiggestellt wurden (BSP-Prozesse mit angefangener Berechnung und BSP-Prozesse in Warteschlangen), werden abgebrochen und einem Client mit moglichst viel Rest-Rechenkapazitat zugewiesen. Eine neue Phase beginnt.
4. Die Schritte 2 und 3 werden solange wiederholt, bis alle BSP-Prozesse die Rechnungen des aktuellen Supersteps vollendet und die Barriere-Synchronisation durchgefuhrt haben.
5. Falls der zuletzt ausgefuhrte Superstep nicht der letzte war, optimiere die Verteilung und gehe zu Schritt 2. Die Optimierung lauft dabei genauso ab wie in PMN(r, s).
Fur den Lastbalancierungsalgorithmus SOJ(r,s) zeigt Abbildung 3.5 ein UML-Aktivitats- diagramm fur den Scheduler.
Wie SOJ(r, s) plant der vierte Algorithmus zwar fur einen Superstep im Voraus, setzt diese Planung zunachst aber nur fur so viele Prozesse um, wie gleichzeitig bearbeitet wer- den konnen. Wahrend der Ausfuhrung des Supersteps wird der Plan fur die noch nicht zugewiesenen Prozesse ggf. optimiert.
Algorithmus 3.5 (SMJ) Seien r, s ∈ R, r > 1, 0 < s < 1 und sei n ∈ N die Anzahl der aktuell beteiligten Clients. Weiter bezeichne rnd(x) das Ergebnis der Rundung von x auf eine ganze Zahl.
Das Lastbalancierungsverfahren ” Sequentielle Ausfuhrung mit Just-in-Time-Zuweisung“,
SMJ(r, s), arbeitet wie folgt:
1. Wie in SOJ(r, s) werden zu Beginn des BSP-Programms die BSP-Prozesse auf die im
19
System verfugbaren Clients anhand der Rest-Rechenkapazitat derart verteilt, dass jeder BSP-Prozess nach Moglichkeit dieselbe Rechenleistung erhalt.
2. Jeder Client fuhrt sequentiell fur jeden der ihm zugewiesenen BSP-Prozesse den nachsten Superstep aus. Im Gegensatz zu SOJ(r, s) konnen aus der Warteschlange jedoch noch nicht bearbeitete BSP-Prozesse wieder entfernt oder hinzugefugt werden.
3. Fuhre folgendes solange parallel aus, bis alle BSP-Prozesse den aktuellen Superstep vollendet haben:
(a) Sobald ein Client alle ihm zugewiesenen BSP-Prozesse abgearbeitet hat und es auf anderen Clients noch nicht begonnene Prozesse gibt, weist ihm der Sche- duler einen weiteren Prozess zu, den er aus der Warteschlange des am meisten uberlasteten Clients entnimmt.
(b) Sobald kein BSP-Prozess mehr in einer Warteschlange steht, gesteht der Sche- duler jedem noch in Berechnung befindlichen BSP-Prozess maximal das r-fache der fur ihn vorgesehenen Zeitdauer (s.u.) zu. Wird einer dieser BSP-Prozesse in diesem Zeitrahmen nicht fertig, wird er abgebrochen und auf einem Client mit moglichst viel Rest-Rechenkapazitat neu gestartet.
Die fur einen BSP-Prozess vorgesehene Zeitdauer hangt dabei von der Anzahl der dem jeweiligen Client zugewiesenen Prozesse (und damit indirekt von der freien Rechenkapazitat des Clients) ab: Die BSP-Prozesse sind – nach Moglich- keit – stets derart auf die Clients verteilt, dass alle Clients moglichst gleichzeitig mit der ihnen zugewiesenen Arbeit fertig werden; da die freie Rechenkapazitat der Clients Schwankungen unterliegt, kann sich dieser anvisierte gemeinsame Endzeitpunkt zur Laufzeit verschieben. Als Schatzwert wird deshalb der hoch- gerechte Endzeitpunkt des x := max{1, rnd(s·n)}-schnellsten Clients verwendet. Die fur einen BSP-Prozess vorgesehene Zeitdauer ergibt sich dann aus diesem Schatzwert geteilt durch die Anzahl der dem Client zugewiesenen Prozesse.
4. Falls der zuletzt ausgefuhrte Superstep nicht der letzte war, gehe zu Schritt 2.
Fur den Lastbalancierungsalgorithmus SMJ(r, s) zeigt Abbildung 3.6 ein UML-Aktivitats- diagramm fur den Scheduler.
20
Prozess fertig
[letzter Superstep]
Rechenkapazität neu starten
Warten, bis 1 Client mit zugewiesenen Prozessen fertig
1 Prozess aus Warte- schlange des am mei-
sten überlasteten Clients migrieren
anderen Clients]
Abbildung 3.6: Aktivitatsdiagramm fur SMJ(r, s)
21
Grundlegende Informationen zur Architektur und Implementierung von PUBWCL finden sich in [pub05a].
4.1 Restauration von BSP-Prozessen
Sicherungskopien und Restaurationsverfahren erhohen einerseits die Fehlertoleranz fur den Fall, dass der eine oder andere Client wahrend der Berechnungen ausfallt, und ermoglichen andererseits erst Schedulingverfahren, die zu langsame BSP-Prozesse abbrechen und auf einem anderen Client neu starten.
Deshalb wurde PUBWCL folgendermaßen erweitert: Mithilfe der Mechanismen fur die Migration wird in regelmaßigen Abstanden (wie bei einer Migration) ein Abbild der BSP- Prozesse angelegt; dieses Abbild wird jedoch nicht (wie bei einer Migration) an einen anderen Client verschickt, sondern als Sicherungskopie in einer Datei gespeichert, die so- wohl lokal gehalten als auch auf einem anderen Client hinterlegt wird. Wenn der Client nun plotzlich ausfallt oder ein BSP-Prozess vom Scheduler absichtlich beendet wird, kann auf einem Ersatz-Client das Prozess-Abbild aus der Sicherungskopie eingespielt werden, so dass die Berechnungen nicht von vorne beginnen mussen, sondern ab dem letzten Siche- rungspunkt wieder aufgenommen werden konnen.
Die Sicherungskopien werden von PUBWCL jeweils zu Beginn eines Supersteps angelegt, noch ehe die BSP-Prozesse die Kontrolle uber die CPU (zuruck-) erhalten. Hinterlegt wer- den die Sicherungskopien jeweils auf dem Client des BSP-Prozesses mit der nachsthoheren PID (modulo n), der nicht auf demselben Client lauft wie der gesicherte BSP-Prozess.
Die Restauration von BSP-Prozessen wird von den Clients hauptsachlich auf Peer-to-Peer-
23
Abbildung 4.1: Doppelte Restauration bei fehlendem zweiten Check
Basis abgewickelt. Die verbliebenen BSP-Prozesse stellen entweder selbstandig fest, dass ein BSP-Prozess nicht mehr erreichbar ist, oder werden vom Scheduler darauf hingewiesen, wenn er einen BSP-Prozess absichtlich beendet. Wenn ein BSP-Prozess nicht mehr erreich- bar ist, kommen – da davon ausgegangen wird, dass alle BSP-Prozesse gutartig sind – nur folgende Grunde in Betracht:
1. Der BSP-Prozess, der Client oder der gesamte Rechner ist abgesturzt.
2. Der BSP-Prozess wurde vom Scheduler absichtlich beendet.
3. Der Benutzer hat das BSP-Programm absichtlich beendet.
4. Ein Netzwerkfehler hat den Rechner vom Internet abgeschnitten.
In den ersten beiden Fallen muss der betroffene BSP-Prozess offensichtlich neu gestar- tet werden. Im dritten Fall ist es unerheblich, ob eine Restauration begonnen wird oder nicht, da i.d.R. binnen weniger Sekunden alle noch verbliebenen (und evtl. neu gestarteten) BSP-Prozesse beendet werden. Im vierten Fall wird der vom Internet abgeschnittene BSP- Prozess1 feststellen, dass er den Server nicht mehr erreichen kann, und wird sich beenden.
Damit nun genau einer der verbliebenen BSP-Prozesse die Restauration durchfuhrt, ist eine Leader Election erforderlich. Realisiert wurde dies durch Aufruf einer atomaren Funktion des Servers, die die Leader Election nach dem First-Come-First-Serve-Prinzip durchfuhrt, denn ein verteilter Leader-Election-Algorithmus wurde i.d.R. einen deutlich hoheren Kom- munikationsaufwand bedeuten, da je nach Nachrichtenaufkommen des BSP-Programms nur wenige der verbliebenen BSP-Prozesse feststellen, dass ein BSP-Prozess neu gestar- tet werden muss, und die ubrigen BSP-Prozesse somit gar nicht in das Leader-Election- Verfahren involviert werden.
Weil sich die verbliebenen BSP-Prozesse bei dieser Herangehensweise nicht untereinander uber ihr Vorgehen verstandigen, ist es erforderlich, dass jeder BSP-Prozess, der das Leader- Election-Verfahren gewonnen hat, danach uberpruft, ob der tote BSP-Prozess inzwischen moglicherweise schon neu gestartet wurde. Fehlt dieser zweite Test, kann es bei ungunstig verzahnter Ausfuhrung passieren, dass der tote BSP-Prozess von mehreren BSP-Prozessen wiederhergestellt wird, wie Abbildung 4.1 zeigt.
Die Wiederherstellungsprodezur an sich lauft schließlich wie folgt ab:
1Dies gilt auch fur mehrere vom Internet abgeschnittene BSP-Prozesse.
24
4.1. RESTAURATION VON BSP-PROZESSEN
1. Suche lokal eine Sicherungskopie. Im Erfolgsfall fahre mit Schritt 5 fort.
2. Suche eine Sicherungskopie auf dem Client, wo der Prozess zuletzt lief, falls dieser Client noch lebendig ist. Im Erfolgsfall fahre mit Schritt 5 fort.
3. Suche eine Sicherungskopie auf den Clients der ubrigen BSP-Prozesse, wobei die Clients nach demselben System durchsucht werden, nach dem der Client fur die Sicherungskopie ausgewahlt wurde. Im Erfolgsfall fahre mit Schritt 5 fort.
4. Suche eine Sicherungskopie auf Clients, deren BSP-Prozesse kurzlich weggezogen sind.2 Bei Misserfolg wird das BSP-Programm abgebrochen.
5. Fordere vom Server einen Ersatz-Client an und starte den toten BSP-Prozess dort neu. Falls kein Ersatz-Client verfugbar ist, wird das BSP-Programm abgebrochen. Wenn die Wiederherstellung misslingt, wiederhole diesen Schritt.
Wahrend der ersten vier Schritte wird eine Liste mit den schon besuchten Clients gefuhrt, um bei keinem Client doppelt anzufragen.
Da eine Prozess-Restauration nur in bestimmten Prozess-Zustanden erlaubt ist (vgl. Kapi- tel 4.2.2), ist das beschriebene Vorgehen ausreichend. Wurde man Prozess-Restaurationen auch in der Phase des Nachrichtenversands erlauben, ware es erforderlich,
• vor dem Neustarten des toten BSP-Prozesses alle verbliebenen BSP-Prozesse per Broadcast aufzufordern, samtliche bereits vom toten BSP-Prozess empfangene Nach- richten zu verwerfen, und
• nach dem Neustarten des toten BSP-Prozesses alle verbliebenen BSP-Prozesse per Broadcast aufzufordern, die moglicherweise schon an diesen BSP-Prozess vor dem Neustart versandten Nachrichten erneut zu senden.
Die Komplexitat des Problems erhoht sich nochmals, wenn mehrere BSP-Prozesse ausfal- len und von verschiedenen verbliebenen BSP-Prozessen nahezu zeitgleich restauriert wer- den. Weil sich der Nachrichtenverkehr dadurch stark erhohen kann, wurde keine Prozess- Restaurationen in der Phase des Nachrichtenversands vorgesehen. Da aufgrund einer vor- geschalteten Zwischen-Synchronisation (vgl. Kapitel 4.2.2) die Phasen des Nachrichtenver- sands und der Barriere-Synchronisation im Vergleich zu den ubrigen Phasen sehr kurz sind, ist die Wahrscheinlichkeit, dass ein BSP-Prozess in den genannten Phasen absturzt, sehr gering. Tritt dieser Fall aber einmal ein, mussen alle BSP-Prozesse auf den Anfang des Supersteps zuruckgesetzt werden.3
Die entscheidenden Teile der Implementierung der Prozess-Restauration finden sich in die- sen Klassen:
2Beim Server konnen Listen solcher Clients angefordert werden. 3Dieser Vorgang wurde nicht implementiert (das BSP-Programm wird stattdessen abgebrochen), weil
dieses Szenario in der Praxis fast nie auftritt.
25
Allen vier zu untersuchenden Lastbalancierungsverfahren ist gemeinsam, dass sie die in- itiale Verteilung der BSP-Prozesse auf die Clients anhand der Rest-Rechenkapazitat (vgl. Definition 3.1) durchfuhren. Daher wird in den folgenden Abschnitten zunachst diese ge- meinsame Komponente beschrieben, ehe die Implementierung der vier Lastbalancierungs- verfahren erlautert wird.
4.2.1 Durchfuhrung der initialen Verteilung
Da gemaß Voraussetzung (vgl. Kapitel 3.1) ein BSP-Programm aus m ca. gleich schweren Prozessen besteht, sollten die Prozesse derart auf die n verfugbaren Clients verteilt werden, dass jedem Prozess ungefahr dieselbe Rechenkapazitat zur Verfugung steht.
Algorithmus 4.1 (IVT) Seien m, n ∈ N wie oben beschrieben gewahlt. Fur einen Client j, 0 ≤ j < n, bezeichne rj ∈ R+
0 die Rest-Rechenkapazitat. Dann arbeitet der Algorithmus zur initialen Verteilung der BSP-Prozesse, IVT(m, n, r0, . . . , rn−1), wie folgt:
1. Sei π : N 7→ N eine Permutation auf [0; n− 1], die die Clients nach absteigender Rest-Rechenkapazitat sortiert:
∀ j, 0 ≤ j < n− 2 : rπ(j) ≥ rπ(j+1)
2. Sei n′ ∈ N. Setze n′ := min{n, m}.
3. ρ ∈ R+ 0 bezeichne die Rest-Rechenkapazitat, die einem jeden BSP-Prozess nach
Moglichkeit zugeteilt werden soll:
4. Jedem Client π(j), 0 ≤ j < n′, weise b rπ(j)
ρ c BSP-Prozesse zu.
4.2. IMPLEMENTIERUNG DER LASTBALANCIERUNGSVERFAHREN
5. Fur einen Client j bezeichne zj(i) die Anzahl der zugewiesenen BSP-Prozesse nach Ausfuhrung des i-ten Schrittes4. Solange noch nicht alle BSP-Prozesse zugewiesen sind, weise in Schritt k den nachsten unzugewiesenen BSP-Prozess einem Client x zu, fur den gerade gilt:
rπ(x)
zπ(j)(k − 1) + 1 (4.1)
Satz 4.2 Der Algorithmus IVT(m, n, r0, . . . , rn−1) ist optimal.
Beweis: Zunachst kann man sich leicht verdeutlichen, dass es genugt, die n′ (d.h. maximal m) Clients mit den großten Rest-Rechenkapazitaten zu betrachten: Da es nur m BSP- Prozesse gibt und diese nicht gesplittet werden konnen, konnen maximal m Clients genutzt werden.
Weil alle m BSP-Prozesse ca. gleich schwer sind, wurde im Optimalfall jedem BSP-Prozess eine Rest-Rechenkapazitat von ρ zugewiesen; dies ist aber praktisch unmoglich, da dazu jeder Client eine Rest-Rechenkapazitat haben musste, die ein ganzzahlig-Vielfaches von ρ ist.
Der Algorithmus arbeitet nun in zwei Phasen:
1. Zunachst werden jedem Client so viele BSP-Prozesse zugewiesen, wie viele Einheiten der Große ρ vollstandig in seiner Rest-Rechenkapazitat Platz finden5 (vgl. Schritt 4 des Algorithmus).
2. Danach werden die noch nicht zugewiesenen BSP-Prozesse verteilt (vgl. Schritt 5 des Algorithmus). Weshalb das Auswahlkriterium (4.1) dabei zu einer optimalen Verteilung fuhrt, wird im Folgenden erlautert.
In Phase 1 werden BSP-Prozesse auf Clients verteilt mit der Intention, dass jeder BSP- Prozess eine Rechenkapazitat von ρ erhalt. In der Praxis lauft die Verteilung aber so ab, dass alle BSP-Prozesse gleichberechtigt sind, und jeder von ihnen so viel Rechenka- pazitat wie moglich beansprucht; die verfugbare Rest-Rechenkapazitat eines Clients wird also gleichmaßig auf alle ihm zugewiesenen BSP-Prozesse verteilt6.
4Gemeint ist die Anzahl der wahrend der Ausfuhrung des Algorithmus IVT bislang zugewiesenen BSP- Prozesse, nicht die Anzahl der insgesamt (von samtlichen aktiven BSP-Programmen) zugewiesenen BSP- Prozesse
5Dass die Zahl der insgesamt zugewiesenen BSP-Prozesse nicht großer als m werden kann, folgt unmit- telbar aus der Wahl von ρ.
6Falls einem Client mehrere BSP-Prozesse zugewiesen werden, ist die Rechenkapazitat, die den zugewie- senen BSP-Prozessen insgesamt zur Verfugung steht, etwas großer als die Rest-Rechenkapazitat, da vor- handenen BSP-Prozessen anderer BSP-Programme etwas Rechenkapazitat entzogen wird. Da jedoch von stark ausgelasteten Systemen ausgegangen wird, d.h. da die Anzahl der neu zu startenden BSP-Prozesse deutlich kleiner ist als die Anzahl der vorhandenen BSP-Prozesse, ist diese Abweichung vernachlassigbar.
27
x
ri
Abbildung 4.2: Beispiel zu Phase 2 von Algorithmus IVT(m, n, r0, . . . , rn−1)
Dies bedeutet, dass die einem Client zugewiesen BSP-Prozesse eine Rechenkapazitat großer als ρ erhalten, falls dem Client in Phase 2 kein weiterer BSP-Prozess zugeteilt wird. Analog ist die Rechenkapazitat kleiner als ρ, falls weitere BSP-Prozesse zugeteilt werden.
Zur Veranschaulichung zeigt Abbildung 4.2 ein bewußt etwas extrem gewahltes Beispiel, da die Problematik bei einem ausgeglichenen System nicht auftritt: Angenommen, Client 0 habe eine Rest-Rechenkapazitat von r0 = 10 und Client 1 eine von r1 = 1, 25; bei 5 Prozessen ergibt sich ρ = 2, 25. In Phase 1 werden 4 Prozesse Client 0 zugewiesen und in 1 Prozess bleibt ubrig (vgl. Situation a). Wurde man in Phase 2 nun den funften Prozess Client 1 zuteilen, ware die Rest-Rechenkapazitat aller Clients voll ausgeschofpt, wobei 4 Prozesse eine Rechenkapazitat von 2, 5 erhielten und ein Prozess eine Rechenkapazitat von 1, 25 (vgl. Fall b). Wurde man den funften Prozess hingegen ebenfalls Client 0 zuweisen (vgl. Fall c), ergabe sich fur alle Prozesse eine Rechenkapazitat von 2.
Da die Laufzeit eines BSP-Programms von seinem langsamsten Prozess bestimmt wird, ist der Algorithmus IVT(m, n, r0, . . . , rn−1) dann optimal, wenn er die kleinste Rechenkapa- zitat, die einem BSP-Prozess zugeteilt wird, maximiert.
Angenommen, IVT(m,n, r0, . . . , rn−1) ware nicht optimal: dann gabe es einen Client a, dessen zugewiesene BSP-Prozesse mehr Rechenkapazitat erhielten, wenn der letzte dem Client a zugewiesene BSP-Prozess y einem anderen Client zugewiesen worden ware.
Dass dann, wenn der BSP-Prozess y einem anderen Client zugewiesen worden ware, die ubrigen dem Client a zugewiesenen BSP-Prozesse mehr Rechenkapazitat erhielten, ist of- fensichtlich. Damit der BSP-Prozess y auf einem anderen Client b mehr Rechenkapazitat erhielte, musste fur den letzten Schritt, l, gelten:
rb
4.2. IMPLEMENTIERUNG DER LASTBALANCIERUNGSVERFAHREN
Sei k der Schritt, in dem der BSP-Prozess y dem Client a zugewiesen wurde; dann galt vor der Zuweisung aber wegen des Kriteriums (4.1):
rb
rb
za(k) (4.3)
Weil dem Client a danach kein weiterer BSP-Prozess mehr zugewiesen wurde, kann sich der Wert von za bis zum letzten Schritt des Algorithmus nicht mehr verandert haben. Da ferner die Parameter ra und rb konstant sind, und der Wert von zb niemals kleiner werden kann, konnte die Bedingung (4.3) in allen folgenden Schritten des Algorithmus nicht mehr verletzt werden. Dies liefert einen Widerspruch zur aus der Annahme resultierenden Ungleichung (4.2), womit die Behauptung folgt. q.e.d.
Implementiert wurde IVT(m, n, r0, . . . , rn−1) hauptsachlich mithilfe von MySQL-Anwei- sungen auf einer temporaren Tabelle vom Typ HEAP7; Details findet man in Anhang B.3.
4.2.2 Der Lebenszyklus eines BSP-Programms
Startet ein Benutzer ein BSP-Programm, lasst sich der Client des Benutzers vom Server zuerst die initiale Verteilung berechnen (vgl. Kapitel 4.2.1) und startet dann die einzelnen BSP-Prozesse auf den jeweiligen Clients.
Bei der Ausfuhrung eines Supersteps durchlauft die Runtime Environment von PUBWCL fur einen BSP-Prozess der Reihe nach folgende Stadien: Zuerst fordert sie vom Client die CPU an und wartet, bis ihr die CPU zugeteilt wird. Dann wird eine Status-Nachricht an den Server verschickt, damit der Scheduler weiß, dass der zugehorige BSP-Prozess nun mit seinen Berechnungen beginnt. Jetzt wird der Code des aktuellen Supersteps ausgefuhrt.
Sobald der BSP-Prozess mit den Berechnungen fur den aktuellen Superstep fertig ist, erhalt die Runtime Environment durch Aufruf der bsp.sync() Methode die Kontrolle zuruck. Als erstes wird nun eine weitere Status-Nachricht an den Server verschickt, um das Ende der Berechnungen zu melden. Ehe die BSP-Nachrichten des BSP-Prozesses versendet werden und die Barriere-Synchronisation durchgefuhrt wird, wird zunachst mittels einer weiteren Synchronisation darauf gewartet, dass alle BSP-Prozesse die Berechnungsphase abgeschlossen haben. Dies erlaubt eine effizientere und erheblich weniger komplexe Prozess- Restauration (vgl. Kapitel 4.1).
Bevor nach der Barriere-Synchronisation ein neuer Superstep angefangen wird, kann der BSP-Prozess auf einen anderen Client migrieren; jedes BSP-Programm kann außerdem
7d.h. die Tabelle wird nur im RAM angelegt (und nicht auf der Festplatte)
29
Nachrichten verschicken
Barriere- Synchronisation
auch wahrend der Rechenphase weitere Migrationen zulassen.8
Falls die Berechnungen zulange andauern, hat der Scheduler die Moglichkeit, den BSP- Prozess abzubrechen und auf einem anderen Client neu zu starten. Wenn der BSP-Prozess nach Beginn des Supersteps und bevor alle BSP-Prozesse mit ihren Berechnungen fertig sind, absturzt, kann er restauriert und auf einem anderen Client neu gestartet werden; wenn er in einem anderen Zustand absturzt, z.B. wahrend der Barriere-Synchronisation, wird das BSP-Proramm abgebrochen.9
Abbildung 4.3 zeigt den Lebenszyklus eines BSP-Programms als UML-Zustandsdiagramm.
4.2.3 Implementierung von PON
• Jeder BSP-Prozess, der den Prozessor anfordert, erhalt ihn sofort zugeteilt (parallele Ausfuhrung).
• Der Scheduler bricht keinen BSP-Prozess ab, egal wie lange die Berechnung andauert (ohne Neuzuweisungen).
Jedesmal wenn ein BSP-Prozess die Status-Nachricht ” superstep end“ an den Server sendet,
wird der Scheduler aktiv. Sind dann alle BSP-Prozesse fertig, errechnet der Scheduler die
8Migrationen wahrend der Rechenphase finden beim Aufruf von bsp.mayMigrate() statt, falls der Scheduler eine Migration zu diesem Zeitpunkt fur sinnvoll erachtet. Die in dieser Arbeit untersuchten Lastbalancierungsverfahren PON, PMN, SOJ und SMJ lassen jedoch keine Migrationen wahrend der Rechenphase zu, d.h. ein Aufruf von bsp.mayMigrate() bleibt wirkungslos.
9Man konnte in diesem Fall alternativ auch die verbliebenen BSP-Prozesse abbrechen und danach samtliche BSP-Prozesse neu starten, d.h. den Superstep wiederholen.
30
durchschnittlich benotigte Zeit, die die BSP-Prozesse fur die Rechenphase benotigt haben. Fur alle BSP-Prozesse, die mehr als das r-fache dieser Durchschnittsdauer benotigt haben, wird eine Migration vorgesehen.10
Die Migrationsziele werden auf folgende Weise bestimmt: Wie bei der initialen Verteilung (vgl. Kapitel 4.2.1) sind m (ca. gleich schwere) BSP-Prozesse derart auf n verfugbare Clients zu verteilen, dass jedem dieser Prozesse ungefahr dieselbe Rechenkapazitat zur Verfugung steht. Dies geschieht mithilfe von Algorithmus 4.3.11 Der entscheidende Unterschied zum Algorithmus IVT(m,n, r0, . . . , rn−1) ist, dass als Basis nicht die Rest-Rechenkapazitat dient, sondern ein Erfahrungswert, der aus der Ausfuhrungsdauer der BSP-Prozesse auf den einzelnen Clients im am nachsten zuruckliegenden Superstep gewonnen wird; folglich kommen als verfugbare Clients nicht mehr alle Clients in Frage, sondern nur die, auf denen das BSP-Programm gegenwartig lauft.12
Algorithmus 4.3 (MZA) Seien m, n ∈ N wie eben beschrieben gewahlt. Dann arbeitet der Algorithmus zur Auswahl der Migrationsziele, MZA(m, n), wie folgt:
Fur einen Client j, 0 ≤ j < n, bezeichne rj ∈ R+ 0 die Rechenkapazitat, die durch den
Durchsatz des Clients bestimmt ist:
rj := Anzahl BSP-Prozesse auf Client j
Summe der Berechnungsdauer der Proz. auf Client j
wobei nur die BSP-Prozesse des betroffenen BSP-Programms betrachtet werden.
Alle weiteren Schritte verlaufen analog zum Algorithmus IVT (vgl. Algorithmus 4.1, Schritt 1 bis 5).
Wie IVT(m,n, r0, . . . , rn−1) wurde auch MZA(m, n) hauptsachlich mithilfe von MySQL- Anweisungen auf einer temporaren Tabelle vom Typ HEAP implementiert; Details findet man in Anhang B.4.
4.2.4 Implementierung von PMN
Zum Lebenszyklus eines BSP-Programms (vgl. Kapitel 4.2.2) bei Verwendung des Lastba- lancierungsverfahrens PMN ist – wie bei PON – zu bemerken, dass jeder BSP-Prozess, der den Prozessor anfordert, ihn sofort zugeteilt bekommt (parallele Ausfuhrung).
Sei p die Anzahl der Prozesse des BSP-Programms.
10Dies geschieht im letzten Superstep nicht mehr. 11Ursprunglich sollte hierfur ebenfalls den Algorithmus IVT(m,n, r0, . . . , rn−1) genutzt werden, jedoch
erwies sich hierfur der Wert der Rest-Rechenkapazitat in der Praxis als zu ungenau. 12Dies hat zur Konsequenz, dass das Lastbalancierungsverfahren PON nicht fur Umgebungen geeignet
ist, in denen die Menge der Clients erhohter Fluktuation unterliegt. Die anderen Lastbalancierungsverfah- ren werden diese Einschrankung nicht mehr aufweisen.
31
KAPITEL 4. IMPLEMENTIERUNG
Jedesmal wenn ein BSP-Prozess die Status-Nachricht ” superstep end“ an den Server sendet,
uberpruft der Scheduler,
1. ob alle BSP-Prozesse mit dem aktuellen Superstep fertig sind oder
2. ob max{1, rnd(s · p)} BSP-Prozesse in der aktuellen Phase fertig geworden sind.
Im zweiten Fall startet der Scheduler einen Wachter-Prozess, der nach Verstreichen der (r−1)-fachen Zeit, die der max{1, rnd(s·p)}-schnellste BSP-Prozess in der aktuellen Phase benotigt hat, alle unvollendeten Berechnungen abbricht und neu startet; die Auswahl der Clients fur die Neuzuweisungen geschieht dabei mithilfe des Algorithmus IVT (vgl. Kapitel 4.2.1) und die Neuzuweisungen an sich laufen wie in Kapitel 4.1 beschrieben ab. Das Kernstuck des Wachter-Prozesses ist die Klasse de.upb.sfb376.a1.server.ProcessKil- ler.
Im ersten Fall beendet der Scheduler den Wachter-Prozess und optimiert die Verteilung der BSP-Prozesse. Der Optimierungsvorgang wird im folgenden Algorithmus naher beschrie- ben:
Algorithmus 4.4 (OVT) Sei n ∈ N die Anzahl der Clients, die an der Ausfuhrung des BSP-Programms beteiligt sind, und sei p ∈ N weiterhin die Anzahl der Prozesse des BSP-Programms. Dann lauft der Al- gorithmus zur Optimierung der Verteilung der BSP-Prozesse, OVT(n, p), folgendermaßen in zwei Schritten ab:
1. Berechnung des Soll-Zustands
2. Uberfuhrung des Ist-Zustands in den Soll-Zustand mit moglichst wenig Migrationen
Die Berechnung des Soll-Zustands verlauft ahnlich wie die Algorithmen IVT und MZA:
1. Sei a : N 7→ N eine Abbildung von [0; n− 1] auf die Indizes der Clients, die an der Ausfuhrung des BSP-Programms beteiligt sind.
2. Fur einen Client a(j), 0 ≤ j < n, bezeichne ra(j) ∈ R+ 0 die Rechenkapazitat. Dieser
Wert wird wie beim Algorithmus MZA bestimmt, d.h.
ra(j) := Anzahl BSP-Prozesse auf Client a(j)
Summe der Berechnungsdauer der Proz. auf Client a(j)
3. ρ ∈ R+ 0 bezeichne die Rechenkapazitat, die einem jeden BSP-Prozess nach Moglich-
keit zugeteilt werden soll:
4. Jedem Client a(j), 0 ≤ j < n, weise b ra(j)
ρ c BSP-Prozesse zu.
5. Fur einen Client j bezeichne zj(i) die Anzahl der zugewiesenen BSP-Prozesse nach Ausfuhrung des i-ten Schrittes. Solange noch nicht alle BSP-Prozesse zugewiesen sind, weise in Schritt k den nachsten unzugewiesenen BSP-Prozess einem Client a(x) zu, fur den gilt:
ra(x)
za(j)(k − 1) + 1
Der Ist-Zustand wird nun wie folgt in den Soll-Zustand uberfuhrt: Auf jedem Client, auf dem gegenuber dem Soll-Zustand zu viele BSP-Prozesse liegen, wird fur die uberzahli- gen BSP-Prozesse eine Migration vorgesehen.13 Als Migrationsziel wird jeweils ein Client ausgewahlt, fur den noch zu wenige ankommende Migrationen vorgesehen sind.
Satz 4.5 Der von Algorithmus OVT(n, p) berechnete Soll-Zustand ist optimal.
Der Beweis von Satz 4.5 verlauft analog zu dem von Satz 4.2.
Satz 4.6 Die Anzahl der Migrationen, die Algorithmus OVT(n, p) zur Uberfuhrung des Ist-Zustands in den Soll-Zustand benotigt, ist minimal.
Beweis: Die Anzahl der Migrationen ist gleich der Summe der uberzahligen BSP-Prozesse auf den Clients, auf denen gegenuber dem Soll-Zustand zu viele BSP-Prozesse liegen. Wurden weniger Migrationen ausgefuhrt, hatte wenigstens ein Client gegenuber dem Soll- Zustand immer noch zu viele BSP-Prozesse. Folglich ist die Anzahl der Migrationen mini- mal. q.e.d.
Implementiert wurde OVT(n, p) fur PMN hauptsachlich mithilfe von MySQL-Anweisungen auf einer temporaren Tabelle vom Typ HEAP; Details findet man in Anhang B.5.
4.2.5 Implementierung von SOJ
Zum Lebenszyklus eines BSP-Programms (vgl. Kapitel 4.2.2) bei Verwendung des Lastba- lancierungsverfahrens SOJ ist zu bemerken, dass – im Gegesatz zu PON und PMN – nur einer der BSP-Prozesse, die den Prozessor anfordern, ihn sofort zugeteilt bekommt – die ubrigen BSP-Prozesse mussen warten, bis sie an der Reihe sind (sequentielle Ausfuhrung).
Sei n die Anzahl der Clients, die in der jeweils aktuellen Phase mit der Ausfuhrung des BSP-Programms beschaftigt sind.
Jedesmal wenn ein BSP-Prozess die Status-Nachricht ” superstep end“ an den Server sendet,
uberpruft der Scheduler,
13Die Auswahl der BSP-Prozesse, die migriert werden, geschieht dabei zufallig.
33
KAPITEL 4. IMPLEMENTIERUNG
1. ob alle BSP-Prozesse mit dem aktuellen Superstep fertig sind oder
2. ob max{1, rnd(s · n)} Clients mit den in der aktuellen Phase zugewiesenen BSP- Prozessen fertig geworden sind.
Im ersten Fall beendet der Scheduler den Wachter-Prozess, sofern er gestartet wurde, und optimiert die Verteilung des BSP-Prozesse. Der Optimierungsvorgang lauft dabei fast genauso ab wie beim Lastbalancierungsverfahren PMN (vgl. Algorithmus 4.4) und wird daher nicht naher beschrieben.
Im zweiten Fall startet der Scheduler einen Wachter-Prozess, der nach Verstreichen der (r − 1)-fachen Zeit, die der max{1, rnd(s · n)}-schnellste Client fur die in der aktuellen Phase zugewiesenen BSP-Prozesse benotigt hat, alle unvollendeten Berechnungen abbricht und neu startet; die Auswahl der Clients fur die Neuzuweisungen und die Neuzuweisungen an sich laufen dabei genauso ab wie beim Lastbalancierungsverfahren PMN.
Die Implementierung des Schedulers des Lastbalancierungsverfahrens SOJ ist in der Klasse de.upb.sfb376.a1.server.SchedulerSOJ zu finden.
4.2.6 Implementierung von SMJ
Als Besonderheiten beim Lebenszyklus eines BSP-Programms (vgl. Kapitel 4.2.2) bei Ver- wendung des Lastbalancierungsverfahrens SMJ sind zu erwahnen:
• Nur einer der BSP-Prozesse, die den Prozessor anfordern, bekommt ihn sofort zuge- teilt – die ubrigen BSP-Prozesse mussen warten, bis sie an der Reihe sind (sequentielle Ausfuhrung).
• Die Migrationen finden nicht unmittelbar nach Ende eines Supersteps statt, son- dern wahrend der Wartephase auf den Prozessor (d.h. die BSP-Prozesse konnen von der Warteschlange auf einem Client in die Warteschlange auf einem anderen Client umziehen).
Sei n die Anzahl der Clients, die im jeweils aktuellen Superstep mit der Ausfuhrung des BSP-Programms beschaftigt sind.
Jedesmal wenn ein BSP-Prozess die Status-Nachricht ” superstep end“ an den Server sendet,
uberpruft der Scheduler,
1. ob alle BSP-Prozesse mit dem aktuellen Superstep fertig sind oder
2. (a) ob der betroffene Client keine weiteren BSP-Prozesse mehr in der Warteschlange hat und
(b) ob wenigstens max{1, rnd(s · n)} Clients mit mindestens einem zugewiesenen BSP-Prozess fertig sind.
34
4.2. IMPLEMENTIERUNG DER LASTBALANCIERUNGSVERFAHREN
Im ersten Fall wird der Wachter-Prozess beendet, sofern er gestartet wurde. Eine Optimie- rung ist bei diesem Lastbalancierungsverfahren an dieser Stelle nicht mehr erforderlich, da die Warteschlangen wahrend der Ausfuhrung des Supersteps ausgeglichen werden.
Im zweiten Fall wird dem betroffenen Client, falls er alle ihm zugewiesenen BSP-Prozesse abgearbeitet hat, ein weiterer BSP-Prozess zugewiesen, der der Warteschlange des am meisten uberlasteten Clients14 entnommen wird. Falls außerdem ein Mindestanteil der beteiligten Clients mit wenigstens einem zugewiesenen BSP-Prozess fertig ist, wird ein Wachter-Prozess gestartet (falls schon ein Wachter-Prozess lauft, werden nur seine Para- meter aktualisiert). Dieser Wachter-Prozess bricht genau dann alle laufenden BSP-Prozesse ab, wenn keine BSP-Prozesse mehr in Warteschlangen stehen und alle noch laufenden BSP- Prozesse eine bestimmte Hochstdauer uberschritten haben; die Hochstdauer ist dabei das r-fache der durchschnittlichen Bearbeitungsdauer auf dem max{1, rnd(s ·n)}-langsamsten Client. Durch die Verknupfung der beiden Bedingungen im Abbruchkriterium wird erreicht, dass die Prozessausfuhrung auf zu langsamen Clients erst dann abgebrochen wird, wenn schnellere Clients Leerlauf haben; dadurch wird die Anzahl der Neustarts minimiert und die Rechenleistung zu langsamer Clients maximal ausgenutzt.
Die Implementierung des Schedulers und des Wachter-Prozesses des Lastbalancierungsver- fahrens SMJ ist in der Klasse de.upb.sfb376.a1.server.SchedulerSMJ zu finden.
14Der am meisten uberlastete Client ist dabei definiert als derjenige Client, beim dem das Verhaltnis der nicht bearbeiteten BSP-Prozesse zu den zugewiesenen BSP-Prozessen am hochsten ist.
35
In diesem Kapitel wird zunachst ein Modell zur Beschreibung der CPU-Auslastung ent- wickelt; anschließend werden die in Kapitel 3.3 vorgestellten Lastbalancierungsverfahren anhand dieses Modells analysiert.
5.1 Das Modell
Zur Analyse der Lastbalancierungsalgorithmen ist ein Modell erforderlich, das einerseits fur die Analyse hinreichend prazise ist und andererseits flexibel genug fur die in der Realitat typischerweise auftretenden Lastschwankungen.
Im Modell wird dabei von folgender Beobachtung ausgegangen: Viele PC-Nutzer fuhren an ihren Rechnern oft keine Tatigkeit aus (z.B. nachts oder in der Mittagspause) oder gleichformige Tatigkeiten (z.B. Textverarbeitung, Programmieren, etc.), wobei diese Tatig- keiten ein regelmaßiges Muster aufweisen (z.B. Editieren, Kompilieren, Testen) oder sogar an sich gleichformig sind (z.B. Tippen). Daher weist die CPU-Auslastung eines Rechners typischerweise fur eine bestimmte Zeitdauer ein relativ regelmaßiges Muster auf, andert sich dann meist abrupt (wenn der PC-Nutzer eine andere Tatigkeit beginnt) und weist wieder eine Zeit lang ein ziemlich gleichformiges Muster auf usw. Dies wird sich spater noch in zahlreichen Messungen zeigen.
Eine gegebene CPU-Auslastungskurve (z.B. von der Lange einer Woche), wird im Modell deshalb in Blocke unterteilt, in denen die CPU-Auslastung einigermaßen gleichbleibend ist oder ein regelmaßiges Muster aufzeigt; solche Blocke sind typischerweise einige Stunden lang, jedoch treten auch Langen von einer halben Stunde (z.B. Mittagspause) bis hin zu ein paar Tagen (z.B. langes Wochenende) auf. Diese Blocke werden im Folgenden mit Lastsequenz bezeichnet.
Die CPU-Auslastung in einer Lastsequenz wird dabei durch ein relativ enges Intervall um einen mittleren Lastwert und ein Maß fur die
’ Ausreißer‘ (d.h. Spitzen in der CPU-
37
Abbildung 5.1: Beispielhafte Anwendung des Modells auf eine CPU-Auslastungskurve
Auslastung, die außerhalb des engen Intervalls liegen) beschrieben. Zur Veranschaulichung betrachte man Abbildung 5.1; die Ausreißer nach oben (unten) sind rot (grun) hinterlegt.
Um die Haufigkeit und Dauer der Ausreißer zu beschreiben, wird eine Lastsequenz in eine Folge vieler kurzer, gleichartiger Unterabschnitte, im Folgenden Lastperioden genannt, unterteilt. Die Lange dieser Lastperioden ist pro Lastsequenz einheitlich und betragt z.B. funf Minuten. Der in Abbildung 5.1 gezeigte Ausschnitt einer Lastsequenz dauert drei Lastperioden.
Die Ausreißerquote ist der Anteil der Ausreißer bezogen auf eine Lastperiode, wobei der Wert eine obere Schranke fur jeden beliebigen Startzeitpunkt einer Lastperiode innerhalb der Lastsequenz sein muss. Fur die Lastkurve aus Abbildung 5.1 ist in Abbildung 5.2 eine Wahl des Startzeitpunkts zu sehen, die ungunstig ist im Sinne, dass die Ausreißerquote im dem gezeigten Ausschnitt maximal wird.
Es folgt nun eine formale Beschreibung des Modells:
Definition 5.1 Fur einen Rechner i ∈ N0 ist seine CPU-Auslastung zum Zeitpunkt t definiert durch:
`i(t) : R+ 0 7→ [ 0; 1 ]
Definition 5.2 Fur einen Rechner i ∈ N0 seien λi, αi, β
+ i , β−i ∈ R gewahlt mit:
• 0 ≤ λi < 1 (die Intervallmitte)
• 0 ≤ λi − αi und λi + αi < 1 (der Intervallradius)
• 0 ≤ β+ i , β−i < 1
2 (die Ausreißerquoten)
5.2. EINGRENZUNG DER SCHWANKUNGEN
Weiterhin seien Ti ∈ R+, Ii eine Zeitspanne der Lange Ti sowie Ii,j, I + i,k, I
− i,k ⊆ Ii disjunkte
Zeitintervalle mit: j
und ∀t ∈ Ii,j : |λi − `i(t)| ≤ αi
∀t ∈ I+ i,k : λi − `i(t) < −αi
∀t ∈ I−i,l : λi − `i(t) > αi
Wenn die Variablen λi, αi, β + i , β−i derart gewahlt sind, dass∑
k
I−i,l ≤ β−i · Ti (5.1)
gilt, dann ist die Zeitspanne Ii auf dem Rechner i eine (i, λi, αi, β + i , β−i , Ti)-Lastperiode.
Zur Veranschaulichung betrachte man nochmals Abbildung 5.1, in der eine Sequenz von drei Lastperioden dargestellt ist. Die rot hinterlegten Zeitintervalle einer Lastperiode ent- sprechen dabei den Zeitintervallen I+
i,j, die grun hinterlegten den Zeitintervallen I−i,j und die nicht hinterlegten den Zeitintervallen Ii,j aus Definition 5.2. Bedingung (5.1) besagt, dass die rot hinterlegten Zeitintervalle pro Lastperiode zusammengenommen maximal einen Faktor β+
i und die grun hinterlegten maximal einen Faktor β−i der Dauer der Lastperiode ausmachen.
Bei der Einteilung einer gegebenen CPU-Auslastungskurve in Lastperioden wird man die Parameter αi, β
+ i , β−i einerseits moglichst klein halten, andererseits aber nicht zu eng
wahlen, um eine moglichst lange Folge gleicher Lastperioden zu erhalten.
Definition 5.3 Seien i, λi, αi, β
+ i , β−i , Ti wie in Definition 5.2 gewahlt; weiter seien t0, t1 ∈ R+
0 mit t0 < t1.
Dann ist auf dem Zeitintervall [ t0; t1) eine (i, λi, αi, β + i , β−i , Ti, t0, t1)-Lastsequenz auf einem
Rechner i definiert als eine Folge von b t1−t0 Ti c (i, λi, αi, β
+ i , β−i , Ti)-Lastperioden.
Die Parameter αi, β + i , β−i mussen dabei so gewahlt sein, dass fur einen beliebigen Zeitpunkt
t ∈ [ t0; t1 − Ti ) als Startzeitpunkt einer Lastperiode Definition 5.2 erfullt ist.
In dem Beispiel aus Abbildung 5.1 mussen β+ i und β−i also fur die ungunstigste (s.o.) Wahl
von t0 ausreichend groß gewahlt werden. Abbildung 5.2 zeigt einen solchen Fall.
5.2 Eingrenzung der Schwankungen
Angenommen, einem Rechner wurde ein BSP-Prozess zugewiesen, dann stellt sich die Fra- ge, wie viel Zeit der Rechner zur Ausfuhrung eines Supersteps im besten bzw. schlechtesten Fall benotigt.
39
+t 0t 0 Ti Ti
Abbildung 5.2: Ungunstige Wahl von t0 fur das Beispiel aus Abbildung 5.1
Dazu benotigt man folgende Definition:
Definition 5.4 Die Normdauer eines Supersteps, Di,j ∈ R+, ist definiert als die Dauer, die die Ausfuhrung des Supersteps j auf dem Rechner i erfordert in dem Fall, dass der Rechner 100% seiner Rechenleistung zur Verfugung stellen wurde.
Die Ausfuhrungsdauer eines Supersteps, di,j(t) : R+ 0 7→ R+, ist die tatsachlich zur Aus-
fuhrung des Supersteps j auf dem Rechner i benotigte Zeit, wenn die Ausfuhrung des Supersteps zum Zeitpunkt t ∈ R+
0 beginnt.
Es ist davon auszugehen, dass nur einige Male pro Tag eine neue Lastsequenz beginnt, was bedeutet, dass die Lastsequenzen typischerweise relativ lang sind im Vergleich zur Dauer eines Supersteps.
Die Dauer der Lastperioden dagegen sei relativ kurz gewahlt1 im Vergleich zur Dauer eines Supersteps, d.h. Ti Di,j.
Unter diesen Voraussetzungen konnen nun zwei Falle auftreten:
1. Die Ausfuhrung eines Supersteps geschieht innerhalb einer Lastsequenz. Dieser Fall wird im Folgenden genauer untersucht.
2. Eine neue Lastsequenz beginnt wahrend der Ausfuhrung eines Supersteps. Da sich die Parameter der neuen Lastsequenz von denen der alten vollig unterscheiden konnen, ist fur diesen Fall keine Aussage uber die tatsachlich benotigte Zeit di,j(t) moglich: Di,j ≤ di,j(t) ≤ ∞
1Im Gegensatz zur Dauer der Lastsequenzen, auf die man keinen Einfluss hat, kann man die Dauer der Lastperioden geeignet wahlen.
40
Fur Fall 1 kann man folgendes zeigen:
Lemma 5.5 Seien Di,j und di,j(t) wie oben definiert. Dann gilt fur die Ausfuhrung des Supersteps j auf dem Rechner i innerhalb einer (i, λi, αi, β
+ i , β−i , Ti, t0, t1)-Lastsequenz:
Di,j
Di,j
mit:
i Ti
wobei der Parameter Ti der Lastsequenz derart zu wahlen ist, dass Ti Di,j.
Beweis: Die minimale bzw. maximale Ausfuhrungsdauer wird offensichtlich von den durch die (i, λi, αi, β
+ i , β−i , Ti)-Lastperioden gegebenen Grenzen bestimmt. In Abbildung 5.3 sind
fur λi = 1 2 , αi = 1
12 , β+
und β−i = 1 12
die obere Grenze in rot und die untere in grun eingezeichnet.
Ware die CPU-Auslastung stets mit der oberen Grenze identisch, ergabe sich im Mittel eine Auslastung von:
`max,i := β+ i · 1 + (1− β+
i )(λi + αi) (5.3)
`min,i := β−i · 0 + (1− β−i )(λi − αi) (5.4)
Teilt man nun die Normdauer Di,j durch die Rechenleistung, die bei minimal bzw. maximal moglicher CPU-Auslastung in der Lastseqzenz verfugbar ist, erhalt man Ungleichung (5.2).
41
a)
0
1
t
b)
+ε2
Abbildung 5.4: Speziallfall: letzte Lastperiode (obere Schranke)
Zu zeigen bleiben noch die Abschatzungen fur die Korrekturwerte ε1 und ε2, die deshalb erforderlich sind, weil die Ausfuhrungsdauer di,j(t) kein ganzzahlig-Vielfaches von Ti sein muss.
Weil eine Lastperiode innerhalb einer Lastsequenz zu einem beliebigen Zeitpunkt beginnen darf (vgl. Definition 5.3), kann man annehmen, dass der Startzeitpunkt der Ausfuhrung des Supersteps mit dem Beginn einer Lastperiode zusammenfallt. Dies bedeutet, dass man nur am Ende der Ausfuhrung des Supersteps
’ Verschnitt‘ hat, d.h. eine zu einem Bruchteil
x ∈ R, 0 < x < 1, angebrochene Lastperiode.
Ohne die Korrekturwerte ε1 und ε2 wurde das bedeuten, dass auf diesen angebrochenen Teil der Lastperiode maximal ein Anteil von x der insgesamt β+
i Ti (β−i Ti) langen Abweichungen der CPU-Auslastungskurve nach oben (unten) entfiele. Dies kann aber nicht garantiert werden. Daher sind die Korrekturwerte ε1 und ε2 so zu wahlen, dass im Fall der oberen (unteren) Schranke die gesamte Abweichung nach oben (unten) auf den angebrochenen Teil entfallen kann.
Abbildung 5.4 zeigt den Einfluss, den die β+ i Ti langen Abweichungen der CPU-Ausla-
stungskurve nach oben haben konnen (grau dargestellt ist die Rechenkapazitat, die der BSP-Prozess nutzen kann): In Fall b) verlangert sich die Ausfuhrungsdauer um ε2 = β+
i Ti
gegenuber Fall a)2.
Der Einfluss, den die β−i Ti langen Abweichungen der CPU-Auslastungskurve nach unten haben konnen, ist nicht ganz so einfach zu berechnen. Man betrachte dazu Abbildung 5.5: Die hell- bzw. dunkelgrau hinterlegte Flache stellt die Rechenkapazitat dar, die der BSP-Prozess nutzen kann. Das dunkelgraue Rechteck in Fall a) ist in Fall b) abgeschnitten und durch ein flachengleiches in der Abweichung der CPU-Auslastungskurve nach unten
2Die Abschatzung fur ε2 ist dabei etwas zu grob, da ein Bruchteil von x der β+ i Ti langen Abweichungen
der CPU-Auslastungskurve nach oben in der ursprunglichen Ausfuhrungsdauer schon eingerechnet ist.
42
a)
0
1
t
b)
-ε1
Abbildung 5.5: Speziallfall: letzte Lastperiode (untere Schranke)
ersetzt worden3. Dadurch verkurzt sich in Fall b) die Ausfuhrungsdauer um die Breite des dunkengrauen Rechtecks aus Fall a), die sich aus der Flache des dunkelgrauen Rechtecks aus Fall b) geteilt durch die Hohe des dunkelgrauen Rechtecks aus Fall a) ergibt, d.h. ε1 = β−i Ti
λi−αi
1−(λi−αi) .
Folglich erhalt man mit Ungleichung (5.2) eine untere und eine obere Schranke, womit das Lemma folgt. q.e.d.
Nun stellt sich die Frage, welche Werte fur die Parameter λi, αi, β + i , β−i der Lastsequenz
moglich sind, damit minimale und maximale Ausfuhrungsdauer nur um einen Faktor q ∈ R+, q > 1, auseinander liegen.
Satz 5.6 Wenn ein Superstep mit Normdauer Di,j komplett innerhalb einer (i, λi, αi, β
+ i , β−i , Ti, t0, t1)-
Lastsequenz ausgefuhrt wird, dann liegen die minimale und maximale Ausfuhrungsdauer des Supersteps um maximal einen Faktor q ∈ R+, q > 1, auseinander, falls Ti derart gewahlt ist, dass Ti Di,j, und falls fur die Parameter λi, αi, β
+ i , β−i gilt:
(q (β+ i − 1)− β−i + 1) λi + (q (β+
i − 1) + β−i − 1) αi + q (1− β+ i ) ≤ 1 (5.5)
3Die Abschatzung ist auch in diesem Fall etwas etwas zu grob, da ein Bruchteil von x der β−i Ti
langen Abweichungen der CPU-Auslastungskurve nach unten in der ursprunglichen Ausfuhrungsdauer schon eingerechnet ist.
43
Beweis: Ausgehend von Ungleichung (5.2) aus Lemma 5.5 erhalt man:
Di,j
Di,j
⇒ Di,j
1− (1− β−i )(λi − αi)
⇒ 1− (1− β−i )(λi − αi) ≤ q (1− (β+ i + (1− β+
i )(λi + αi)))
i )(λi + αi))) + (1− β−i )(λi − αi) ≤ 1
⇒ q − qβ+ i − qλi − qαi + qβ+
i λi + qβ+ i αi + λi − αi − β−i λi + β−i αi ≤ 1
⇒ (q (β+ i − 1)− β−i + 1) λi + (q (β+
i − 1) + β−i − 1) αi + q (1− β+ i ) ≤ 1
q.e.d.
Ungleichung (5.5) aus Satz 5.6 beschreibt nun eine Teilmenge des funfdimensionalen Raums. Ihr Rand ist bestimmt durch die zugehorige Gleichung:
(q (β+ i − 1)− β−i + 1) λi + (q (β+
i − 1) + β−i − 1) αi + q (1− β+ i ) = 1 (5.6)
Zur geometrischen Interpretation wird der Parameter q festgehalten und den Parameter β−i schrittweise verandert, um eine dreidimensionale Darstellung zu ermoglichen.
Dabei sind zusatzlich die Einschrankungen an die Parameter (vgl. Definition 5.2 bzw. Satz 5.6) zu berucksichtigen:
• 0 ≤ λi < 1
• 0 ≤ β+ i , β−i < 1
2
(q (β+ i − 1)− β−i + 1) λi + (q (β+
i − 1) + β−i − 1) αi + q (1− β+ i ) = 1
⇒ αi = 1− (q (β+
i − 1)− β−i + 1) λi − q (1− β+ i )
q (β+ i − 1) + β−i − 1
Eine Division durch null kann dabei nicht auftreten aufgrund der genannten Einschrankun- gen an die Parameter:
∀ q, β+ i , β−i : q (β+
i − 1) <0
Abbildung 5.6: Plot fur q = 2, β−i = 0
Abbildung 5.6 zeigt den Plot fur q = 2 und β−i = 0. Die Plots fur q = 2 und in 0,1-er Schritten von 0 auf 0,5 erhohtes β−i sind in Abbildung 5.7 und die Plots fur q = 1,5 bzw. q = 2 bzw. q = 3 und β−i = 0 in Abbildung 5.8 zu sehen. Um die Plots aus verschiedenen Perspektiven betrachten zu konnen, moge sich der Leser die Plots selber erzeugen; die noti- gen Befehle fur MuPAD (oder alternativ auch fur Maple) findet man auf der beiliegenden CD.
Beispiel 5.7 Angenommen, ein Benutzer fuhrt wahrend seiner Login Session folgendes durch:
• Verfassen eines Aufsatzes o.a.
• Lesen / Schreiben von e-Mails
• Recherchieren im Internet
Dann erfordern die von ihm benutzten Anwendungen i.d.R. die meiste Zeit uber nur eine geringe Rechenleistung, und nur gelegentlich wird z.B. durch das Starten von Anwendungen oder durch Multimedia-Objekte kurzzeitig erhohte oder volle Rechenleistung benotigt.
45
λi
Abbildung 5.7: Plot fur q = 2, β−i = [0,0; 0,1; 0,2; . . . ; 0,5]
Liegt die Rechenleistung beispielsweise hauptsachlich unter 20% und pro funf Minuten fur nur maximal eine Minute daruber, dann lasst sich der Lastverlauf wahrend der Login Session durch eine Lastsequenz mit λi = 10%, αi = 10%, β+
i = 20%, β−i = 0% und Ti = 300s beschreiben; die zugehorige Koordinate (0,1; 0,2; 0,1) liegt unterhalb der Flache fur q = 2 aus Abbildung 5.6; zwischen der minimal und maximal verfugbaren Rechenkapazitat wahrend der Login Session liegt also ein Faktor von weniger als 2.
Lost man Gleichung 5.5 nach q auf, erhalt man:
1− (1− β−i )(λi − αi)
1− (β+ i + (1− β+
i )(λi + αi)) ≤ q (5.7)
Eine Division durch null kann dabei nicht auftreten aufgrund der Einschrankungen an die Parameter.
Dies fuhrt zu folgender Definition:
Definition 5.8 Eine (i, λi, αi, β
+ i , β−i , Ti, t0, t1)-Lastsequenz heißt q-beschrankt, falls sie die Gleichung 5.7
erfullt.
46
λi
Abbildung 5.8: Plot fur q = [1,5; 2,0; 3,0], β−i = 0
Beispiel 5.9 Die Lastsequenz aus Beispiel 5.7 ist wegen 1−(1−0)(0,1−0,1)
1−(0,2+(1−0,2)(0,1+0,1)) = 1,5625 also z.B. 1,6-
beschrankt.
5.3 Lastmessungen
In diesem Abschnitt geht es darum zu untersuchen, wie sich die Lastkurven in der Realitat verhalten und welche Werte fur die Parameter im Modell gewahlt werden mussen.
Dazu wurden an drei verschiedenen Hochschulen in insgesamt vier verschiedenen Rechner- netzen uber einen Zeitraum von 21 bzw. 28 Tagen (beginnend an einem Freitag um 00:00 Uhr) alle 30 Sekunden die Auslastung der CPU gemessen.
Die Taktfrequenz der insgesamt uber 100 untersuchten Rechner reichte von 233 MHz bis hin zu 2,8 GHz. Neben wenigen Mehr-Prozessor-Maschinen handelte es sich hauptsachlich um Ein-Prozessor-Maschinen. Als Betriebsysteme kamen Debian Linux, RedHat Enterprise Linux und SuSE Linux zum Einsatz.
47
KAPITEL 5. ANALYSE
Die Lastmessungen erfolgten durch ein Perlskript (vgl. Listing B.1 in Anhang B.1), welches aus den Werten aus /proc/stat die (gemittelte) CPU-Nutzung der letzten 30 Sekunden errechnet, diesen Wert an eine Datei anhangt und dann 30 Sekunden schlaft usw.
Samtliche Rohdaten (uber 2300 Dateien mit insgesamt uber 6,8 Mio. Messwerten) sowie deren Aufbereitung und Auswertung in uber 400 Diagrammen befinden sich auf der bei- liegenden CD.
Da aufgrund der riesigen Datenflut eine Bearbeitung per Hand ausscheidet, wurden die Lastkurven mit einem Perlskript (auf der beiliegenden CD enthalten) geeignet in Lastse- quenzen zerlegt. Das Ziel bei der Wahl der Parameter ist dabei nicht nur, Lastsequenzen mit moglichst geringer q-Beschranktheit und moglichst langer Dauer zu erhalten, sondern auch, den Anteil nicht nutzbarer Intervalle moglichst gering zu halten.
Offensichtlich hangen diese drei Kenngroßen von einander ab: wenn man eine sehr niedrige q-Beschranktheit und gleichzeitig eine lange Dauer fordert, steigt die Ausschussquote stark an. Es handelt sich also um ein nicht-triviales Optimierungsproblem, fur das Perlskript nur eine Naherungslosung liefert.
Bemerkung 5.10 Um das Optimum zu finden, brauchte man eine Aufschlusselung der CPU-Auslastung, die so fein ist wie die kleinste Schwankung; aber bereits bei einer Auflosung im Sekundenbereich wurde die Last fur das Messen der Last die Ergebnisse stark verfalschen.
Das folgende Beispiel illustriert, welchen Einfluss das Abgreifen gemittelter Lastwerte im 30-Sekunden-Rhythmus haben kann.
Beispiel 5.11 Angenommen, ein Benutzer surft im Internet und verursacht dadurch hauptsachlich eine CPU-Last zwischen 0% und 2% (die Werte seien gleichmaßig zwischen 0% und 2% verteilt). Gelegentlich verursachen aufwendig gestaltete Webseiten kurzzeitig Vollast; angenommen, dies passiert dreimal in einer Lastperiode von 5 Minuten Dauer, dauert jeweils 2 Sekunden und dazwischen liegen jeweils mindestens 30 Sekunden.
Dann betragt die tatsachliche durchschnittliche Last:
294s0,02−0 2
≈ 0,03
Man wahlt also λi = αi = 1%, β+ i = 2% und β−i = 0%. Damit ist die Lastperiode
q-beschrankt fur:
1− (0,02 + (1− 0,02)(0,01 + 0,01)) ≈ 1, 04
Man kennt nun aber nicht die tatsachliche Last, sondern hat nur 10 Messwerte vorliegen, die jeweils die gemittelte Last eines 30-Sekunden-Intervalls darstellen. Da drei der 10 In- tervalle je eine 2-Sekunde-Spitze enthalten, hat man 7 Messwerte von 0,02−0
2 = 0,01 und
2 + 2s · 1
30s = 0,076
Man kann nun beispielsweise β+ i = 30%, β−i = 0% und λi = αi = 1% wahlen, woraus sich
folgende q-Beschranktheit ergibt:
1− (0,3 + (1− 0,3)(0,01 + 0,01)) ≈ 1, 46
Oder man kann β+ i = 0%, β−i = 0% und λi = αi = 3, 8% wahlen, woraus sich diese
q-Beschranktheit ergibt:
1− (0 + (1− 0)(0,038 + 0,038)) ≈ 1, 08
Das Perlskript zur Zerlegung einer Lastkurve in Lastsequenzen arbeitet nun wie folgt: Zu gegebenem β+
i , β−i und Ti sowie einer Obergrenze fur αi zerlegt es eine gegebene Lastkurve derart in Lastsequenzen, dass diese moglichst lang sind und nebenbei αi pro Lastsequenz moglichst klein bleibt. Intervalle, in denen die CPU fast vollstandig ausgelastet ist (z.B. uber 90%) oder die kurzer als eine bestimmte Mindestdauer (z.B. 30 min.) sind, sind von keinem Nutzen und werden daher nicht als Lastsequenzen ausgegeben.
Fur Ti wurden funf Minuten gewahlt, da einerseits bei einer zu kurzen Dauer ein zu großer Wert fur β+
i bzw. β−i folgt, und andererseits die Dauer deutlich kurzer als die einer Berech- nungsphase sein muss (vgl. Kapitel 5.2). Fur β+
i bzw. β−i sowie als Obergrenze fur αi muss man die am besten geeigneten Werte durch systematisches Variieren der moglichen Werte ermitteln (da pro 5 Minuten nur 10 Messwerte vorliegen, sind fur β+
i bzw. β−i nur Werte in 10%-Schritten eine sinnvolle Wahl, was die Zahl der infrage kommenden Kombinationen deutlich verkleinert). Als Obergrenze fur αi wurde in einigen Fallen auch eine Funktion in λi verwendet.
Nebenher sammelt das Perlskript außerdem noch statistische Daten wie z.B. die Ausschuss- quote, die durchschnittliche Dauer einer Lastsequenz usw.
Es folgen nun ausgewahlte Messergebnisse aus den vier Rechnernetzen, im Folgenden als
” Netz A“ bis
” Netz D“ bezeichnet.
5.3.1 Ergebnisse aus Netz A
Beim Betrachten von Abbildung 5.9, in der jeder Messpunkt der (gemittelten) CPU- Nutzung in einem 30-Sekunden-Intervall entspricht, fallt sofort auf, dass die CPU-Last nachts (von 20:00 Uhr bis 08:00 Uhr) praktisch durchgehend bei ca. 100% liegt; an eini- gen Tagen betragt die CPU-Last auch tagsuber ca. 100%, an den ubrigen Tagen liegt sie tagsuber hauptsachlich bei knapp uber 0% mit vielen Streuungen von teilweise bis uber
49
Uhrzeit
Tag 01 Tag 02 Tag 03 Tag 04 Tag 05 Tag 06 Tag 07 Tag 08 Tag 09 Tag 10 Tag 11 Tag 12 Tag 13 Tag 14 Tag 15 Tag 16 Tag 17 Tag 18 Tag 19 Tag 20 Tag 21
Abbildung 5.9: Auslastung von host07 aus Netz A (24h-Ansicht)
40%, wobei die Werte dabei tatsachlich hauptsachlich bei ca. 0% konzentriert sind und die Wertedichte nach oben schnell abnimmt (vgl. Abbildung 5.12).
Reiht man die Messergebnisse der 21 Tage hintereinander auf (vgl. Abbildung 5.10), er- kennt man folgende Regelmaßigkeit: Diejenigen Tage, an denen die CPU-Last tagsuber hauptsachlich bei knapp uber 0% mit vielen Streuungen von teilweise bis uber 40% liegt, sind Werktage. An Wochenenden betragt die CPU-Last auch tagsuber ca. 100%. Die grun gestrichelte Kurve beschreibt eine Glattung, die man erhalt, indem man ein zehn Messwerte breites Fenster uber die Daten schiebt und an jeder Stelle jeweils den Mittelwert bildet.
Da fast alle Rechner aus Netz A ein derartiges Muster aufweisen4, liegt die Vermutung nahe, dass rechenintensive Aufgaben in diesem Rechnernetz nachts und am Wochenende skriptgesteuert durchgefuhrt werden.5 Die interaktiv genutzten Anwendungen verursachen erwartungsgemaß nur eine geringe CPU-Last mit vereinzelten Spitzen; einige wenige Male pro Tag treten jedoch starke Ausreißer oder langer anhaltende Veranderungen auf.
Die Zerlegung der gegebenen Lastkurven in Lastsequenzen wurde mit dem eingangs be- schriebenen Perlskript durchgefuhrt. Dabei wurden β+
i = 20%, β−i = 10% sowie 15% als Obergrenze fur αi verwendet. Die errechneten Lastsequenzen sind in Abbildung 5.11 zu
4Die Diagramme von samtlichen Messungen befinden sich auf der beiliegenden CD. 5Stichprobenartige Nachforschungen bestatigen diese Vermutung.
50
A us
la st
un g
Abbildung 5.10: Auslastung von host07 aus Netz A (aneinandergereihte Ansicht)
sehen: Jedes (rot-grune) Saulenpaar6 entspricht dabei einer Lastsequenz; die Breite der Saulen gibt die Dauer der Lastsequenz an. Die Hohe der roten Saulen entspricht λi + αi
und die der grunen Saulen λi − αi. Fur die Mehrzahl der Lastsequenzen betragen λi und αi also weniger als 15%.
Dass alle 53 untersuchten Rechner aus Netz A eine sehr ahnliche Verteilung der Ausla- stungswerte haben, und dass insbesondere die Auslastung mit hoher Wahrscheinlich ent- weder nahe 0% oder nahe 100% liegt, ist aus Abbildung 5.12 (logarithmische Skala!) er- sichtlich.
Das Verhaltnis der Lange der ausgegebenen Lastsequenzen zu der der nicht nutzbaren Zeitintervalle betragt auf den meisten der 53 Rechner ca. 2:1 (vgl. Abbildung 5.13). Zu den nicht nutzbaren Zeitintervallen zahlen dabei diejenigen Zeitintervalle, in denen die CPU ausgelastet ist, sowie solche, die kurzer als die Mindestdauer sind oder in denen die CPU- Auslastung zu stark schwankt; der Anteil der Idle-Zeit der nicht nutzbaren Zeitintervalle (aus den beiden zuletzt genannten Fallen) an der gesamten Rechenzeit ist in Abbildung 5.14 dargestellt.
Die durchschnittliche Dauer einer Lastsequenz liegt bei der Mehrzahl der Rechner zwischen 2 und 12 Stunden (vgl. Abbildung 5.15).
6Die meisten grunen Saulen haben eine Hohe von null und sind daher nicht zu erkennen.
51
A us
la st
un g
0.0016
0.008
0.04
0.2
1
W ah
rs ch
ei nl
ic hk
ei t
Auslastung
host00 host01 host02 host03 host04 host05 host06 host07 host08 host09 host10 host11 host12 host13 host14 host15 host16 host17 host18 host19 host20 host21 host22 host23 host24 host25 host26
host27 host28 host29 host30 host31 host32 host33 host34 host35 host36 host37 host38 host39 host40 host41 host42 host43 host44 host45 host46 host47 host48 host49 host50 host51 host52
Abbildung 5.12: Verteilung der Auslastungswerte in Netz A
52
Abbildung 5.13: Anteil der nutzbaren Lastsequenzen in Netz A
0
0.01
0.02
0.03
0.04
0.05
0.06
0.07
host50host45host40host35host30host25host20host15host10host05host00
Abbildung 5.14: Anteil der nicht nutzbaren Rechenzeit in Netz A
53
Abbildung 5.15: Durchschnittliche Dauer der Lastsequenzen in Netz A
Grenzen zwei auf einander folgende Lastsequenzen nicht direkt aneinander an (weil ein nicht nutzbares Intervall dazwischen liegt), entsteht eine Lucke. Fur die Rechner aus Netz A kann man die Anzahl der Lucken aus Abbildung 5.16 entnehmen: auf den meisten Rechnern gibt es zwischen 15 und 35 Lucken, was bei einer Dauer von 21 Tagen im Schnitt weniger als 2 Lucken pro Tag entspricht.
Schließlich stellt sich noch die Frage, fur welche Werte von q die Lastsequenzen jeweils q-beschrankt sind. Fur den eben betrachteten Rechner host07 aus Netz A sind alle Last- sequenzen ca. 1,8-beschrankt, einige sogar ca. 1,25-beschrankt, wie aus Abbildung 5.17 ersichtlich ist.
Abbildung 5.18 zeigt, dass die minimale und die maximale q-Beschranktheit der Lastse- quenzen auf den meisten Rechnern in Netz A i.W. dieselbe ist wie auf host07; die durch- schnittliche q-Beschranktheit der Lastsequenzen liegt auf vielen Rechnern sogar niedriger als auf host07.
5.3.2 Ergebnisse aus Netz B
Netz B weist im Gegensatz zu Netz A kein signifikantes Muster in der Last tags bzw. nachts sowie am Wochenende auf. Stattdessen ist ein permanentes Hintergrundrauschen feststellbar (vgl. Abbildung 5.19).
54
Abbildung 5.16: Anzahl der Lucken zwischen Lastsequenzen in Netz A
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
q− B
es ch
rä nk
th ei
Abbildung 5.17: q-Beschranktheit der Lastsequenzen auf host07 aus Netz A
55
Abbildung 5.18: Minimale, durchschnittliche und maximale q-Beschranktheit
0
0.2
0.4
0.6
0.8
1
A us
la st
un g
Abbildung 5.19: Auslastung von host01 aus Netz B (aneinandergereihte Ansicht)
56
W ah
rs ch
ei nl
ic hk
ei t
Auslastung
host00 host01 host02 host03 host04 host05 host06 host07 host08 host09 host10 host11 host12 host13 host14 host15 host16 host17 host18 host19 host20 host21 host22 host23
Abbildung 5.20: Verteilung der Auslastungswerte in Netz B
Auch in Netz B haben die insgesamt 24 untersuchten Rechner eine untereinander sehr ahnliche Verteilung der Auslastungswerte, wie Abbildung 5.20 zeigt. Auffallig ist das Hin- tergrundrauschen auf der Mehrzahl der Rechner sowie die Spitzen bei ca. 25%, 50% und 75%, die durch Dual- und Quadro-Prozes