• Keine Ergebnisse gefunden

Adaptive Prozess- und Speicherverwaltung in verteilten Systemen

N/A
N/A
Protected

Academic year: 2022

Aktie "Adaptive Prozess- und Speicherverwaltung in verteilten Systemen"

Copied!
121
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

deposit_hagen

Publikationsserver der

Mathematik und

Informatik

Informatik-Berichte 65 – 01/1987

Dietmar Hehmann

Adaptive Prozess- und Speicherverwaltung

in verteilten Systemen

(2)

ADAPTIVE PROZESS- UND SPEICHERVERWALTUNG IN VERTEILTEN SYSTEMEN

Dietmar Hehmann

(3)

INHALTSVERZEICHNIS

1 Einleitung

2 Begriffsklärung

2.1 Verteilte Systeme

2.2 Verteilte Betriebssysteme

2.3 Konkurrente Programme und Prozesse 3 Konzepte konkurrenter Programmierung

3.1 Stand der Wissenschaft

3.2 Implementation konkurrenter Programme in verteilten Systemen

4 Zuordnung von Prozessen zu Prozessoren 4.1 Statische Verfahren

4.1.l Graphentheoretische Ansätze 4.1.2 Darstellung durch Matrizen 4.1.3 Coscheduling in ~edusa 4.1.4 Heuristische Verfahren

4.1.5 Berücksichtigung der Zeitdauer einer Kommunikation

4.2 Dynamische Verfahren

4.2.1 Graphentheoretische Ansätze

4.2.2 In EPOS implementiertes Verfahren 4.3 Diskussion der Verfahren

5 Ein adaptives Verfahren zur Prozeß- und Speicherverwaltun[ in verteilten Systemen 5 .1 Prämissen

5.1.1 Hardware 5 .1.2 Prozesse

5.1.3 Lastbereiche eines Rechners

1 5 5 8 10 11 11

13

15 16

17 18 19 21 25 25 25 26 28

31

35 35 37 39

(4)

5.2 Die Prozeßverwaltung

5.2.1 Notwendigkeit der Migrationsentscheidung 5.2.2 Auswahl von zur Migration

geeigneten Prozessen

5 . 2 . 3 A u s w a.h 1 d e s Z i e 1 r e c h n e r s u n d

46 49

54

des migrierenden Prozesses 53

5.2.4 Prozeßmigration und

nicht ausgelastete Rechner 70

5.3 Die Speicherverwaltung 72

5.3.1 Knoteninterne Speicherverwaltung 73

5.3.2 Systemweite Speicherverwaltung 76

6 Anwendbarkeits- und Implementationsgesichtspunkte 88 6.1 Topologie des Kommunikationsnetzes 83

6.2 Realisierung der Funktion f 95

6.3 Realisierung der Funktionen h und h' 100

7 Zusammenfassung und Ausblick 104

Literaturverzeichnis 107

Anhang: Verzeichnis der Notationen 117

(5)

l

EINLEITUNG

Seit Anfang der 70-er Jahre werden verteilte Systeme (der

Begriff des verteilten Systems wird in Kapitel 2.1 präzisiert) in der Literatur propagiert. Die anfängliche Hoffnung, durch den Einsatz von n Rechnern einen n-fachen Durchsatz des Systems im Vergleich zu einem einzelnen Rechner erzielen zu können, mußte jedoch sehr bald aufgegeben werden. Es war ein sogenann- ter Sättigungseffekt zu beobachten: mit steigender Anzahl der Rechner im System sinkt ab einer bestimmten Grenze der Durch- satz. Gründe für diesen Effekt sind der in einem verteilten System zusätzlich notwendige Verwaltungsaufwand, das zusätz- liche Kommunikationsaufkommen zwischen den Rechnern sowie die ungleichmäßige Verteilung der Last auf die verschiedenen Rech- ner des Systems.

Man suchte daher nach Verfahren, die oben genannte Schwierig- keiten beseitigten oder zumindest milderten. Dazu wurde vor etwa 10 Jahren in der Literatur das Problem der Zuordnung von Prozessen zu den Rechnern eines verteilten Systems erstmals vorgestellt [Stone 1977].

In den ersten Ansätzen zur Lösung dieses Problems wurde die Minimierung der Kommunikation zwischen den Rechnern und der Gesamtausführungskosten der Prozesse im System angestrebt.

Später kamen mit der Weiterentwicklung der anwendbaren analy- tischen Techniken weitere Kriterien, wie zum Beispiel ein Lastausgleich zwischen den Rechnern, sowie sogenannte Rand- bedingungen hinzu. Mittels der Randbedingungen war es möglich, die sich aus den realen Systemen ergebenden Beschränkung~n.

wie zum Beispiel die Größe des verfügbaren Speichers, zu model- lieren.

Die bisher genannten Lösungstechniken haben jedoch den Nachteil, daß das Ausführungsverhalten des Programms

a

priori bekannt

sein muß und daß sich das Ausführungsprofil während der Laufzeit eines Programms nicht ändert. Aufgrund der Erkenntnis, daß das

(6)

Ausführungsprofil eines Programms nicht statisch ist, sondern sich dynamisch ändert, wurden die bekannten Lösungsverfahren so erweitert, daß das sich ändernde Ausführungsprofil eines Programms berücksichtigt werden konnte. Den Nachteil, daß das Ausführungsverhalten von vornherein bekannt sein muß, besitzen jedoch auch diese Lösungen.

Die Statik der Verfahren zur Pr~zeßallokation in verteilten Systemen weist eine gewisse Analogie zur Statik der Speicher- verwaltung in den Einprozessorsystemen der 50-er und 60-er Jahre auf. In den damaligen Systemen mußte der Speicherplatz- bedarf eines Programms

a

priori bekannt sein. Ein Speicherbe- reich entsprechender Größe konnte dann reserviert werden und blieb bis zum Ende der Laufzeit eines Programms belegt. Der große Durchbruch im Bereich der Speicherverwaltung erfolgte, als man erkannte, daß nicht während der gesamten Laufzeit eines Programms der gesamte Adreßraum gleichmäßig benötigt wird, sondern nur die sogenannte Arbeitsmenge (engl. working set) im Hauptspeicher gehalten werden muß. Durch Techniken, die dieses Lokalitätsprinzip der Programme dynamisch unterstüt- zen, wie zum Beispiel Verfahren der Verwaltung von virtuellen Speichern und die Einführung von Speicherhierarchien, konnte die Effizienz der Rechensysteme wesentlich gesteigert werden.

In dieser Arbeit wird nun ein adaptives Verfahren vorgestellt, das die Zuordnung der Prozesse zu den Rechnern eines verteilten Systems dynamisch während der Ausführung in Abhängigkeit vom Ausführungsverhalten realisiert. Durch diese dynamische Verla- gerung (im folgenden mit dem in der Literatu~ üblichen Begriff Migration bezeichnet) der Prozesse ergibt sich die Notwendigkeit, die Speicherverwaltung in verteilten Systemen entsprechend

anzupassen, um nicht bei jeder Migration eines Prozesses den Inhalt des gesamten Adreßraums übertragen zu müssen und so die Kosten für die Migration eines Prozesses gering zu halten.

Nach einer Erläuterung der relevanten Begriffe in Kapitel 2 wird in Kapitel 3 untersucht, welche Entwicklungstendenzen

(7)

auf dem Gebiet der Programmiersprachen, die zur Formulierung konkurrenter Prozesse geeignet sind, beobachtet werden können.

Diese Untersuchung wird durchgeführt, da die Programmierspra- c~en durch das zu entwickelnde Verfahren unterstützt werden sollen.

In Kapitel 4 geben wir eine Obersicht über die Verfahren, die auf dem Gebiet der Prozeßzuordnung in verteilten Systemen bekannt sind.

Im Anschluß an diesen State-of-the-Art-Report wird in Kapitel 5 das neu entwickelte Verfahren zur Prozeß- und.Speicherver- waltung in verteilten Systemen vorgestellt. Ausgehend von der mikroskopischen Betrachtung des Prozeßverhaltens entwickeln wir ein adaptives Verfahren, das die dynamische Zuordnung der Prozesse im verteilten System ermöglicht. Als Entscheidungs- kriterien dienen das Kommunikations- und das Speicherreferenz- verhalten sowie die Auslastung der Rechner des Systems. Wir gehen dabei davon aus, daß die einzelnen Rechner des verteilten Systems autonom in ihren Entscheidungen sind, d. h. vor der Migration eines Prozesses müssen beide beteiligten Rechner dieser Migration zugestimmt haben.

Der wesentliche Vorteil des Verfahrens gegenüber bisher bekann- ten Methoden besteht darin, daß

a

priori keine Informationen über das Verhalten des Prozesses notwendig sind. Alle für das Verfahren notwendigen Daten werden zur Laufzeit des Prozesses gewonnen. Um einen großen Overhead für die Protokollierung des Ausführungsverhaltens zu vermeiden, ist das Verfahren so ausge- legt, daß nur wenige Daten zusätzlich benötigt werden.

Da die Obertragung des Inhalts des gesamten Adreßraums eines Prozesses bei dessen Migration zu aufwendig wäre, wird ein geeignetes Verfahren zur Speicherverwaltung entwickelt mit dem Ziel. die Migration der Prozesse zu unterstützen. Dabei werden die aus dem Bereich der Einprozessorsysteme bekannten Strate- gien und Methoden weiterentwickelt. Durch diese Vorgehensweise

(8)

wird erreicht, daß die Speicherverwaltung in bestehenden Betriebssystemen nur geringfügig zu modifizieren ist und exi- stierende Erkenntnisse übertragen werden können.

Eine beliebige Verteilung der Seiten des Adreßraums eines Prozesses im verteilten System erfordert bei einem Seiten- fehler eines Prozesses gegebenenfalls sehr aufwendige Such- operationen nach der entsprechenden Seite. Um diese zu ver- meiden~ werden die bekannten Staging-Hierarchien verallgemei- nert. Dadurch entfällt der Suchaufwand und es ist nur eine geringe Zusatzinformation notwendig, um die Ve\teilung der Seiten im verteilten System nachzuhalten.

Während wir in Kapitel 5 Verfahren und Konzepte auf hohem Abstraktionsniveau darstellen, erarbeiten wir in Kapitel 6 Vorschläge zur Implementation der neuen Verfahren in verteil- ten Systemen und behandeln die sich dabei ergebenden Probleme und Einschränkungen.

Zum Abschluß werden wir in Kapitel 7 die Ergebnisse dieser Arbeit zusammenfassen und offene Probleme aufzeigen.

(9)

2

BEGRIFFSKLÄRUNG

2.1

VERTEILTE SYSTEME

Eine der ersten Klassifikationen von Rechnertypen stammt von [Flynn 1966]. Er unterscheidet vier Klassen anhand des Daten- und Kontrollflusses:

SISD (ein Instruktions- und ein Datenstrom): In diese Kate- gorie fallen die klassischen von-Neumann-Rechner.

- SIMD (ein Instruktionsstrom und mehrere Datenströme): Zu dieser Art von Rechnern gehören die Vektor-, Feld- und Asso- ziativrechner.

MISD (mehrere Instruktionsstrtime und ein Datenstrom): Während man früher Pipeline-Rechner zu dieser Klasse zählte, setzt sich in letzter Zeit die Auffassung durch, daß diese Klasse als leer anzusehen ist [Baer 1980; Giloi 1978].

- MIMD (mehrere Instruktions- und mehrere Datenströme): Zu

dieser Klasse werden all die Systeme gezählt, in denen mehrere Programme ablaufen, die jeweils verschiedene Daten bearbeiten.

Die Kategorie der MIMD-Rechner wurde von [Fathi und Krieger 1983] ~eiter unterteilt in (bei [Baer 1980] umfaßt die Klasse der MIMD-Rechner nur die eng gekoppelten Systeme):

- eng gekoppelte Systeme: Zu dieser Klasse werden Mehrprozes- sorsysteme gezählt. Das wesentliche Merkmal dieser Rechner ist, daß sich mehrere Prozessoren, die eventuell jeweils über einen privaten Puffer-Speicher (Cache) verfügen, einen gemeinsamen Hauptspeicher teilen (vgl. [Peterson und Silber- schatz 1983, Zima 1980]).

(10)

- eingeschränkt gekoppelte Systeme: Die verteilten Systeme

werden zu dieser Kategorie gezählt. Eine spezielle Teilklasse der verteilten Systeme sind die lokalen Netze (LAN's: Local Area Networks) [Stallings 1984). Ein wichtiges Kriterium der LAN's ist die "Broadcastingw-Eigenschaft: Jeder Rechner des Systems empfängt jede über das Netz übertragene Meldung

[Schindler 1982].

- lose gekoppelte Systeme: In diese Kategorie gehören die Rech- nernetze. Wesentliche Merkmale sind die möglicherweise ver- schiedenen Hardwareschnittstellen (Zahlendarstellungen, In- struktionen, usw.). Jeder Rechner wird autonom von einem Betriebssystem verwaltet und auf verschiedenen Rechnern sind ggf. unterschiedliche Betriebssysteme implementiert.

Die Definition der verteilten Systeme ist in der Literatur nicht einheitlich (vgl. [Enslow 1978; Fathi und Krieger 1983;

Ousterhout 1981, Scherr 1978)). Deshalb werden wir im folgen- den eine Definition der verteilten Systeme angeben, die dieser Arbeit zugrunde liegt:

- Im Gegensatz zu Mehrprozessorsystemen besitzen verteilte Systeme keinen gemeinsamen Speicher. Die Kommunikation und Synchronisation erfolgt ausschließlich über Meldungen zwi- schen den einzelnen Rechnern.1)

Die Rechner besitzen neben dem Prozessor eine eigene Spei- cherhierarchie und eigene Peripherie. Die Speicherhierarchie und die Peripherie der verschiedenen Rechner kann unter- schiedlich sein.

- Auf jedem Prozessor ist Mehrprogrammbetrieb möglich, so daß jeweils mehrere Prozesse quasiparallel bearbeitet werden kön- nen (im Gegensatz zu [Miller 1982] und [Nehmer 1980]).

l)Für das in dieser Arbeit vorgestellte Verfahren ist es ohne Auswirkung, ob die einzelnen Rechner des verteilten Systems Ein- oder Mehrprozessor-

systeme sind.

(11)

- Die Schnittstelle der Firmware zur Software ist bei allen Rechnern identisch, die internen Realisierungen und somit die Leistungen der Rechner können sich jedoch unterscheiden.

Wir betrachten also nur homogene verteilte Systeme. Im folgen- den werden wir das Attribut "homogen" in der Regel fortlassen, sofern ersichtlich ist, daß verteilte Systeme im hier defi- nierten Sinn gemeint sind.

- Das verteilte System wird durch ein einheitliches Betriebs- system verwaltet.

- Das die Rechner verbindende Kommunikationsnetz i s t für den Benutzer transparent. Die Zuordnung der Bezeichner zu den physikalischen Geräten wird vom System verwaltet. Der Benut- zer hat das GefUhl, mit einem einzigen, zentralen Rechner zu arbeiten.

Das System stellt einen Lastverbund dar, d. h. die im System ablaufenden Prozesse können bei Oberlastung einzelner Rechner zu anderen, nur gering ausgelasteten Rechnern, transferiert werden, um dort weiter abzulaufen.

Bei der obigen Charakterisierung verteilter Systeme ist zu beachten, daß einzelne Kriterien auch in eng oder lose gekop- pelten Systemen gelten. Ein verteiltes System liegt nur dann vor, wenn alle Kriterien erfüllt sind.

Nach (Enslow 1978] läßt sich die wichtigste Eigenschaft ver- teilter Systeme als "kooperativ autonom" beschreiben: Alle Kom- ponenten arbeiten nach einem vorgegebenen Plan (gegeben durch ein "High-Level"-Betriebssystem}, die einzelnen Rechner sind in ihrer Arbeitsweise jedoch autonom.

[Lorin 1980] grenzt lose gekoppelte Systeme und verteilte Systeme wie folgt ab: Erfolgt die Kommunikation zwischen den Rechnern des Systems über wegnehmbare Medien, so liegt kein verteiltes System vor.

(12)

Ein weiteres wichtiges Kriterium verteilter Systeme ist die Erweiterbarkeit [Jensen 1978]. Im Gegensatz zu Einprozessor- systemen läßt sich die Leistung verteilter Systeme stufenweise den Bedürfnissen des Benutzers anpassen.

2,2

VERTEILTE BETRIEBSSYSTEME

Das Betriebssystem eines verteilten Systems ist überl icherweise in Schienten aufgebaut [Ousterhout 1981; Ousterhout, Scelza und Sindhu 1980). Von den Moduln der unteren Schichten (dem Betriebssystemkern) befindet sich auf jedem Rechner eine Kopie (sie umfassen im wesentlichen die Verwaltung dieses Rechners sowie die Oberwach~ng und Steue~ung der Kommunikation mit an- deren Rechnern), während die .Moduln der oberen Schichten (Dienstleistungsprogramme u. ä.) je nach Art des verteilten Betriebssystems auch auf jedem Rechner vorhanden oder aber

im System verteilt sind.

Prinzipiell sind zwei Arten von Betriebssystemen für verteilte Systeme zu unterscheiden [Stankovic 1984]:

- Netzwerkbetriebssysteme (Network Operating Systems, NOS):

Zusätzlich zum Kern sind auf jedem Rechner auch alle Moduln der oberen Schichten vorhanden. Jeder Rechner hat also ein eigenes, vollständiges Betriebssystem, das unabhängig von der ~erfügbarkeit der Kommunikationsverbindungen voll funk- tionsfähig ist [Stankovic, Ramamritham und Kohler 1985]. Zu- sätzlich ist auf jedem Rechner Kommunikationssoftware imple- mentiert, mit deren Hilfe die Kommunikation der Rechner untereinander möglich ist.

D1ese Art von Betriebssystemen wird auch als Multi-Image-

Distributed-Operating-System (MI DOS) bezeichnet [Nehmer 1985].

Zu unterscheiden sind NOS's, die auf homogenen und solche, die auf heterogenen Betriebssystemen basieren [Seifert 1985].

(13)

- verteilte Betriebssysteme (Distributed Operating Systems, DOS): Nur der Betriebssystemkern ist auf jedem Rechner voll- ständig vorhanden. der auch die Kommunikation zwischen den Rechnern gewährleistet. Die Moduln der oberen Schichten sind hingegen im System verteilt.

Diese Art von Betriebssystemen wird als Single-Image-Opera- ting-System (S1D0S) bezeichnet [Nehmer 1985).

Hier lassen sich wi.ederum zwei Arten von Systemen unterscheiden [Seifert 1985):

- Klienten/Bediener (Client/Server) - Systeme:

Die Benutzerprogramme (Anwendungen) werden auf einer Klasse von Rechnern (den Klienten) ausgeführt. Die anderen Rechner (die Bediener) sind in Gruppen eingeteilt. Zu jeder Gruppe von Bedienern gehören ein oder mehrere Rechner. Jede Gruppe stellt bestimmte Dienstleistungen zur Verfügung.

- Integrierte Systeme:

Alle Rechner besitzen die gleichen Grundfunktionen (den glei- chen Kern). Die Anwendungen sind im System beliebig repli- ziert oder verteilt. Der Kern stellt in der Regel vereinheit- lichte Zugriffsfunktionen zu den Betriebsmitteln zur Verfü- gung. Die Zuordnung der Betriebsmittel findet nach globalen Strategien statt [Stankovic. Ramamritham und Kohler 1985].

Auch eine Mischform beider Arten ist möglich. In einem derarti- gen System greifen Klienten (z. B. Workstations) auf einen Pool von Bedienern zu. Die Bediener an sich bilden ein integriertes System. d. h. die Dienste können prinzipiell von verschiedenen Bedienern angeboten werden.

Motivation für eine derartige Aufteilung ist, daß die Bediener der Kontrolle eines Systemverwalters unterliegen und sich unter- einander "trauen" können. Da auf den Klienten Anwendungssoft- ware läuft, die ggf. nicht vertrauenswürdig ist, muß zwischen

(14)

den Klienten und den Bedienern eine wohldefinierte Schnitt- stelle existieren, die die Bediener vor böswilligen Klienten schützt.

Diese Philosophie liegt dem BirLiX-System der Gesellschaft für Mathematik und Datenverarbeitung (GMD) zugrunde (H~rtig und Kühnhauser 1985).

2,3

KONKURRENTE PROGRAMME UND PROZESSE

In diesem Abschnitt werden einige Definitionen angegeben, die eine Unterscheidung sequentieller und konkurrenter Programme liefern und die den Prozeßbegriff präzisieren.

Definition 2.2-1: Ein sequentielles Programm spezifiziert eine sequentielle Ausführung einer Liste von Anweisungen.

Der Begrirf des Prozesses ist in der Literaturnichteinheit- lich definiert. [Winkler 1980) listet im 1. Anhang 39 verschie- dene Prozeßdefinitionen auf. Wir geben deshalb im folgenden eine sehr informelle Definition des Prozeßbegriffs:

Definition 2.2-2: Die Ausführung eines sequentiellen Programms wird als Prozeß bezeichnet.

Definition 2.2-3: (vgl. [Stetter 1984)) Prozesse heißen parallel,

wenn sich ihr Ablauf zeitlich überlappt. parallele Prozesse, die miteinander kommunizieren oder zeitlich voneinander ab- hängen, heißen wechselwirkende oder konkurrente Prozesse.

Nicht in Wechselwirkung stehende Prozesse nennen wir disjunkt

Definition 2.2-4: Konkurrente Programme beschreiben parallele, miteinander wechselwirkende Prozesse.

Man beachte, daß die konkurrenten eine Teilmenge der parallelen Prozesse bilden [Giloi 1978].

(15)

3

KONZEPTE KONKURRENTER PROGRAMMIERUNG

Den ersten Ansätzen zur Kommunikation und Synchronisation von konkurrenten Prozessen lag das Konzept des gemeinsamen Sp~ichers zugrunde. Bei der Dekkerschen Lösung und beim Semaphorkonzept [Dijkstra 1968] greifen die beteiligten Prozesse zur Synchro- nisation auf gemeinsame Variablen zu, die zur Absicherung soge- nannter kritischer Bereiche dienen. Ein kritischer Bereich ist ein Abschnitt eines Programms, in dem der entsprechende Prozeß auf Betriebsmittel (Daten oder Geräte) zugreift, auf die nur von einem Prozeß oder einer fest vorgegebenen maximalen Anzahl von Prozessen zu einem Zeitpunkt zugegriffen werden darf.

Da die b~iden oben genannten Konzepte ein relativ unstruktu- riertes Hilfsmittel zur Kommunikation und Synchronisation dar- stellen und die Anwendung leicht zu Fehlern führt, wurde zu Beginn der 70-er Jahre das Monitorkonzept entwickelt [Hoare 1974]. In einem Monitor sind Daten zusammengefaßt, auf die von mehreren konkurrenten Prozessen wechselseitig zugegriffen wird.

Der Zugriff auf diese Daten erfolgt nicht direkt, sondern über sogenannte Zugriffsfunktionen, die sich wechselseitig aus- schließen.

Ein Monitor kann somit als ein Modul (Parnas 1972] aufgefaßt werden. Zu den Programmiersprachen, in denen das Monitorkon- zept realisiert ist, zählt Concurrent Pascal [Brinch Hansen 1975, 1977).

3,1

STAND DER WISSENSCHAFT

Im Bereich der konkurrenten Programmiersprachen sind drei Klas- sen zu unterscheiden [Andrews und Schneider 1983):

- Prozedurorientierte Sprachen: Zu dieser Klasse zählt man alle Sprachen, in denen die Wechselwirkungen zwischen den Prozessen

(16)

auf gemeinsamen Variablen basieren. Der Zugriff auf diese Variablen kann auch über Prozeduren erfolgen, so daß Spra- chen, in denen das Monitorkonzept realisiert ist, zu dieser Klasse gezählt werden. In Concurrent Pascal sind Monitore direkt implementiert, in Modula-2 lassen sich Moduln defi- nieren, die sich wie Monitore verhalten.

- Meldungsorientierte Sprachen: Diese Klasse umfaßt die Spra- chen, in denen die Prozesse explizit über Meldungen kommuni- zieren und mit deren Hilfe gegebenenfalls auch synchronisiert werden können. Im Gegensatz zu den prozedurorientierten Spra- chen besitzen verschiedene Prozesse keine gemeinsamen Vari- ablen. Ein Beispiel für derartige Sprachen ist CSP [Hoare 1978).

Operationsorientierte Sprachen: Sie stellen eine Weiterent- wicklung der meldungsorientierten Sprachen dar. Die Prozesse kommunizieren nicht über explizite Meldungen, sondern durch Aufrufe von Prozeduren im jeweils anderen Prozeß (Remote

Procedure Call (RPC), vgl. [Spector 1982)). Verschiedene Pro- zesse haben keine gemeinsamen Daten. Zu dieser Klasse gehören Sprachen wie Ada, Oistributed Processes [Brinch Hansen 1978]

und SR [Andrews 1981).

Die Mächtigkeit der Sprachen der drei Klassen ist nach [Andrews und Schneider 1983] in etwa als gleich anzusehen. Beim RPC wer- den normalerweise die Parameter als call-by-value übergeben, da der RPC auf einem anderen Rechner ausgeführt wird. In [Eberle und Seifert 1985) wird eine Möglichkeit aufgezeigt, Parameter auch als call-by-name zu übergeben.

Die Unterschiede zwischen den Sprachklassen liegen zum einen auf der Seite der Benutzersicht (Prozeduraufrufe versus Ober- gabe von Meldungen), zum anderen ist zu unterscheiden, ob ge- meinsame Daten verwendet werden oder nicht. Diese Zusammenhänge sind i~ Tabelle 3.1-1 zusammengefaßt.

(17)

Prozedurorien- tierte Sprachen Meldungsorien- tierte Sprachen Operationsorien- tierte Sprachen

Kommunikation über Gemeinsame Daten Prozeduraufrufe

ja ja

nein nein

ja nein

Tabelle 3.1.-1: Vergleich der drei Sprachklassen

Ein wichtiger Aspekt der Kommunikation konkurrenter Prozesse ist, daß bei einer Kommunikation über einen gemeinsamen Speicher die Verantwortung für die Durchführung der Kommunikation beim Pro- grammierer des Anwendungsprogramms liegt, während bei einer Kom- munikation über Meldungen das Betriebssystem diese Verantwortung

übernimmt und dem Anwendungsprogrammierer die Arbeit somit we- sentlich erleichtert wird [Peterson und Silberschatz 1983).

3,2

IMPLEMENTATION KONKURRENTER PROGRAMME IN VERTEILTEN SYSTEMEN Nach der Definition von verteilten Systemen besitzen die ver- schiedenen Rechner des Systems keinen gemeinsamen Speicher. Es ist dah~r sehr aufwendig, auf dieser Hardware ein System zu modellieren, in dem mehrere Prozesse auf gemeinsame Variablen zugreifen. So führen [Rashid und Robertson 1981, S. 73 - 74]

für die Einführung disjunkter Adreßräume der verschiedenen Prozesse unter anderem folgenden Grund an: "lt is very diffi- cult to provide truly transparent networking if processes can potentially have interactions which the system itself cannot detect."

Ein bei der Benutzung gemeinsamer Daten auftretendes Problem ist das der Datenkohärenz. [Censier und Feautrier 1978] defi-

(18)

nieren ein kohärentes Speichersystem als ein System, welches bei einer Leseoperation eines Datums den Wert liefert, der bei der letzten Schreiboperation bezüglich dieses Datums geschrie- ben wurde.

Es ist sehr aufwendig, in einem verteilten System die Daten- kohärenz zu gewährleisten, da auch die Laufzeit der Daten zwi- schen den einzelnen Rechnern des Systems berücksichtigt werden muß. Für verteilte Systeme wurde deshalb vorgeschlagen, daß der Benutzer selbst für Kohärenz der Daten verantwortlich ist

[Popek et al. 1981]. Es ist jedoch zu beachten,, daß die Ober- wachung der Datenkohärenz für den Benutzer einen erheblichen Mehraufwand bedeutet.

Für Mehrprozessorsysteme mit privatem Puffer-Speicher (Cache) wurden verschiedene hardwareunterstützte Lösungsansätze vorge- stellt [Censier und Feautrier 1978; Dubais und Briggs 1982;

Smith 1982], die sich jedoch nicht ohne weiteres auf verteilte Systeme übertragen lassen, da sie entweder den Overhead erhöhen oder die mögliche Parallelität des Systems einschränken [Arvind und Iannucci 1983).

Meldungsorientierte Sprachen lassen sich hingegen sehr effi- zient implementieren, insbesondere, wenn eine hardwaremäßige Unterstützung der Obertragung verfügbar ist [Marovac 1983).

[Spector 1982] beschreibt, wie sich meldungs- und operations- orientierte Sprachen effizient auf verteilten Systemen imple- mentieren lassen.

Nach [Lauer und Needham 1978] sind prozedur- und meldungsorien- tierte Sprachen bezüglich der Kommunikation und Synchronisation gleich ausdrucksstark und Programme der einen Art lassen sich konstruktiv in Programme der jeweils anderen Art überführen. Es ist daher sinnvoll, sich im Bereich der verteilten Systeme auf die Implementierung von meldungsorientierten oder deren Weiter- entwicklung, die operationsorientierten Sprachen, zu beschränken, da in diesen Sprachen keine gemeinsamen Variablen enthalten sind.

(19)

4

ZUORDNUNG VON PROZESSEN ZU PROZESSOREN

Mit dem ersten Auftreten verteilter Systeme suchte man nach Ver- fahren, die Zuordnung der Prozesse zu den Prozessoren zu auto- matisieren. Als wesentliche Rahmenbedingung ist die Forderung von [van Tilborg und Wittie 1984, S. 843] zu beachten: "Such scheduling techniques should require neither operator interven- tion nor detailed knowledge of the hast multicomputer's inter- connection topology".

Für die automatische Prozeßzuordnung werden verschiedene Aspek- te als Motivation angeführt:

Steigerung des Durchsatzes des Gesamtsystems: Durch eine ge- eignete Verteilung der Last im System sollen die Nebenläufig- keit der Prozesse erhöht und Engpässe auf einzelnen Rechnern verhindert werden [Maekava et al. 1979]. Nach [Powell und Miller 1983] verbessert die dynamische Prozeßmigration bei geeigneter Implementation den Durchsatz trotz des hierfür erforderlichen Verwaltungs- und des Kommunikationsoverheads.

Nach [Ma, Lee und Tsuchiya 1982) wird bei einer schlechten Verteilung der Prozesse im System durch Sättigungseffekte, die durch ein großes Kommunikationsaufkommen bedingt sind, der Durchsatz des Gesamtsystems reduziert.

- Verringerung der Kommunikationskosten zwischen den Rechnern [Powell und Miller 1983): Es sollten die Prozesse, die häu- fig miteinander kommunizieren, dem selben RRchner des Systems zugeordnet werden, da so das Kommunikationssystem zwischen den Rechnern, welches nach [Gylys und Edwards 1976] einen Engpaß bildet, geringer belastet wird.

- Rekonfigurierbarkeit des verteilten Systems: Der Benutz~r gibt keine feste Zuordnung der Prozesse zu den Rechnern des Systems an, da sich die Konfiguration des Systems durch die Herausnahme ausgefallener Rechner oder durch die Hinzunahme

(20)

neuer Rechner ändert. Durch die automatische Verteilung wird erreicht, daß die Prozesse genau die zur Verfügung stehende Rechner nutzen.

- Ausfallsicherheit: Sollten einzelne Rechner eines verteilten Systems aufgrund von Defekten nicht mehr verfügbar sein, so können die anderen Rechner, sofern entsprechende Vorkehrun- gen getroffen wurden, trotzdem weiterarbeiten. Die Leistung des Gesamtsystems wird im allgemeinen durch den Ausfall ein- zelner Rechner reduziert.

- Netzwerktransparenz [Walker et al. 1983; Zachmann 1981]:

Aus der Sicht des Benutzers stellt sich das System als ein Ein- prozessorsystem dar. Die Verteilung der Prozesse im System muß somit automatisch vorgenommen werden.

Wir werden im folgenden zwischen statischen und dynamischen Verfahren zur Prozeßzuordnung unterscheiden. Die wesentliche Eigenschaft statischer Verfahren ist, daß ein Prozeß vor Be- ginn seiner Ausführung einem Rechner zugeordnet wird und bis zur Terminierung auf diesem Rechner abläuft. Im Gegensatz dazu kann ein Prozeß bei dynamischen Verfahren während seiner Aus- führung zu verschiedenen Rechnern des verteilten Systems migrie- ren und dort weiter bearbeitet werden.

In [Sta~kovic 1984a] wird der statische Fall als Job- und der dynamische Fall als Prozeß-Scheduling bezeichnet; die Attri- bute statisch und dynamisch charakterisieren die Verfahren jedoch besser.

4,1

STATISCHE VERFAHREN

Alle statischen Verfahren gehen davon aus, daß die Kommunika- tions- und Ausführungskosten

a

priori bekannt sind. Die Zuord- nung der Prozesse wird vor dem Ablauf der Prozesse vorgenommen.

Ein Prozeß bleibt dem jeweiligen Prozessor bis zu seiner Termi- nierung zugeordnet.

(21)

4,1,l

GRAPHENTHEORETISCHE ÄNSÄTZE

Als Ausgangspunkt sind in [Chu et al. 1980] n Prozessoren und m Prozesse (bei [Chu et al. 1980] Moduln genannt) gegeben. Ein Modul ist die kleinste unteilbare Einheit, die auf einem Pro- zessor ausführbar ist. Die Kommunikationskosten zwischen den

Prozessen sind

a

priori bekannt.

Als Ziel der Prozeßzuordnung wird die Minimierung der Kommuni- kations- .und Ausführungskosten genannt. Als Randbedingung for- dern [Chu et al. 1980], daß die Neuzuordnung der Prozesse bei sich ändernden Konfigurationen dynamisch durchführbar sein muß.

Sie sollte für den Benutzer transparent sein.

Der graphentheoretische Ansatz geht von folgenden Voraussetzun- gen aus: Gegeben sind die Ausführungskosten der Prozesse auf den verschiedenen Prozessoren (die Autoren gehen von zwei Pro- zessoren aus) und die Kommunikationskosten zwischen den Prozes- sen. Aufgrund dieser Informationen wird der Graph, dessen Kan- tenbewertung sich aufgrund der Ausführungs- ·bzw. Kommunikations- kosten ergibt, mit Hilfe eines Min-Cut-Algorithmus so parti- tioniert, daß sich in jedem Teil ·des Graphen genau ein Prozes- sor befindet. Alle in einem solchen Teil befindlichen Prozesse werden dem entsprechenden Prozessor zugeordnet.

Wir wollen dieses Verfahren an einem aus [Chu et a 1 . 1980]

übernommenen Beispiel verdeutlichen:

Kommunikationskosten Ausführungskosten

Prozeß A B C D E F Prozeß Prozessor p Prozessor p2

A 6 4 0 0 12 A 5 10

B 8 12 3 0 B 2 00

C 0 11 0 C 4 4

D 5 0 D 6 3

E 0 E 5 2

F F a, 4

(22)

1 (l., /

/ ,,.

/ ,,.

/ ,,. ,,.

/ ,,.

/ ,,.

.. _ -

/ ,,.

- - -

~~

,,.

- - - - - -

- 4

'

- -

'

' '

...

-- --

3

-

'

...

'

2

' '

...

/

...

'

'

' '

'

, 12 ~ ,

' '

' ' ' ' '

' '

-- _4 ' '

- - - '

...

/

- r - ::: :::

=::. .:: ... ~

- p

q_ - - -

--

/

5 / / / /

/ /

/ /

Bild 4.1.1-1: Durch Anwendung des Min-Cut-Algorithmus ent- stehender Graph

Aspekte des Lastausgleichs und Beschränkungen durch die Hard- ware (z. B. die Größe des den einzelnen Prozessoren zur Verfü- gung stehenden Speicherplatzes) werden bei diesem Ansatz nicht berücksichtigt. Es ist prinzipiell sehr schwierig, bei diese~

Ansatz Randbedingungen zu berücksichtigen [Ma, Lee und Tsuchiya 1982]. Auch eine Erweiterung auf mehr als zwei Prozessoren ist nach [Chu et al. 1980] sehr rechenintensiv.

4, l, 2

DARSTELLUNG DURCH MATRIZEN

Um den oben genannten Aspekt der Speicherplatzbeschränkung in realen Systemen zu berücksichtigen, stellen [Chu et al. 1980]

ein weiteres Verfahren vor, in dem die Eingangsgrößen durch mehrere Matrizen dargestellt sind:

Gegeben sind drei Matrizen: In einer Matrix ist das K,mmunika- tionsaufkommen zwischen den Prozessen angegeben, in einer zwei-

(23)

ten die Kommunikationskosten zwischen den Prozessoren und in einer dritten die Ausführungskosten der Prozesse für jeden Prozessor. Mit Hilfe dieser Matrizen wird eine Kostenfunktion definiert, die dann durch Verfahren der ganzzahligen 0-1-Pro- grammierung minimiert wird. (Die ganzzahlige 0-1-Programmie- rung bestimmt eone 0-1-Lösungsmatrix M mit mij=l dann genau, wenn Prozeß i dem Prozessor j zugeordnet wird.)

Durch die Angabe von Randbedingungen lassen sich auch Speicher- platz- und Zeitbegrenzungen berücksichtigen. Es ergibt sich in diesem Fall ein nichtlineares ganzzahliges 0-1-Programmierungs- problem.

Als Nachteile dieses Verfahrens geben [Chu et al. 1980) an, daß es keine Möglichkeit der Darstellung des aktuellen Zustandes für Realzeitanwendungen gibt und daß sich die Präzedenzrela- tion zwischen den Prozessen aufgrund des Datenflusses nicht angeben läßt, so daß zeitliche Interdependenzen nicht dar- stellbar sind.

[Ma, Lee und Tsuchiya 1982) verwenden zur Lösung des 0-1-Pro- grammierproblems einen Branch-and-Bound Algorithmus. Durch die Angabe von Randbedingungen läßt sich der Algorithmus zum Er- reichen verschiedener Zielfunktionen einsetzen (z. B. Lastaus- gleich oder Minimierung des Kommunikationsaufwandes zwischen den Rechnern). Die Laufzeit des Algorithmus wird um so günsti- ger, je mehr Randbedingungen angegeben werden, da durch die Randbedingungen schon in einem relativ frühen. Stadium Teilbäu- me des durch die Branch-and-Bound Methode implizierten Lösungs- baumes eleminiert werden können, deren entsprechende Lösungen den Randbedingungen nicht genügen.

4, l. 3

CosCHEDULI NG IN

M

EDUSA

Medusa [0usterhout et al. 1980] ist ein Betriebssystem für C m , ein

* .

verte~ltes System, dessen Rechner zu Gruppen, den so-

(24)

genannten Clustern, zusammengefaßt sind. Durch die Aufteilung in Gruppen wird bezüglich der Zugriffszeiten zu den Daten quasi eine Hierarchie definiert. Am schnellsten kann auf Datenzuge- griffen werden, die in dem Rechner vorhanden sind, auf dem der Prozeß ausgeführt wird. Der Zugriff auf Daten in einem Rechner der gleichen Gruppe ist langsamer, aber schneller als der Zu- griff auf Daten, die in einem Rechner einer anderen Gruppe gespeichert sind.

Der Benutzer hat die Möglichkeit, die Verteilung der Prozesse und Daten innerhalb des Systems in gewissen Grenzen zu beein- flussen, indem er angibt, ob die Zuordnung zu einem bestimm- ten Rechner, zu einem beliebigen Rechner einer bestimmten Grup- pe oder beliebig im System erfolgen soll.

Grundidee der in [Ousterhout 1981) beschriebenen Prozeßzuord- nung ist es, kommunizierende Prozesse gleichzeitig den ver- schiedenen Rechnern einer Gruppe (falls möglich) zuzuordnen.

Diese Strategie bezeichnet Ousterhout als coscheduling. Die Begründung für diese Strategie ergibt sich aus der Kommunika- tionsarchitektur von cm*, welche eine schnelle Kommunikation zwischen Rechnern erlaubt, die sich in der gleichen Gruppe befinden.

Das Medusa-Betriebssystem verwendet eine Zeitscheibensteuerung für die Prozessorzuteilung. Die Zeitscheiben werden system- weit gleichzeitig zugeteilt (synchrone Zeitscheiben). Aus die- sem Grund ist es wichtig, kommunizierende Prozesse während der gleichen Zeitscheibe den verschiedenen Prozessoren des Systems zuzuordnen, da eine Kommunikation eines Prozesses mit einem nicht zugeteilten Prozeß die Blockierung des entsprechenden Prozesses bewirkt.

Wird der Scheduling-Algorithmus nicht s~rgfältig entworfen, so besteht die Gefahr des Aktivitäts-Thrashing (vergleichbar mit dem Thrashing in Systemen mit einer virtuellen Speicherver- waltung): Damit der Kommunikationspartner eines Prozesses ablau-

(25)

fen kann, wird ggf. einem anderen Kommunikationspartner dieses Prozesses der entsprechende Prozessor entzogen, so daß wiederum nicht alle Kommunikationspartner gleichzeitig aktiv sind.

Da der Aufwand der dynamischen Bestimmung der gleichzeitig zuzuteilenden Prozesse nach [Ousterhout 1981] zu groß ist, sind Verfahren zur statischen Zuordnung an1egeben. Häufig kom- munizierende Prozesse werden hierbei zu sogenannten Task-Forces zusammengefaßt.

Es werden drei Coscheduling-Algorithmen vorgestellt, die davon ausgehen, daß die Koramunikationsstruktur zwischen den Prozessen

a

priori bekannt ist. Bei den Algorithmen sind zwei Phasen zu unterscheiden:

- Allokation: Die Prozesse werden auf die Prozessoren verteilt.

- Scheduling: Aus der Menge der einem Prozessor zugeordneten Prozesse wird ein Prozeß zugeteilt.

Treffen neue Prozesse im System ein, so werden diese zu Task- Forces zusammengefaßt und in einer neuen Allokationsphase auf die Prozessoren des Systems verteilt.

4,1,4 HEURISTISCHE VERFAHREN

In [Arora und Rana 1980] werden zwei heuristische Verfahren zur Zuordnung von Prozessen zu den Prozessoren vorgestellt.

Beide Verfahren basieren auf graphentheoretischen Ansätzen.

Die Gewichtung der Kanten ergibt sich wie folgt:

Repräsentieren die beiden Endknoten einer Kante Prozesse (im folgenden Prozeßknoten genannt), so stellt die Gewichtung die Kommunikationskosten zwischen den beiden Prozessen dar, falls sie nicht demselben Prozessor zugeordnet werden. Repräsentiert ein Knoten einen Prozeß und der andere einen Prozessor (im fol- genden Prozessorknoten genannt), so ergibt sich die Gewichtung

(26)

der Kante im wesentlichen aus der Summe der Ausführungszeiten für diesen Prozeß auf den anderen Prozessoren des Systems (diese Gewichtung bildet somit ein Maß für die Kosten. die entstehen, wenn der Prozeß dem Prozessor nicht zugeordnet wird).

Ziel der Algorithmen ist es nun. den sich mit obiger Kantenbe- wertung ergebenden Graphen so in m (= Anzahl der Prozessoren) Teilmengen zu zerlegen, daß in jeder Teilmenge genau ein Pro- zessorknoten enthalten und die Summe der Bewertungen der durch die Zerlegung durchtrennten Kanten minimal ist.

Der erste Algorithmus geht zur Erreichung dieses Ziels wie folgt vor:

Prozeßknoten werden solange sukzessive zusammengefaßt bzw. den Prozessoren zugeordnet, bis genau m Teilmengen übrig bleiben.

Jede dieser Mengen enthält genau einen Prozessor und die die- sem Prozessor zugeordneten Prozesse.

Bei der Zusammenfassung der Knoten wird ein zufällig ausge- wählter Prozeßknoten mit dem Knoten zusammengefaßt, für den die Kantenbewertung der Kante. die diese beiden Knoten ver- bindet, am größten ist. Nach jeder Zusammenfassung von Kno- ten wird die Kantenbewertung des entstehenden Graphen entspre- chend modifiziert.

Der zweite Algorithmus besteht prinzipiell aus zwei Teilen:

- Finde'eine initiale Prozeßverteilung.

- Versuche iterativ, die im letzten Schritt gefundene Zuord- nung zu verbessern.

Der Algorithmus terminiert, wenn in einem Iterationsschritt keine Verbesserung der Prozeßallokation gefunden werden konnte.

In einem Iterationsschritt wird nacheinander für jeden Prozeß geprüft. ob durch die Zuordnung dieses Prozesses zu einem an- deren Prozessor eine Verringerung der Gesamtkosten erzielt wer- den kann. Die sich dadurch ergebenden Änderungen bezüglich der

(27)

Kommunikationskosten im System bewirken gegebenenfalls eine neue Zuordnung des entsprechenden Prozesses im nächsten Itera- tionsschritt.

Die initiale Zuordnung entsteht dadurch, daß alle Prozesse einem einzigen, hypothetischen Knoten zugeordnet werden, auf dem die Ausführungskosten für alle Prozesse unendlich groß sind. Der oben für einen Iterationsschritt beschriebene Algo- rithmus wird einmal durchgeführt. Nach der Initialisierung ist kein Prozeß mehr dem hypothetischen Prozessor zugeordnet, der nun entfernt wird.

Basierend auf der Partitionierung eines Graphen stellt [Efe 1982) einen zweiphasigen Algorithmus für identische Prozessoren (d. h.

die Ausführungszeit eines Prozesses ist unabhängig vom Prozes- sor, auf dem es ausgeführt wird) vor. Der zugrundeliegende Graph enthält als Knoten die Prozesse und als Kanten die Kom- munikationsverbindungen zwischen den Prozessen. Die Kantenbe- wertung ergibt sich aus dem Kommunikationsvolumen zwischen den jeweiligen Prozessen. Die Knotenbewertung stellt die Ausfüh- rungszeit des jeweiligen Prozesses dar.

Der vorgestellte Algorithmus unterteilt sich in zwei wesent- liche Phasen:

- In der ersten Phase wird der Prozeßgraph in Abhängigkeit von der Anzahl der Prozessoren partitioniert. Ziel der Partitionie- rung ist die Minimierung des Kommunikationsaufkommens zwi-

schen den verschiedenen Teilen des partitionierten Graphen, da die Prozesse je eines Teils des Graphen je einem Prozessor zugeordnet werden.

- Ziel der zweiten Phase ist es, einen Lastausgleich zwischen den Prozessoren herbeizuführen. Aspekte des Lastausgleichs wurden in der ersten Phase nicht berücksichtigt. In dieser Phase des Algorithmus wird versucht, einen oder mehrere Pro- zesse von überlasteten Prozessoren zu nicht ausgelasteten

(28)

Prozessoren u~zulagern. Bei dieser Verlagerung wird jeweils der durch den Lastausgleich erzielte Gewinn in Relation zur Erhöhung der Kommunikation zwischen den Prozessoren gesehen.

Das Ziel des Lastausgleichs ist erreicht, wenn die Last jedes einzelnen Prozessors nur um einen vorgegebenen Betrag von der durchschnittlichen Last aller Rechner im System abweicht.

[Efe 1982) geht zwar von identischen Prozessoren aus; er stellt jedoch eine Erweiterung des Algorithmus vor, in der gewisse Prozesse nur bestimmten Prozessoren oder einer bestimmten Teil- menge von Prozessoren zugeordnet werden können.

Die Rechenzeit eines Zuteilungsalgorithmus läßt sich reduzie- ren, wenn man von folgenden Annahmen ausgeht:

- Die Prozessoren sind homogen und vollständig verbunden.

- Effekte einer Präzedenzrelation zwischen den Prozessen kön- nen vernachlässigt werden.

In diesem Fall liefert ein heuristischer auf der ganzzahligen 0-1-Programmierung basierender Algorithmus von [Gylys und Ed- wards 1976) gute Ergebnisse. Dabei werden Prozesse, zwischen denen ein hohes Kommunikationsaufkommen herrscht, unter Berück- sichtigung von Speicherplatz- und Zeitbeschränkungen auf einem Prozessor zusammengefaßt._

4,1,5

BERÜCKSICHTIGUNG DER ZEITDAUER EINER KOMMUNIKATION In den bisher beschriebenen Verfahren wurde jeweils implizit davon ausgegangen, daß die Kommunikation von Prozessen, die sich auf verschiedenen Rechnern befinden, zwar mit gewissen

Kosten verbunden ist, aber ohne Zeitverzögerung vonstatten gehen kann. Williams stellt in [Williams 1983) einen Ansatz vor, der diese Zeitverzögerungen berücksichtigt. Zielfunktion ist, die Ausführungszeit eines aus mehreren Prozessen bestehenden Auf- trags zu minimieren. Dabei ergeben sich in Abhängigkeit von der mit einer Kommunikation verbundenen Verzögerung verschiedene optimale Zuordnungen der Prozesse zu den Prozessoren.

(29)

Eckpunkte dieser Untersuchung sind, daß, wenn die Verzögerun- gen gegen Null gehen, eine gleichmäßige Verteilung der Last im verteilten System das optimale Ergebnis liefert; gehen hinge- gen die Zeitverzögerungen gegen unendlich, so liefert die Zu- ordnung aller Prozesse zu einem Prozessor die besten Ergebnis- se. In einem Beispiel zeigt Williams auf, daß es zwischen die- sen Extremen - in Abhängigkeit von den Verzögerungen bei der Kommunikation - optimale Lösungen gibt, in denen nur einem Teil der Prozessoren Prozesse zugeordnet werden, anderen hingegen keine.

4,2

DYNAMISCHE VERFAHREN

Für die im Abschnitt 4.1 vorgestellten statischen Verfahren lassen sich folgende Nachteile nennen:

- Die Zuordnung der Prozesse zu den Prozessoren ist statisch.

- Der Prozeß wird als unteilbare Einheit betrachtet.

Die dynamischen Verfahren beseitigen diese Nachteile. Sie gehen davon aus, daß bei einem sich ändernden Kommunikationsprofil und bei einer Aufteilung der Prozesse in kleinere Einheiten eine dynamische Migration der Prozesse zwischen den Prozesso- ren vorteilhaft sein kann.

4,2,1

GRAPHENTHEORETISCHE ÄNSÄTZE

In [Stone und Bokhari 1978] und [Bokhari 1979] wird ein Verfah- ren vorgestellt, welches eine Erweitung der in Abschnitt 4.1 beschriebenen graphentheoretischen Verfahren darstellt und die Zuordnung von Prozessen zu zwei Prozessoren zum Ziel hat.

Als Erweiterung gehen [Stone und Bokhari 1978] davon aus, daß sich das Kommunikationsverhalten eines Prozesses im Verlauf der Ausführung ändert. Während bestimmter Abschnitte der Ausführung,

(30)

die in [Stone und Bokhari 1978] Phasen heißen, wird es jedoch als konstant angenommen. Für die Dauer einer Phase wird der Pro- zeß einem Prozessor fest zugeordnet. Der Prozeß kann mit jedem anderen Prozeß kommunizieren. Die Migration eines Prozesses ist nur zwischen zwei Phasen möglich.

Gegeben sind folgende Daten:

Ausführungskosten des Prozesses in einer jeweiligen Phase für die verschiedenen Prozessoren.

- Kosten für die Abspeicherung der inaktiven Prozesse auf den verschiedenen Prozessoren bzw. den entsprechenden Speichern.

- Die Kosten der Kommunikation zwischen aktiven Prozessen, die sich nicht auf dem gleichen Prozessor befinden.

- Der Kosten der Neuzuordnung der einzelnen Prozesse bei Pha- senübergängen.

Aufgrund dieser Informationen erhält man einen gewichteten

Graphen, in dem die Teilphasen der Prozesse und die Prozessoren die Knoten und die oben genannten Kosten die Kantenbewertungen bilden. Anhand dieses Graphen ergibt sich die Zuordnung der Pro- zesse in de~ verschiedenen Phasen durch die Anwendung des Min- Cut-Algorithmus.

Nur für maximal drei Prozessoren sind effiziente Lösungsverfah- ren bekannt, eine Erweiterung auf vier und mehr Prozessoren wird sehr ineffizient. [Stone und Bokhari 1978] zeigen jedoch, daß in diesen Fällen bei der Beschränkung auf baumartige Kom- munikationsstrukturen effiziente Lösungen möglich sind.

4.2,2

IN

EPOS

IMPLEMENTIERTES VERFAHREN

Der in [Maekawa et al. 1979] vorgestellte Algorithmus wurde für das Betriebssystem EPOS (Experimental Polyprocessor System) ent- wickelt. Die Prozessoren dieses Mehrprozessorsystems können durch Änderungen der Firmware an verschiedene Anforderungsklassen (z.

B. Ausführung von Pascal- oder APL-Programmen) angepaßt werden.

(31)

Jeder Benutzerprozeß in EPOS hat eine fest vorgegebene Priori- tät (1 bis 8, die höchste Priorität ist 1). Einern Prozeß mit der Priorität p wird (9-p)/8 der Prozessorzeit zugeteilt. Tritt ein neuer Prozeß in das System ein und ist kein Prozessor frei

(ist ein Prozessor frei, so wird dieser durch ein entsprechen- des Mikroprogramm an die spezifische Anwendung angepaßt und der Prozeß wird diesem Prozessor zugeordnet), so wird für jeden Prozessor j die Auslastung Lj berechnet:

L j = " ' ) _ _ _ _ _ _ _ _ _ _ _ _ _ _

'k: k ist Prozessor j zugeordnet

Ist die Summe über alle Auslastungen Lj größer als die Anzahl der zur Verfügung stehenden Prozessoren, so wird die Priorität eines jeden Prozessen erniedrigt (und somit sein Anteil an der Prozessorzeit) und der neue Prozeß dem Prozessor mit der gering- sten Auslastung zugeordnet. Dabei werden Prozesse der gleichen Anwendungsklasse zusammengefaßt, um dann einen Prozessor per

Firmware für diese Klasse zu spezialisieren.

Die Autoren von EPOS gehen davon aus, daß jeder Prozessor mei- stens nur einen Prozeß zu bedienen hat, da das oben beschrie- bene Verfahren sonst zu einer großen Anzahl von Prozeßwechseln führt.

Eine Umverteilung laufender Prozesse kann aus zwei Gründen ge- fordert werden:

- Dynamische Anpassung an sich ändernde Lasten.

- Freigabe einzelner Prozessoren bei auftretenden Fehlern.

Der Algorithmus, nach dem die Auswahl des neuen Prozessors für einen Prozeß erfolgt, ist nicht beschrieben. Es ist jedoch zu ver~uten, daß die Zuordnung nach den Kriterien des Lastaus- gleichs wie beim Eintreffen eines neuen Prozesses behandelt wird.

(32)

4,3

DISKUSSION DER VERFAHREN

Im folgenden werden wir die wesentlichen Charakteristika der in 4.1 und 4.2 vorgestellten statischen und dynamischen Ver- fahren darstellen und diskutieren.

a) Bei allen Verfahren, die das Ziel der Minimierung der Kom- munikationskosten zwischen den Rechnern haben, muß das Kom- munikationsaufkommen zwischen den Prozessen ä priori be-

kannt sein. Wird dieses als bekannt vorausgesetzt, so ,geht man implizit davon aus, daß

- aufgrund von Messungen oder Schätzungen das Kommunika- tionsaufkommen bestimmt werden kann

und

- daß das Kommunikationsaufkommen zwischen den Prozessen unabhängig ist vom aktuellen Ablauf der Prozesse, d. h.

man setzt voraus, daß das Kommunikationsverhalten der Prozesse bei verschiedenen Abläufen gleich ist.

Diese Prämissen sind in realen Systemen selten erfüllt (v~l.

[Stakovic und Sidhu 1984]).

b) Wie schon bei den Kommunikationskosten wird auch bezüglich der Ausführungskosten davon ausgegangen, daß diese ä priori bekannt sind (sofern die Minimierung der Ausführungskosten ein Ziel des entsprechenden Verfahrens ist). Die Ausführungs- kosten für einen Prozeß sind dann in Abhängigkeit vom Pro- zessor angegeben, auf dem er ausgeführt wird. Diesem Ansatz liegen folgende Annahmen zugrunde:

- Die Ausführungskosten eines Prozesses sind unabhängig vom aktuellen Ablauf, bzw. die Varianz der Ausführungskosten ist nur sehr gering.

(33)

- Die Ausführungskosten sind für jeden Prozeß aufgrund von Messungen oder Schätzungen bekannt.

- Die Hardware der die Prozesse ausführenden Rechner ist bezüglich ihres Leistungsverhaltens heterogen, sie kann jedoch homogen sein bezüglich ihrer Funktionalität (ist ein bestimmter Prozeß auf einem Rechner nicht ausführbar, so werden die entsprechenden Ausführungskosten gleich un- endlich gesetzt).

Die ersten beiden Annahmen sind nur in einer sehr einge- schränkten Anzahl der real auftretenden Fälle der Prozeßzu- ordnung gegeben (z. B. bei der Steuerung von Industrierobo- tern in Fertigungsstraßen sind die Ausführungskosten in der Regel bekannt [Hoppe 1984]). Die dritte Annahme setzt voraus, daß es sich bei den Rechnern, die die Prozesse ausführen, um aus einer Rechnerfamilie stammende Maschinen handelt.

Derartige Rechnerfamilien sind heute von vielen Herstellern erhält1.ich (z. B. die /370 - Architektur von IBM und die VAX-11 - Architektur von Digital Equipment).

c) Als Randbedingungen berücksichtigen einige Verfahren den

$peicherplatzbedarf der Prozesse sowie die Speicherkapa- zitäten der einzelnen Rechner. Im Rahmen einer möglichst realitätsnahen Modellbildung ist es notwendig, den Aspekt Speicherplatz zu berücksichtigen. Nun ist es jedoch in den heute üblichen virtuellen Speichersystemen nur bedingt mög- lich, den Hauptspeicherbedarf eines Prozesses ä priori fest- zulegen, da dieser vom Laufzeitverhalten äes Prozesses ab- hängig ist. Auch durch die Verwendung dynamischer Daten- strukturen wird die Angabe des Speicherplatzbedarfs er- schwert.

d) Einige Verfahren, die zur Optimierung in homogenen Systemen herangezogen werden, berücksichtigen auch den Aspekt des

Lastausgleichs. Dieser Punkt ist sehr wichtig, da ein über- lasteter Rechner dazu führen kann, daß die Leistung des Ge-

(34)

samtsystems deutlich herabgesetzt wird. So können auf bel ie- bigen Prozessoren ausgeführte Prozesse durch die Kommunika- tion mit den auf einem überlasteten Prozessor befindlichen Prozessen in ihrem Ausführungsverhalten entscheidend beein- flußt werden. Ein bezüglich der Kriterien "Minimierung der Kommunikationskosten zwischen den Prozessoren" und "Minimie- rung der Ausführungskosten für jeden Prozeß" optimiertes System kann durch Vernachlässigung des Faktors Lastausgleich ein extrem schlechtes Antwortzeit- und Durchsatzverhalten zeigen.

e) Ein weiterer Gesichtspunkt, der von einigen dynamischen Ver- fahren berücksichtigt wird, ist das sich dynamisch ändernde Ausführungs- und Kommunikationsverhalten der Prozesse. Aus- gangspunkt ist die Annahme, daß die Prozesse nicht gleich- mäßig miteinander kommunizieren, sondern ein gewisses Pha- senverhalten zeigen und in verschiedenen Phasen mit verschie- denen Prozessen kommunizieren.

Zusammenfassend läßt sich feststellen, daß viele statische und dynamische Verfahren von irrealen Annahmen ausgehen (z. B. daß die Kommunikations- und Ausführungskosten ä priori bekannt sind). Dynamische Verfahren berücksichtigen zwar, daß sich das Kommunikations- und Ausführungsverhalten dynamisch ändert, aber auch sie gehen von der Prämisse aus, daß das Verhalten

ä priori bekannt ist.

(35)

5

EIN ADAPTIVES VERFAHREN ZUR PROZESS- UND SPEICHERVERWALTUNG IN VERTEILTEN SYSTEMEN

Die wesentlichen Nachteile der in Kapitel 4 vorgestellten sta- tischen und dynamischen Verfahren zur Prozeßzuordnung in ver- teilten Systemen sind:

- Das Ausführungsverhalten der ~rozesse muß

a

priori bekannt sein (Kommunikationsaufkommen zwischen den Prozessen, Aus- führungskosten und ggf. Speicherplatzbedarf der Prozesse}.

- Die angewandten Verfahren sind in der Regel sehr rechenin- tensiv.

Um diese Nachteile zu beseitigen, stellen wir im folgenden ein neues Verfahren zur Prozeßverwaltung und eine dadurch implizierte Speicherverwaltung in verteilten Systemen vor.

Der Ansatz unterscheidet sich wesentlich von bisher bekannten statischen und dynamischen Verfahren dadurch, daß das Ausfüh- rungsverhalten der Prozesse adaptiv berücksichtigt wird. Im Gegensatz zu bisher bekannten Verfahren ist bei diesem adap- tiven Ansatz

a

priori keine Information über das Ausführungs- verhalten eines Prozesses erforderlich.

Zunächst wollen wir untersuchen, welche Umstände die Migration eines Prozesses sinnvoll erscheinen lassen. Durch die Migra- tion des Prozesses wird zusätzlicher Overhead impliziert, und zwar sowohl bezüglich des Verwaltungsaufwandes als auch be- züglich des Kommunikationsaufkommens zwischen den einzelnen Rechnern des verteilten Systems. Folgende Vorteile sollen sich jedoch durch die Migration von Prozessen ergeben:

- Verringerung des Kommunikationsaufkommens zwischen den Rech- nern: Werden durch die Migration kommunizierende Prozesse auf einem Rechner des Systems zusammengeführt, so wird der Kom- munikationsumfang zwischen den Rechnern verringert. Diese

(36)

Verringerung der Inter-Rechner-Kommunikation wird in der Regel die durch die Migration eines Prozesses implizierte Erhöhung des Kommunikationsaufkommens mehr als ausgleichen [Powell und Miller 1983).

- Steigerung des Durchsatzes durch einen Lastausgleich: Wie in [Denning 1978) beschrieben, ergibt sich der Durchsatz eines Einprozessorsystems als funktion des Grades der Mehr- programmverarbeitung, d. h. der Anzahl der Prozesse im System.

Der Zusammenhang ist in Bild 5-1 skizziert.

Durchsatz

Anzahl

~---....:...---PProzesse Bild 5-1: Zusammenhang zwischen der Anzahl der Prozesse

in einem Einprozessorsystem und dem Durchsatz Nachdem der Durchsatz des Systems zunächst mit steigender Anzahl der Prozesse erhöht wird, gerät das System ab einem bestimmten Punkt in den Bereich der Sättigung, d. h. der Durchsatz erhöht sich nicht weiter. Steigt die Anzahl der Prozesse im System weiter, so kommt es zu einer Oberlastung des Systems (Thrashing) und der Durchsatz wird vermindert.

In einem verteilten System kann der Grad der Mehrprogramm- verarbeitung einiger Rechner so hoch sein, daß der Effekt des Thrashing einsetzt, während andere Rechner weit unterhalb des optimalen Grades der Mehrprogrammverarbeitung arbeiten. Es ist also aus Gründen des Lastausgleichs sinnvoll, eine Pro- zeßmigration vorzunehmen.

Verfolgt man nur die Verringerung des Kommunikationsaufkommens als Ziel, so kann man z. B. eine Zerlegung der Menge aller Pro- zesse derart bestimmen, daß die Prozesse einer Teilmenge mit- einander kommunizieren (direkt oder indirekt) und Prozesse ver- schiedener Teilmengen nicht miteinander kommunizieren. Diese

(37)

Teilmengen werden den zur Verfügung stehenden Rechnernzuge- ordnet.

Dieses Verfahren hat jedoch den Nachteil, daß die verschiede- nen Rechner des Systems sehr unterschi•dlich ausgelastet wer- den.

Will man nun einen Lastausgleich erreichen, so weist man bei- spielsweise allen Rechnern eine in etwa gleichgroße Last zu, ohne das Kommunikationsaufkommen zwischen den Prozessen zu berücksichtigen. Bei dieser Vorgehensweise kann das Kommuni- kationssystem zu einem Engpaß werden.

Da sich sowohl die Kommunikation zwischen den Prozessen [Stotts 1982) als auch die Auslastung der einzelnen Rechner zeitlich ändert, ist es sinnvoll, die dynamische Migration von Prozes- sen zu unterstützen. Im Rahmen der Migrationsentscheidung wird adaptiv das aktuelle AusfUhrungsverhalten des Prozesses be- rücksichtigt.

Um ein solches Verfahren der dynamischen Prozeßmigration effi- zient realisieren zu können, ist es notwendig, eine neue Spei- cherverwaltung für verteilte Systeme zu entwickeln. Bisher wurde in Arbeiten, die sich mit der Implementierung von Pro- zessen in homogenen verteilten Systemen beschäftigen, entweder von einer statischen Zuordnung der Prozesse zu den Prozessoren ausgegangen [Liskov und Scheifler 1983; Marovac 1983; Nehmer et al. 1980; Ousterhout 1981; Spector 1982) oder bei der Migra- tion eines Prozesses wird der Inhalt des gesamten Adreßraums

übertragen [Powell und Miller 1983), um so gegebenenfalls.auf den Rechnern des Systems von Einprozessorsystemen bekannte Konzepte zur Verwaltung virtueller Speicher unverändert zu übernehmen.

Da die Obertragung des gesamten Adreßraums bei einer Migration zu aufwendig ist, muß eine Speicherverwaltung entworfen werden, die jedem Prozeß auf dem Rechner, auf dem er sich momentan be- findet, den Inhalt des aktuell benötigten Teils des Adreßraums zur Verfügung stellt.

(38)

Eine Speicherverwaltung mit diesen Eigenschaften ist eine ~irek- te Weiterentwicklung des in Einprozessorsystemen bekannten Prin- zips des virtuellen Speichers. Ziel der Verfahren zur Verwaltung virtueller Speicher in Einprozessorsystemen ist, zu jedem Zeit- punkt genau die Information, die vom Prozeß referiert wird, auf der höchsten Stufe einer Speicherhierarchie (die dem Pro- zessor, der den Prozeß ausführt, am nächsten ist) zur Verfügung zu stellen. In verteilten Systemen ergibt sich ein Problem

durch einen zusätzlichen Freiheitsgrad. Es ist nicht erfor- derlich, die Information zum Prozeß zu transferieren, gegebe- nenfalls kann der Prozeß auf einen anderen Prozessor migrieren (vgl. [Philipson 1984]). Dieser Fall tritt ein, wenn die benötig- te Information auf einem anderen Rechner als auf dem den Prozeß ausführenden Rechner vorhanden ist und aufgrund noch zu formu- lierender Regeln nicht die Obertragung der Information zum Prozeß, sondern die Migration des Prozesses empfohlen wird.

Während die Verringerung der Kommunikation zwischen den Rech- nern und der Lastausgleich Primärziele sind, ist die system- weite (d. h. der Transfer von Seiten des Adreßraums eines Pro- zesses zwischen den Rechnern) Speicherverwaltung ein sich aus der Migration der Prozesse ergebendes Problem, dessen Lösung das Erreichen der Primärziele erst ermöglicht.

In den folgenden Ausführungen betrachten wir drei, sich wech- selseitig beeinflussende Größen:

Kommunikation

zwischen den Rechnern Lastausgleich

Speicherverwaltung

(39)

5.1

PRÄMISSEN

5,1,l

HARDWARE

Um im folgenden eine genaue Spezifikation der Verfahren zur Prozeß- und Speicherverwaltung angeben zu können, werden wir in diesem Abschnitt präzisieren, wie ein verteiltes System aufgebaut ist.

Definition 5.1.1-1: Ein {Rechner-)Knoten K; besteht aus einem Prozessor und einer Speicherhierarchie Hi, die wiederum aus einer Menge von Hierarchiestufen {M0 .,i' ... , Mu.,i}

1 1

(zur Numerierung s. u.) zusammengesetzt ist. Jede Hiera- chiestufe Mki ist aufgeteilt in Seitenrahmen. Die Seiten- rahmen verschiedener Stufen einer Hierarchie können ver- schiedene Größen haben.

Im folgenden bezeichne

H

die Menge aller Speicherhierar- chien.

Die oberste Stufe einer Speicherhierarchie Hi' die dem Prozessor am nächsten ist, bezeichnen wir mit M . , die

0 i , l

unterste Stufe mit M .. Dabei gilt bezüglich der Nume-

u i , 1

rierung einer Stufe Mki:

k < 0 <==> die Stufe befindet sich oberhalb1) der Kom- munikationsverbindung

k > 0 <==> die Stufe befindet sich unterhalb1l der Kom- munikationsverbindung

1) Die Bedeutung der Begriffe "oberhalb" und "unterhalb" in diesem Zusam- menhang wird im Abschnitt 5.3.2 im Rahmen der systemweiten Speicherver- waltung erläutert.

Referenzen

ÄHNLICHE DOKUMENTE

Ein Disput zwischen Alice und Bob soll durch einen elektronischen M¨ unzwurf entschieden werden.. Kann Bob keinen Faktor

- z.B.: Schlüsselserver generiert DES-keys - diese werden sicher und authentisch mit einem Public- key-Verfahren an zwei Kommu- nikationspartner übertragen -

- Wie beweist man, dass One-Time Pads garantiert sicher sind. - Wie knackt man One-Time Pads bei endlichem,

the algorithm is optimal in terms of the number of messages...&#34;. - Anordnung der Prozesse

Mehr dazu (und weitere Verfahren) siehe: Luk, Wong, &#34;Two New Quorum Based Algorithms for Distributed Mutual Exclusion&#34;,

Um die Terminologie ’Gleichgewichtsverteilung’ besser zu begründen, zeigen wir das folgende Lemma, von dem folgt dass wenn die Verteilung einer Markov- kette mit endlichem

Bemerkung: Ist der Zustandsraum S endlich, dann sind wegen Satz 19 alle Zust¨ ande, die in einer minimalen Teilmenge enthalten sind, positiv rekurrent.. Alle Zust¨ ande, die in

• Textinformationen Das World Wide Web enthält eine rapide wachsende Anzahl von Seiten und damit verbunden Daten und