JavaParty

Werbung
Universität Karlsruhe (TH)
Forschungsuniversität · gegründet 1825
Rechnerbündel
(Cluster Computing)
Wintersemester 2005/06
Prof. Dr. Walter F. Tichy
Thomas Moschny
Inhalt
• JavaParty: „Javas Begleiter für verteiltes
Rechnen“
• Java-Konzepte für parallele und
verteilte parallele Systeme
• Ziele und Funktionsweise von JavaParty
• Schneller entfernter Methodenaufruf KaRMI
• Schnelle Objektserialisierung uka.transport
• Transparente maschinenüberspannende Kontrollfäden
• Replizierte, verteilte Objekte
• JavaParty Anwendungen
• Die ursprüngliche Version dieses Foliensatzes stammt von Bernhard Haumacher.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
2
Wissenschaftliches Rechnen
mit Java
Ja
va
• klares, objektorientiertes Konzept
G
• Sprachdesign
• automatische Speicherbereinigung
•
•
•
•
•
ra
nd
e.
or
g
Portabilität: Java Virtuelle Maschine
reicher Fundus an Bibliotheken
Basis -Infrastruktur für verteiltes Rechnen
breite Akzeptanz
Java wird gelehrt und gelernt
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
3
DSM Systeme
• DSM „gaukelt“ transparent für die Anwendung
einen gemeinsamen Speicher vor.
Applikation
Betriebssystem
der beteiligten
Rechenknoten
DSM Abstraktion
P
P
P
P
M
M
M
M
Netzwerk
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
4
Java DSM Systeme
• z.B. Java/DSM (auf TreadMarks)
Java Anwendung
Java virtuelle Maschine
Betriebssystem
der beteiligten
Rechenknoten
DSM Abstraktion
P
P
P
P
M
M
M
M
Netzwerk
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
5
Java DSM Systeme
• Von DSM geerbte Probleme
• Deckungsproblem der Speicherkonsistenz des DSM
mit den Speicherkonsistenz-Anforderungen der
virtuellen Maschine
• Anpassungen an die Java VM notwendig?
• False Sharing
• Java Objekte sind nicht deckungsgleich mit Speicherseiten
• „Viele kleine“ Objekte in Java verschärfen das Problem
• Ausweg: Objektbasiertes DSM (Objekte statt Seiten),
aber:
• Standard Java VM nicht mehr einsetzbar
• nicht mehr plattformunabhängig
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
6
JavaParty Ansatz
• Keine besondere Anforderung an das
Betriebsystem
• einzige Voraussetzung: Java VM verfügbar
• Basiert auf Standard Java VM („pure Java“)
• Sprache JavaParty ist eine reine QuellcodeTransformation JavaParty → Java.
• Das Laufzeitsystem ist in Java implementiert.
• Spiegelt dem Anwendungsprogramm eine
verteilte Virtuelle Maschine vor
• Entfernte Objekte werden transparent in der
Umgebung verteilt.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
7
JavaParty Ansatz
• JavaParty erzeugt die Illusion einer verteilten
Java VM.
Verteilte JavaParty
Laufzeitumgebung
JavaParty Applikation
VM
VM
VM
VM
P
P
P
P
M
M
M
M
Standard Java VM
pro Knoten
Netzwerk
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
8
Java für parallele Systeme
• Java ist gut geeignet für parallele
Programmierung bei gemeinsamem Speicher
(SMP Modell)
• Parallele Kontrollfäden sind in die Sprache integriert
• java.lang.Thread
• Synchronisationsmechanismen als Sprachprimitive
• synchronisierte Methoden “synchronized void foo()”
• synchronisierte Blöcke “synchronized (obj) { ... }”
• Inter -Thread - Kommunikation
• java.lang.Object: wait() & notify()
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
9
Java für verteilte parallele
Systeme
• Keine Sprachunterstützung, aber Bibliotheken:
• Alternative 1: Socketbibliothek (java.net)
☹Keine entfernten Objektreferenzen
• Nur Kommunikationsendpunkte
☹Keine Methodenaufrufe an entfernt liegende Objekte
• Kommunikation über Botschaften
• Implementierung eines eigenen Kommunikationsprotokolls
☹Keine automatische Speicherbereinigung
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
10
Java für verteilte parallele
Systeme
• Alternative 2: Entfernter Methodenaufruf java.rmi.*
☺Entfernte Referenzen auf Objekte
☺Kein eigenes Kommunikationsprotokoll notwendig
☺Verteilte automatische Speicherbereinigung
☹Explizite Namensbindung (registry)
☹Kein entfernter Zugriff auf Instanzvariablen, statische Methoden
und statische Variablen
☹Deklaration zusätzlicher Ausnahmebedingungen
☹Explizite Objektplazierung durch lokale Erzeugung
☹Keine Ortstransparenz
☹Keine Objektmigration
→nur geeignet für Client-Server-Programmierung
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
11
JavaParty
• Vorteile:
☺Keine explizite Namensbindung
☺Entfernter Zugriff auf die gesamte Klasse möglich
☺Keine zusätzlichen Ausnahmebedingungen
☺Entfernte Objekterzeugung, Platzierungsstrategien
☺Ortstransparenz
☺Objektmigration
☺Übernimmt Javas Thread -Konzept
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
12
JavaParty
• JavaParty =
• Verallgemeinert Javas Programmiermodell für eine
potentiell verteilte virtuelle Maschine.
• Verteilt transparent Java-Objekte und Threads.
• Vorteile:
• Verbirgt Architekturdetails der Hardware-Plattform
(SMP, DMP, Cluster, Cluster aus SMP).
• Erleichtert Umstieg zu DMPs oder heterogenen
Systemen.
• Benutzt Javas (RMIs) entfernten Methodenaufruf.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
13
Abläufe beim entfernten
Methodenaufruf
VM1 VM2
Klient
x=
RMI
ss. foo(a, b)
Stu
b
Stellvertreter
Stellvertreter ss
entfernte
Referenz
Dienstgeber
Dienstgeber
Dienstgeber
Objekt
Objekt
foo(a, b)
Verpacken / Auspacken
von Parametern
foo() ~ Methode Nr. 3
Ske
leto
n
Skelett
Skelett kk
generiert
Referenzverwaltung
Transportschicht
Netzwerk
Netzwerk
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
14
RMI: Applikationsanpassungen
• Ausgangscode
class
class OverdrawnException
OverdrawnException extends
extends Exception
Exception {}
{}
public
public class
class BankAccount
BankAccount {{
public
public static
static int
int blz;
blz;
public
public int
int acountNumber;
acountNumber;
public
public void
void deposit(float
deposit(float amount)
amount)
{{ ...
}
... }
public
public void
void withdraw(float
withdraw(float amount)
amount) throws
throws OverdrawnException
OverdrawnException
{{ ...
... }}
public
public float
float balance()
balance()
{{ ...
}
... }
}}
BankAccount
BankAccount bb == new
new BankAccount(
BankAccount( ...
... );
);
b.deposit(100);
b.deposit(100);
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
15
RMI: Applikationsanpassungen
• Deklaration der entfernt aufrufbaren Schnittstelle
import
import java.rmi.Remote;
java.rmi.Remote;
import
import java.rmi.RemoteException;
java.rmi.RemoteException;
public
public interface
interface BankAccountIntf
BankAccountIntf extends
extends Remote
Remote {{
/**
/** Zugriffsmethode
Zugriffsmethode für
für blz
blz */
*/
public
public int
int getBLZ()
getBLZ() throws
throws RemoteException;
RemoteException;
/**
/** Zugriffsmethode
Zugriffsmethode für
für acountNumber
acountNumber */
*/
public
public int
int getAccountNumber()
getAccountNumber() throws
throws RemoteException;
RemoteException;
public
public void
void deposit(float
deposit(float amount)
amount) throws
throws RemoteException;
RemoteException;
public
void
withdraw(float
amount)
public void withdraw(float amount)
throws
throws OverdrawnException,
OverdrawnException, RemoteException;
RemoteException;
public
public float
float balance()
balance() throws
throws RemoteException;
RemoteException;
}}
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
16
RMI: Applikationsanpassungen
• Änderung der Implementierungsklasse
import
import java.rmi.RemoteException;
java.rmi.RemoteException;
import
import java.rmi.server.UnicastRemoteObject;
java.rmi.server.UnicastRemoteObject;
public
public class
class BankAccount
BankAccount extends
extends UnicastRemoteObject
UnicastRemoteObject
implements
implements BankAccountIntf
BankAccountIntf
{{
public
public int
int getBLZ()
getBLZ() {return
{return blz;
blz; }}
public
public int
int getAccountNumber()
getAccountNumber() {return
{return accountNumber;
accountNumber; }}
public
public void
void deposit(float
deposit(float amount)
amount) throws
throws RemoteException
RemoteException
{{ ...
... }}
public
public void
void withdraw(float
withdraw(float amount)
amount)
throws
throws RemoteException,
RemoteException, OverdrawnException
OverdrawnException
{{ ...
... }}
public
public float
float balance()
balance() throws
throws RemoteException
RemoteException
{{ ...}
...}
}}
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
17
RMI: Applikationsanpassungen
server-side
String
String url
url == "rmi://myserver.nowhere.com/account";
"rmi://myserver.nowhere.com/account";
try
try {{
BankAccount
BankAccount bb == new
new BankAccount(
BankAccount( ...
... );
);
java.rmi.Naming.bind(url,
b);
java.rmi.Naming.bind(url, b);
}}
catch
catch (RemoteException
(RemoteException r)
r) {{ ...}
...}
catch
catch (java.net.MalformedURLException
(java.net.MalformedURLException m)
m) {{ ...
... }}
catch
catch (java.rmi.AlreadyBoundException
(java.rmi.AlreadyBoundException a)
a) {{ ...
... }}
client-side
• Anpassungen bei Erzeugung und Benutzung
try
try {{
BankAccount
BankAccount bb == (BankAccount)
(BankAccount)
java.rmi.Naming.lookup(url);
java.rmi.Naming.lookup(url);
b.deposit(100);
b.deposit(100);
}}
catch
catch (RemoteException
(RemoteException ex)
ex) {{ ...
... }}
catch
catch (NotBoundException
(NotBoundException ex)
ex) {{ ...
... }}
catch
catch (MalformedURLException
(MalformedURLException ex)
ex) {{ ...
... }}
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
18
Dasselbe Beispiel mit JavaParty
class
class OverdrawnException
OverdrawnException extends
extends Exception
Exception {}
{}
public
public remote
remote class
class BankAccount
BankAccount {{
public
public static
static int
int blz;
blz;
public
public int
int acountNumber;
acountNumber;
public
public void
void deposit(float
deposit(float amount)
amount)
{{ ...
... }}
public
public void
void withdraw(float
withdraw(float amount)
amount) throws
throws OverdrawnException
OverdrawnException
{{ ...
... }}
public
public float
float balance()
balance()
{{ ...
... }}
}}
BankAccount
BankAccount bb == new
new BankAccount(
BankAccount( ...
... );
);
b.deposit(100);
b.deposit(100);
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
19
Dasselbe Beispiel mit JavaParty
• Änderungsvolumen:
• hier: nur 2%
• dagegen 75% bei RMI-oder bei Socket-Version.
• Es wird eine Quellcode-Transformation
vorgenommen.
• Diese Arbeit kann ein mechanischer Übersetzer
machen.
• Rückführung auf RMI und pures Java
• Das transformierte Programm ist genauso portabel wie
die ursprüngliche Anwendung.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
20
Die JavaParty Transformation
JavaParty Code
JavaParty Übersetzer:
Transformation
Java + RMI
RMI Stub Generator
Std. Java-Übersetzer
Portabler ByteCode
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
21
JavaParty: Transparente
entfernte Objekte
Eine (entfernte) Klasse R besteht aus
Instanz -Methoden
statischen Methoden
Konstruktoren
public int foo(int x) {}
static int bar(int x) {}
public R() {}
r.foo(42);
R.bar(42)
new R()
„entfernte Klasse“
„KonstruktorObjekte“
I
M
R
(
✓)
Instanz -Variablen
statischen Variablen
int a;
static int b;
r.a = 13;
R.b = 13;
„generierte get- und set-Methoden“
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
22
JavaParty: Bestandteile der
Transformation
• Instanzenanteil…
• wird transformiert in Instanzenobjekt.
• repräsentiert ein entferntes Objekt.
• enthält dessen
• Instanzenvariablen,
• nicht-statische Methoden.
• ist entfernt zugreifbar über RMI
• über eine generierte entfernte Schnittstelle.
• Zusätzlich werden set()- und get()- Methoden für die
Instanzvariablen generiert.
• Die RMI-Ausnahmebedingungen werden intern behandelt.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
23
JavaParty: Bestandteile der
Transformation
• Statischer Anteil…
• wird transformiert in Klassenobjekt.
• repräsentiert die entfernte Klasse,
• enthält also deren
• statische Variablen,
• statische Methoden.
• existiert genau einmal in der verteilten Umgebung,
• entspricht der Semantik einer Java-Klasse, ausgedehnt auf die
verteilte Umgebung
• ist entfernt zugreifbar über RMI
• über eine generierte entfernte Schnittstelle.
• Zusätzlich werden set()- und get()- Methoden für die statischen
Variablen generiert.
• Die RMI-Ausnahmebedingungen werden intern behandelt.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
24
JavaParty: Bestandteile der
Transformation
• Konstruktoren…
• werden transformiert in Konstruktorobjekte.
• erlauben entferntes Anlegen von Objekten.
• Pro Knoten und entfernter Klasse existiert genau ein
Konstruktorobjekt.
• ist entfernt zugreifbar über RMI
• über eine generierte entfernte Schnittstelle.
• Pro Konstruktor der Klasse wird eine Fabrikmethode
generiert.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
25
Zugriff auf ein entferntes Objekt
in JavaParty
Stellvertreter (JavaParty -Handle): uniformer Zugriff auf entfernte Klasse + Migration
JP
Handle für R mit Signatur der Originalklasse
foo(...)
new R(...)
static bar(...)
RMI
RMI Stub
RMI Stub
entfernter
JP
RMI Stub
Methodenaufruf
RMI Skeleton
RMI Skeleton
RMI Skeleton
Instanz
Implementierung
Klassen
Implementierung
Konstruktor
Objekt
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
26
Objektmigration in JavaParty
Handle für R
RMI Stub
RMI Skeleton
Instanz
Implementierung
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
RMI Stub
VM1
VM2
migrate
+redirect
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
RMI Skeleton
Instanz
Implementierung
27
Klassendiagramm nach der
JavaParty Transformation
remote class T { ... }
remote class R extends T { ... }
RemoteObject
RemoteObject
java
java.rmi.Remote
.rmi.Remote
java.rmi.server.UnicastRemoteObject
java.rmi.server.UnicastRemoteObject
extends
implements
TT_instance_intf
_instance_intf
TT
T_class_intf
T_class_intf
R
R_instance_intf
_instance_intf
R
R
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
T_class_impl
T_class_impl
R_instance_impl
R_instance_impl
R_class_intf
R_class_intf
JP Fassade
T_instance_impl
T_instance_impl
R_class_impl
R_class_impl
RMI Implementierung
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
28
Das Laufzeitsystem
• Die JavaParty-Transformation benutzt
• Methodenfernaufruf (RMI)
• Objektserialisierung (Marshalling)
• Problem: Methodenaufrufe mit Objektargumenten über
Ethernet dauern Millisekunden.
• RMI ist nicht „cluster-tauglich“
• Fokus von RMI liegt auf WAN-/Internet-Applikationen
• mit anonymen Klienten,
• instabilen Netzwerken,
• unterstützt nur Ethernet.
• Fokus der Objektserialisierung:
• persistente Speicherung,
• Objektversendung zu anonymen Klienten.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
29
Das Laufzeitsystem
• Javas Objektserialisierung…
• ist extrem benutzerfreundlich:
• Der Programmierer muss im wesentlichen nur "extends
Serializable" hinzufügen.
• Die Objektserialisierung benutzt dafür dynamische TypIntrospektion.
• ist zur persistenten Objektspeicherung geeignet,
• speichert ausführliche Typinformation.
• Nicht für Netzwerkübertragung optimiert:
• keine optimierter Zugriff auf Sende- und Empfangspuffer
• keine Wiederverwendung von übertragener Typinformation in
Folgeaufrufen
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
30
Effiziente Objektserialisierung
uka.transport
450
t
400
sp
ar
350
300
ge
250
150
100
95
%
200
Exemplarisch: Zeit für
einen einfachen entfernten
Methodenaufruf in µs.
Ohne Typintrospektion
Schlanke Typ-Codierung
Direkter Pufferzugriff
50
Ohne Typ-Wiederholung
0
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
31
Effizienter entfernter
Methodenaufruf: KaRMI
• KaRMI ist ein Ersatz für RMI, der speziell auf den Einsatz in
Rechnerbündeln hin ausgelegt ist.
• Benutzt die effiziente Objektserialisierung uka.transport.
• uka.transport bietet außerdem eine steckbare Transportschicht mit
Adaptern für
• Ethernet
• Myrinet / GM
• Myrinet / ParaStation
• KaRMI implementiert einen schnellen transparenter lokaler
Methodenaufruf an entfernten Objekten.
• …also an solchen, die zwar semantisch entfernt, aber physikalisch lokal
sind, d.h. sich in derselben virtuellen Maschine befinden.
• KaRMI integriert die RMI Stellvertreter (Stubs) und die JavaParty
Stellvertreter (Handles) in eine Klasse.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
32
Transparente maschinenüberspannende Kontrollfäden (1)
• Während eines Fernaufrufs wechselt der Kontrollfluss auf
einen anderen Knoten.
• Problem: Java Threads sind an ihre virtuelle Maschine gebunden.
• RMI: Simulation durch mehrere lokale Kontrollfäden
VM 1
VM 2
Objekt a Objekt b
Objekt c
t1
t1 ≠ t3
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Client
Server
Server
Client
t2
t3
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
33
Transparente maschinenüberspannende Kontrollfäden (2)
• Problem: t1 und t3 haben keine Beziehung
• Sperren, die t1 besitzt, können von t3 nicht betreten werden
• KaRMI-Lösung: Verwende einen eindeutigen
Stellvertreter t1 für den maschinenüberspannenden
Kontrollfaden auf VM 1.
VM 1
VM 2
Objekt a Objekt b
Objekt c
t1
Client
Server
Server
Client
t2
t1
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
34
Replizierte Objekte (1)
• Entfernte Objekte…
• sind auf bestimmten Knoten angelegt.
• Sie können migriert werden, aber das ist eine teure Operation.
• werden an ihrem aktuellen Aufenthaltsort benutzt.
• verursachen Fernzugriffe bei ihrer Verwendung.
• Lokale (Java-) Objekte…
• sind auf den Knoten beschränkt, auf dem sie angelegt wurden.
• sind nur lokal, dafür aber schnell und direkt zugreifbar.
• werden bei Übergabe in entferntem Methodenaufruf kopiert.
• Neu: Transparent replizierte Objekte…
•
•
•
•
sind auf allen Knoten lokal (als Kopie) verfügbar.
werden lokal angesprochen.
gibt es pro Knoten genau einmal.
werden über Synchronisation konsistent gehalten.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
35
Replizierte Objekte (2)
• Deklaration mittels neuem Schlüsselwort "replicated".
• Es wird immer eine ganze Klasse (d.h. als repliziert
gekennzeichnet).
• Anlegen eines replizierten Objektes: "new P"
• liefert "echte" Java-Referenz auf das lokale Replikat
• kein Proxy-Objekt,
• kein Umschreiben von Variablenzugriffen in get()/set()-Methoden.
• Implizit werden Replikate auf allen (anderen) Knoten angelegt.
• in Fernaufrufen werden allerdings die Referenzen durch die
Referenz im Zielknoten ersetzt.
• Synchronisation: Neue Schlüsselwörter "shared",
"exclusive" und "collective".
• Neue/erweiterte Semantik für die Synchronisation
replizierter Objekte.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
36
Replizierte Objekte (3)
• Warum benötigt man neue/erweiterte Semantik
für die Synchronisation?
• (Standard-)Java-Synchronisation ist immer exklusiv.
Für Replikation nicht sinnvoll, denn:
• Replikation eingeführt insbesondere für verteilten Lesezugriff.
• Wenn immer nur ein Zugriff erlaubt wäre, ginge mögliche
Parallelität verloren.
• Wenn vor jedem Zugriff alle anderen Replikate gesperrt
werden müssten, wäre der Zugriff nicht mehr lokal.
• Javas Synchronisationsprimitive unterstützen kein
Protokoll, das viele Leser, aber höchstens einen
Schreiber zulässt.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
37
Replizierte Objekte (4)
• Neue Synchronisationsmodi für repl. Objekte:
• Paralleler, verteilt lokaler Lesezugriff
• viele Leser über eine "geteilte" Sperre
• verwende shared synchronized(p) überall
• Exklusiver lokaler Schreibzugriff
•
•
•
•
ein Schreiber über eine "exklusive" Sperre
anschließende Zustandsfortschreibung aller Replikate
verwende shared synchronized(p) sonst
verwende exclusive synchronized(p) beim Schreiber
• Kollektive Modifikation
• viele Schreiber auf nicht überlappenden Teilen des Replikates
• anschließende Zustandsfortschreibung aller Replikate
• verwende collective synchronized(p) überall
• Modi dürfen nicht gemischt werden!
• Hier nur grober Überblick, weitere Details wichtig: z.B. Signale.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
38
JavaParty Anwendungen
• Partnerprojekt am IPD Gruppe Lockemann:
• Paralleles DataMining auf Rechnerbündeln in JavaParty
• SQL- und DataMining-Anfragen mit visueller Anfrageoberfläche
• Parallelisierung:
• Kontrollparallelität: Operatoren
• Datenparallelität: Tabellenzerteilung (Partitionierung)
• Kooperation mit dem Impact Projekt
• Fragestellung: Wie kann allgemein ein datenparalleler
Algorithmus (SPMD) formuliert werden, der auf einem verteilten
Objektgraphen operiert?
• Website: http://impact.sourceforge.net: Explicit Time Integration
General Purpose Finite Element Program
• In neueren Versionen von JavaParty Unterstützung für replizierte
Objekte (siehe vorne).
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
39
JavaParty: Zusammenfassung
• JavaParty bietet
• Javas Programmiermodell verallgemeinert für eine potentiell
verteilte virtuelle Maschine
• Beherrschung des verteilter Adressraumes durch transparente
entfernte Objekte
• entfernte maschinenüberspannende Kontrollfäden nutzen
Rechenleistung
• optimiertes Kommunikationssystem durch
•
•
•
•
effiziente Objektserialisierung
schnellen entfernten Methodenaufruf
schnellen entfernten Methodenaufruf für lokale Objekte
Ausnutzung von schnellen Netzwerktechnologieen
• Replikation bietet Ansätze für datenparallele JavaParty-
Programme.
Universität Karlsruhe (TH)
Forschungsuniversität
·
gegründet 1825
Vorlesung Rechnerbündel · W. F. Tichy, Th. Moschny
40
Herunterladen