Entspannte Nebenläufigkeit 12.03.2014 Andi Scharfstein, Ben Romberg Entwicklertag 2012.

Slides:



Advertisements
Ähnliche Präsentationen
Ubuntu Enterprise Cloud (UEC) Thorben Lindhauer,
Advertisements

der Universität Oldenburg
Objektorientierte Programmierung
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
Folien 2-5, 7-8 © Prof. Dr. Manfred Rössle (FH Aalen)
Das „Vorgehensmodell“
Ich habe nie gelernt, Aufgaben zu lösen
Bastian Cramer, Universität Paderborn Entwurfsmuster für Webanwendungen Projektgruppe: Generierung von Webanwendungen aus visuellen Spezifikationen.
Objektrelationales Mapping mit JPA Working with Persistent Objects Jonas Bandi Simon Martinelli.
Kapitel 6.1 Nebenläufigkeit und wechselseitiger Ausschluss
Kapitel 7.2 Dining philosophers problem
Kapitel 10 Nebenläufigkeit und wechselseitiger Ausschluss
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Test Summary: m ein Fehler pro Tag m Test First m Funktionstests.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
Einführung MySQL mit PHP
ausdrucksschwächeres
Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University Test Summary: m ein Fehler pro Tag m Test First m Funktionstests.
Can you think of some KEY phrases which would be useful in multiple contexts? Take 2 minutes with a partner and come up with as many as you can!
Chat System – Gruppe B Tim Braun, Andre Ester, Florian Müller und
Entwicklung verteilter eingebetteter Systeme - Einführung
© VMware Inc. Alle Rechte vorbehalten. My VMware Einfacheres Management von Produktlizenzen und Support Neueinführung 2012.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 4 Folie 2 Message Passing mittels Sockets (1) s.a.
Don`t make me think! A Common Sense Approach to Web Usability
PLAYER & HUB Die neue Technik-Generation für Veranstalter und Vertrieb
Clustered Neuronal Network A C#.NET project for Compute Cluster Server 2003.
Clustered Neuronal Network A C#.NET project for Compute Cluster Server 2003.
GWDG – Kurs Parallelrechner-Programmierung mit MPI MPI Punkt-zu-Punkt-Kommunikation Oswald Haan
Kapitel - Thema letzte Aktualisierung © Accor Hospitaliy Germany Notizen BLANKO 0 X – XXXXXXX XXXXXXXXXXXXXXXXXXX Anmerkung XXXXXXXX.
Unified Modeling Language Repetition / Einführung zu UML
PSI - Überblick und Szenarien
SQL Server 2005 CLR-Integration
Aichinger Christian, Strasser Jürgen. Inhalt JSF EJB Praxis - Integration.
Parallel Matrix Multiplication
Eine Präsentation von Peter Rasser
3.4 CPU-Chips und Busse CPU-Chips
Ein Vortrag von Simon Bayer
ICPC – was ist das eigentlich?
Wissen praktisch ablegen
Learning By Doing Parallelverarbeitung Multithreading (Nebenläufigkeit) Alte Idee der Parallelverarbeitung statt rein sequentieller Prozesse Parallelverarbeitung.
Rechnersysteme: Halbzeit Marcel Waldvogel. Marcel Waldvogel, IBM Zurich Research Laboratory, Universität Konstanz, , 2 Daten und Information.
Systemsoftware und Betriebssysteme
Interprozess- kommunikation (IPC)
Parallelisierung für Multiprozessor-Maschinen
Im Restaurant Zeus war ich eines Abends mit Freunden zum Essen. I was in the restaurant Zeus one evening with friends to eat. Wir haben uns unterhalten.
Proseminar: Technologien des Internets
2. Kommunikation und Synchronisation von Prozessen 2
Parallele Programmierung im.NET Framework Darmstadt, Präsentation am Beispiel von C-Sharp (C#)  Wichtige Grundlagen  Generika, Delegate, Lambda,
Paradigmen der Programmierung Nebenläufigkeit
HADOOP – a Brief overview
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie II (Teil I): Simulation und 3D Programmierung Prof.
2 Datenabstraktion Geheimnisprinzip:
Parallel Programming Semaphores / Reader - Writer - Lock
Rusch Philipp, Spiegel Philipp, Sieber Michael, Ucar Sahin, Wetzel Markus.
October 12 th -16 th. German I – Warm-Ups Monday – No School Tuesday - Conjugate the Verb: wohnen Wednesday – No Warm-Up Thursday – Name three pieces.
Multiprocessing mit OpenMPI Marius Albath. Vorlesung Betriebssysteme, Was ist OpenMPI Was ist OpenMPI OpenMPI Standard Setup OpenMPI Standard.
© 2012 TravelTainment Einführung in Enterprise JavaBeans Seminarvortrag von Ralf Penners Folie 1 von 34.
© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:
WebServices Vortrag zur Diplomarbeit WebServices Analyse und Einsatz von Thomas Graf FH Regensburg
Thema: Umwelt: Was könnte man tun, um der Umwelt zu helfen?
Telling Time in German Deutsch 1 Part 1.
Virtualisierung von Web-Applikationen mit Docker
E-Commerce ist unsere Leidenschaft
Conjugation of Regular Verbs in the Present Tense
The Conversational Past
The Conversational Past
Test Summary: ein Fehler pro Tag Test First
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
 Präsentation transkript:

Entspannte Nebenläufigkeit Andi Scharfstein, Ben Romberg Entwicklertag 2012

Quelle: Air Force Weather Agency

Quelle: Air Force Weather Agency

Blackout USA ( ) Ursache: Race Condition We test exhaustively, we test with third parties, and we had in excess of three million online operational hours in which nothing had ever exorcised that bug. I'm not sure that more testing would have revealed that. Mike Unum, GE Energy

Das Versprechen Nie wieder Race Conditions!

Zur Erinnerung: Race Condition a = 1 Thread 1 a = a + 1

Zur Erinnerung: Race Condition a = 2 Thread 1

Zur Erinnerung: Race Condition a = 1 Thread 1 a = a + 1 Thread 2 a = a + 1

Zur Erinnerung: Race Condition a = 3? a = 2? Thread 1 Thread 2

Zur Erinnerung: Race Condition a = 3? a = 2? Thread 1 Thread 2 Problem: Zugriff auf globale Ressourcen!

Eine Alternative Und wenn wir nur mit lokalen Ressourcen arbeiten?

Nebenläufigkeit: Aktoren-Sicht Aktor 1Aktor 2 Nachrichtenaustausch Lokale Ressourcen Ressourcen in Nachricht

Aktoren-Paradigma Datenfluss findet ausschließlich in wohldefinierten, gekapselten Einheiten statt

Was bringt mir das? Race Conditions ThreadsAktoren

Aktorentheorie Erstmals durch Carl Hewitt (1973) Motivation: Hunderte von vernetzten Maschinen effizient parallelisieren Weiterentwicklung u.a. durch Gul Agha (1986)

Was ist ein Aktor? Name (Adresse)

Was ist ein Aktor? Verhalten (Code) Name (Adresse)

Was ist ein Aktor? Verhalten (Code) Zustand (Daten) Name (Adresse)

Was ist ein Aktor? Verhalten (Code) Zustand (Daten) Mailbox / Message Queue Name (Adresse)

Was kann ein Aktor? Nachrichten verschicken

Was kann ein Aktor? Nachrichten verschicken 2.Eigenen Zustand/Verhalten ändern

Was kann ein Aktor? Nachrichten verschicken 2.Eigenen Zustand/Verhalten ändern 3.Neue Aktoren erstellen

In welcher Welt leben Aktoren? Alle Aktoren laufen immer parallel zueinander

In welcher Welt leben Aktoren? Alle Aktoren laufen immer parallel zueinander Die Aktoren-Theorie macht keine Aussage über Nachrichtenverhalten

In welcher Welt leben Aktoren? Alle Aktoren laufen immer parallel zueinander Die Aktoren-Theorie macht keine Aussage über Nachrichtenverhalten Nachrichten dürfen Reihenfolge tauschen oder sogar komplett verloren gehen

Zeit für ein Beispiel MainActor

Zeit für ein Beispiel MainActorSoccerActor int home = 0; int guest = 0;

Zeit für ein Beispiel MainActorSoccerActor GoalForHome GoalForGuest GameOver int home = 0; int guest = 0;

Akka Aktoren-Framework, unterstützt Scala und Java Gründer: Jonas Bonér (Typesafe) Bereits im Einsatz bei Amazon, AutoDesk, Credit Suisse, vmware

Demo

Akka – Aktoren Performance Reaktives Modell (eventbasiert) Thread Pool mit eigenem Scheduler für leichtgewichtige Aktoren-Threads Sehr gute Performance (Zahl von Aktoren im Millionenbereich, 50 Mio. Nachrichten / sec.)

ask() statt tell() Ebenfalls asynchron, aber mit Rückgabewert Rückgabewert ist eine Future Futures können –synchron (blockierend) abgefragt werden –mit internen Datenstrukturen weiterverarbeitet werden –einen Callback aufrufen

Scaling Dank Location Transparency können Aktoren beliebig verteilt werden (Remoting) Umverteilung im lokalen Hauptspeicher Andere Kerne der gleichen Maschine (scaling up) Andere Maschinen im gleichen Netz (scaling out)

Monitoring Aktoren haben immer einen Supervisor Sie formen untereinander eine Baumhierarchie Fehler werden eskaliert und an der richtigen Stelle gefangen Riskante Operationen werden in eigenem Aktor isoliert (error kernel pattern)

Aktoren – Dos and Donts Kommunikation zwischen Aktoren sollte ausschließlich über Nachrichten stattfinden Nachrichten sollten nur aus Immutable Objects bestehen Nie wieder Race Conditions

Komplexeres Beispiel: Crawler für Wikipedia-API Sehr einfach zu realisieren und äußerst performant Thread-Pool mit z.B. 10 Threads Crawler Artikel-ID Artikel-Details startet Kategorie-IDKategorie-Details startet DB Cache (Batch Insert) startet

Fazit I'm not sure that more testing would have revealed that. Mike Unum, GE Energy

Fazit I'm not sure that more testing would have revealed that. Mike Unum, GE Energy Besser umdenken anstatt more of the same

…dann klappts auch mit dem Strom

Quellen Rajesh K. Karmani, Gul Agha: Actors (2011) Philipp Haller, Frank Sommers: Actors in Scala (2012) Akka Dokumentation ( 2012) Ben Romberg: Intopedia: Personalisierte Beitragsempfehlungen für die Wikipedia (2010)

Zur Erinnerung: Deadlock Gleichzeitiger Zugriff auf globale Ressourcen

Threads vs. Aktoren Race Conditions Deadlocks Threads + LocksActors