gul agha university of illinois at urbana-champaign · university of illinois at urbana-champaign...

48
Leveraging Actor Frameworks for the Cloud Gul Agha University of Illinois at Urbana-Champaign Gul Agha Leveraging Actor Frameworks for the Cloud 1 / 41

Upload: vunhu

Post on 15-Jun-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Leveraging Actor Frameworks for the Cloud

Gul AghaUniversity of Illinois at Urbana-Champaign

Gul Agha Leveraging Actor Frameworks for the Cloud 1 / 41

Page 2: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Introduction

Introduction

The actor model is a natural fit for programming cloud-based systems

outgoing messages

incoming messages

Gul Agha Leveraging Actor Frameworks for the Cloud 2 / 41

Page 3: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Introduction

Actor Model of Computation

Actors are autonomous agents which respond to messages

Actors operate asynchronously, potentially in parallel with each other

Each actor has a unique name (address) which cannot be guessed

Actor names may be communicated

Actors interact by sending messages, which are by defaultasynchronous (and may be delivered out-of-order)

Gul Agha Leveraging Actor Frameworks for the Cloud 3 / 41

Page 4: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Introduction

Actor Behavior

Upon receipt of a message, an actor may:

create a new actor with a unique name (address)

use message contents to perform some computation and change state

send a message to another actor

Gul Agha Leveraging Actor Frameworks for the Cloud 4 / 41

Page 5: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Introduction

Constructing Actor Languages and Frameworks

Add to a sequential language:

actor creation (local or remote): create(node, class, params)

message sending: send(actor, method, params)

ready (to process the next message)

Other typical constructs:

request-reply messages

local synchronization constraints (e.g., message pattern matching)

Gul Agha Leveraging Actor Frameworks for the Cloud 5 / 41

Page 6: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Languages and Frameworks

A Proliferation of Actor Implementations and Applications

Erlang (Ericsson): web services, telecom, Cloud Computing

E-on-Lisp, E-on-Java: P2P systems

SALSA, SALSA Lite (UIUC/RPI): multicore, Cloud Computing

Charm++ (UIUC): scientific computing

Ptolemy (UCB): real-time systems

ActorNet (UIUC): sensor networks

ActorFoundry (UIUC): multicore, Cloud Computing

Akka/Scala (EPFL/Typesafe): multicore, web services, banking, ...

Kilim (Cambridge): multicore and network programming

Orleans (Microsoft): multicore programming, Cloud Computing

DART (Google): Cloud Computing

Retlang/Jetlang: multicore programming, Cloud Computing

Gul Agha Leveraging Actor Frameworks for the Cloud 6 / 41

Page 7: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Languages and Frameworks

Actors: Scalable Concurrency

Large-scale concurrent systems such as Twitter, LinkedIn, Facebook Chatare written in actor languages and frameworks.

Facebook

“[T]he actor model has worked really well for us, and wewouldn’t have been able to pull that off in C++ or Java. Severalof us are big fans of Python and I personally like Haskell for a lotof tasks, but the bottom line is that, while those languages aregreat general purpose languages, none of them were designedwith the actor model at heart.” –Facebook Engineering ∗

∗https://www.facebook.com/notes/facebook-engineering/chat-stability-and-scalability/51412338919

Gul Agha Leveraging Actor Frameworks for the Cloud 7 / 41

Page 8: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Languages and Frameworks Actors

Actors: Scalable Concurrency II

Large-scale concurrent systems such as Twitter, LinkedIn, Facebook Chatare written in actor languages and frameworks.

Twitter

“When people read about Scala, it’s almost always in thecontext of concurrency. Concurrency can be solved by a goodprogrammer in many languages, but it’s a tough problem tosolve. Scala has an Actor library that is commonly used to solveconcurrency problems, and it makes that problem a lot easier tosolve.” – Alex Payne, “How and Why Twitter Uses Scala”†

†http://blog.redfin.com/devblog/2010/05/how_and_why_twitter_uses_scala.html

Gul Agha Leveraging Actor Frameworks for the Cloud 8 / 41

Page 9: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Core Actor Semantic Properties

1 State encapsulation: no direct access to state of other actors

2 Safe messaging: messages have call-by-value semantics

3 Fair scheduling: messages are eventually delivered unless recipient ispermanently disabled

4 Location transparency: sender need not concern itself with actuallocation of message recipient

5 Mobility: actors can move across network nodes

Gul Agha Leveraging Actor Frameworks for the Cloud 9 / 41

Page 10: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Core Actor Semantic Properties

1 State encapsulation: no direct access to state of other actors

2 Safe messaging: messages have call-by-value semantics

3 Fair scheduling: messages are eventually delivered unless recipient ispermanently disabled

4 Location transparency: sender need not concern itself with actuallocation of message recipient

5 Mobility: actors can move across network nodes

Gul Agha Leveraging Actor Frameworks for the Cloud 9 / 41

Page 11: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Core Actor Semantic Properties

1 State encapsulation: no direct access to state of other actors

2 Safe messaging: messages have call-by-value semantics

3 Fair scheduling: messages are eventually delivered unless recipient ispermanently disabled

4 Location transparency: sender need not concern itself with actuallocation of message recipient

5 Mobility: actors can move across network nodes

Gul Agha Leveraging Actor Frameworks for the Cloud 9 / 41

Page 12: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Core Actor Semantic Properties

1 State encapsulation: no direct access to state of other actors

2 Safe messaging: messages have call-by-value semantics

3 Fair scheduling: messages are eventually delivered unless recipient ispermanently disabled

4 Location transparency: sender need not concern itself with actuallocation of message recipient

5 Mobility: actors can move across network nodes

Gul Agha Leveraging Actor Frameworks for the Cloud 9 / 41

Page 13: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Core Actor Semantic Properties

1 State encapsulation: no direct access to state of other actors

2 Safe messaging: messages have call-by-value semantics

3 Fair scheduling: messages are eventually delivered unless recipient ispermanently disabled

4 Location transparency: sender need not concern itself with actuallocation of message recipient

5 Mobility: actors can move across network nodes

Gul Agha Leveraging Actor Frameworks for the Cloud 9 / 41

Page 14: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Actor Semantics vs. Actor Implementations

Semantics does not prescribe mapping actors to objects or threads

Many frameworks do not enforce encapsulation and lack mobility

Some frameworks lack fairness and location transparency

Programmers must adapt to each framework’s design choices

Workarounds: type systems, middleware, testing, ...

thread

methods

fields

mail queue

thread

methods

fields

mail queue

references?

immutable data?

Gul Agha Leveraging Actor Frameworks for the Cloud 10 / 41

Page 15: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Properties of Some Actor Implementations‡

SALSA Akka Kilim AF Jetlang Erlang

State encapsulation X X X X X XSafe messaging X X X X X XFair scheduling X X X X X X

Location transparency X X X X X XMobility X X X X X X

‡Karmani et al. Actor Frameworks for the JVM Platform: A Comparative Analysis. PPPJ’09Gul Agha Leveraging Actor Frameworks for the Cloud 11 / 41

Page 16: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Properties of Some Actor Implementations∗

Implementation Actor mapping

SALSA JVM threads

Akka JVM threads or light-weight tasks

Kilim continuations

ActorFoundry continuations

Jetlang light-weight tasks

Erlang light-weight tasks

∗Karmani et al. Actor Frameworks for the JVM Platform: A Comparative Analysis. PPPJ’09Gul Agha Leveraging Actor Frameworks for the Cloud 12 / 41

Page 17: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Fairness and Performance∗

Overhead of Fairness for (a) Threadring (b) Chameneos-redux (c) Naıve Fibonacci

∗Karmani et al. Actor Frameworks for the JVM Platform: A Comparative Analysis. PPPJ’09Gul Agha Leveraging Actor Frameworks for the Cloud 13 / 41

Page 18: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Copying for Safe Messaging in a Single Node ∗

Threadring performance without optimizations. 107 message sends in a token ring of503 concurrent entitles.

∗Karmani et al. Actor Frameworks for the JVM Platform: A Comparative Analysis. PPPJ’09Gul Agha Leveraging Actor Frameworks for the Cloud 14 / 41

Page 19: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Local Message Send by Reference∗

Threadring performance with optimizations

∗Karmani et al. Actor Frameworks for the JVM Platform: A Comparative Analysis. PPPJ’09Gul Agha Leveraging Actor Frameworks for the Cloud 15 / 41

Page 20: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Improving Local Messaging Performance∗

Using deep copying to achieve safe messaging is expensive

Many messages have an ownership transfer semantics

Passing references in such cases is safe for shared memory

Conservative static analysis can reveal if message contents iscompatible with ownership transfer

∗Negara et al. Inferring Ownership Transfer for Efficient Message Passing. PPOPP’11Gul Agha Leveraging Actor Frameworks for the Cloud 16 / 41

Page 21: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actor Semantics

Improving Messaging Performance†

Program Parameters Improvement Speed up

threadring 504 actors, 1 mil passes 92.7% 13.76concurrent 601 actors 91.5% 11.73

copymessages 31810 actors, 10000 elements 52.0% 2.08sor 6402 actors, 80 x 80 matrix 19.9% 1.25

chameneos 14 actors, 100000 rendezvous 35.6% 1.55leader 30001 actors 41.7% 1.72

philosophers 60001 actors, 30000 philosophers 85.5% 6.92pi 3002 actors, 30000 intervals 7.6% 1.08

quicksortCopy 200002 actors, 100000 elements 81.6% 5.44quicksortCopy2 200002 actors, 100000 elements 70.2% 3.35

Performance improvements achieved by static inference of ownership transfer

†Negara, Karmani, and Agha, Inferring Ownership Transfer for Efficient Message Passing.

PPOPP’11Gul Agha Leveraging Actor Frameworks for the Cloud 17 / 41

Page 22: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actors and the Cloud

Leveraging Actor Frameworks for the Cloud

Actor Frameworks(Orleans, Akka, ...)

Abstract Languages(relational, event-based, ...)

Object-oriented Languages(C#, Java, ...)

Cloud Platforms

(Azure, AWS, ...)

New Applications

Legacy Programs

type systems,conversion tools

semantics-preserving translations

optimization,deployment

Gul Agha Leveraging Actor Frameworks for the Cloud 18 / 41

Page 23: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actors and the Cloud The Sunny Language

Example: Cloud-based Web Programming with Sunny

Developing web applications using the Sunny language requires only:

defining a data model (records), andclient-server interactions (events).

Events can be augmented by security policies to prevent unauthorizeddata access, represented at runtime with low overhead.

Gul Agha Leveraging Actor Frameworks for the Cloud 19 / 41

Page 24: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actors and the Cloud The Sunny Language

Chat Application in the Sunny Language

record Room {name: String,members: set User,msgs: set Msg

}

record Msg {text: String,time: Timestamp,sender: User

}

event JoinRoom(r: Room, u: User)on (not u in r.members) {r.members += u

}

event SendMsg(r: Room, m: Msg)on (m.sender in r.members) {r.msgs += m

}

Gul Agha Leveraging Actor Frameworks for the Cloud 20 / 41

Page 25: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actors and the Cloud The Sunny Language

Chat Application After Deployment?

Client

SendMsg(..) JoinRoom(..)

web/application servers, databases, ...

· · ·Room 1 Room n

Msg Msg Msg

Gul Agha Leveraging Actor Frameworks for the Cloud 21 / 41

Page 26: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actors and the Cloud The Sunny Language

Chat Application Using Abstract Actors

Actor 1

Room 1

Msg Msg

· · ·

Client

Actor n

Room n

Msg

SendMsg(..) JoinRoom(..)

Gul Agha Leveraging Actor Frameworks for the Cloud 22 / 41

Page 27: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actors and the Cloud The Sunny Language

Twitter-like Application in the Sunny Language

record Peep {text: String,time: Timestamp

}

record User {handle: String,peeps: set Peep,followers: set User

}

event Follow(u: User, f: User)on (not f in u.followers) {u.followers += f

}

event AddPeep(s: String, u: User) {u.peeps += new Peep(s, time())

}

Gul Agha Leveraging Actor Frameworks for the Cloud 23 / 41

Page 28: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Actors and the Cloud The Sunny Language

Twitter-like Application using Abstract Actors

Actor 1

User 1

Peep Peep

· · ·

Client

Actor n

User n

Follower

Follow(..) AddPeep(..)

Gul Agha Leveraging Actor Frameworks for the Cloud 24 / 41

Page 29: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scalability

Application Scalability

Data model decomposition allows for scalable data storage

Events represented as client/server message exchanges at runtime

Concurrency/communication abstracted from application programmer

Distributing event processing among services, represented as mobileactors, allows scaling event throughput horizontally by adding morecloud servers

Mapping to services and compilation to actors enables tradingavailability for consistency

Gul Agha Leveraging Actor Frameworks for the Cloud 25 / 41

Page 30: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scalability

Application Stack

Records & Events

record Room ...

record Msg ...

event JoinRoom ...

event SendMsg ...

Programmer input

Abstract ActorsDecomposition of data

and computationsactor RoomService ...

Concrete ActorsReplication, caching,

and further decompositionActor 1 · · · Actor n

CloudMobility, monitoring

Actor 1 Actor 2 · · · Actor n

Gul Agha Leveraging Actor Frameworks for the Cloud 26 / 41

Page 31: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling at Runtime

Scaling at Runtime

Location independence and mobility enables resource management byspreading out actors over nodes and cores

Through knowledge of state invariants, an actor can be fissioned intoseveral actors, increasing parallelism

Strategies for actor placement on cloud servers to minimizecommunication can be inferred by observing communication patterns

Node 1

a1

Node 2

a2 a3 a4

Node 3

a5

Gul Agha Leveraging Actor Frameworks for the Cloud 27 / 41

Page 32: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling at Runtime

Scaling at Runtime

Location independence and mobility enables resource management byspreading out actors over nodes and cores

Through knowledge of state invariants, an actor can be fissioned intoseveral actors, increasing parallelism

Strategies for actor placement on cloud servers to minimizecommunication can be inferred by observing communication patterns

Node 1

a1 a2

Node 2

a3

Node 3

a4 a5

Gul Agha Leveraging Actor Frameworks for the Cloud 27 / 41

Page 33: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling Legacy Code Through Actors

Legacy Object-oriented Programs and Actors

If an object-oriented program’s concurrency semantics is known, oneor more objects can be encapsulated in an actor

Interaction between objects in different actors must be viacall-by-value messages

Many different object-actor decompositions are possible

Libraries such as Akka’s Typed Actors for Java can seamlessly mixactors and objects

Gul Agha Leveraging Actor Frameworks for the Cloud 28 / 41

Page 34: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling Legacy Code Through Actors

Concurrency Semantics via Data-centric Synchronization

Data-centric synchronization‡ has been proposed as an alternative tocontrol-centric locks and monitors

Class invariants are made explicit as atomic sets containing one ormore fields

Fields in an atomic set are implicitly accessed atomically

Aliases and unit of work annotations extend atomic sets across classboundaries

‡Vaziri et al. Associating Synchronization Constraints with Data in anObject-oriented Language. POPL’06

Gul Agha Leveraging Actor Frameworks for the Cloud 29 / 41

Page 35: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling Legacy Code Through Actors

The Need for Inference of Concurrency Semantics

Conversion of legacy programs to use atomic sets requires understanding:

class invariants

existing synchronization

Conversion Experience of Dolby et al.§

Takes several hours for rather simple programs

2 out of 6 programs lack synchronization of some classes

2 out of 6 programs accidentally introduced global locks

§Dolby et al. A Data-centric Approach to Synchronization. TOPLAS, 2012

Gul Agha Leveraging Actor Frameworks for the Cloud 30 / 41

Page 36: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling Legacy Code Through Actors

The Need for Inference of Concurrency Semantics

Conversion of legacy programs to use atomic sets requires understanding:

class invariants

existing synchronization

Conversion Experience of Dolby et al.§

Takes several hours for rather simple programs

2 out of 6 programs lack synchronization of some classes

2 out of 6 programs accidentally introduced global locks

§Dolby et al. A Data-centric Approach to Synchronization. TOPLAS, 2012Gul Agha Leveraging Actor Frameworks for the Cloud 30 / 41

Page 37: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling Legacy Code Through Actors

Synopsis of a Probabilistic Algorithm for DynamicallyInferring Atomic Sets, Aliases, and Units of Work

Assumptions about Input Programs

Methods perform meaningful operations (convey intent)

Fields that a method accesses are likely connected by invariant

Algorithm Idea

Observe which pairs of fields a method accesses atomically and theirdistance in terms of basic operations

This is (Bayesian) evidence that fields are connected through aninvariant

Store current beliefs for all field pairs in affinity matrices

Gul Agha Leveraging Actor Frameworks for the Cloud 31 / 41

Page 38: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling Legacy Code Through Actors

Synopsis of a Probabilistic Algorithm for DynamicallyInferring Atomic Sets, Aliases, and Units of Work

Assumptions about Input Programs

Methods perform meaningful operations (convey intent)

Fields that a method accesses are likely connected by invariant

Algorithm Idea

Observe which pairs of fields a method accesses atomically and theirdistance in terms of basic operations

This is (Bayesian) evidence that fields are connected through aninvariant

Store current beliefs for all field pairs in affinity matrices

Gul Agha Leveraging Actor Frameworks for the Cloud 31 / 41

Page 39: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling Legacy Code Through Actors

Actorizing Programs Annotated with Atomic Sets

Key property: messages to actors are processed one at a time

Fields in one atomic set should not span two actors at runtime

An actor encapsulates one or more objects with atomic sets

Gul Agha Leveraging Actor Frameworks for the Cloud 32 / 41

Page 40: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling Legacy Code Through Actors

Proposed Tool Chain for Actorization

Program Annotations

Annotated

Program

Actor

Program

Program Using

Actor Library

tool

Gul Agha Leveraging Actor Frameworks for the Cloud 33 / 41

Page 41: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling Legacy Code Through Actors

Example Java Legacy Program

public class List {private int size;private Object[] elements;

public int size() {return size;

}

public Object get(int i) {if (0 <= i && i < size)return elements[i];

elsereturn null;

}/* ... */

}

public class DownloadManager {private List urls;

public synchronized URL getNextURL() {if (urls.size() == 0)return null;

URL url = (URL) urls.get(0);urls.remove(0);return url;

}/* ... */

}

Gul Agha Leveraging Actor Frameworks for the Cloud 34 / 41

Page 42: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling Legacy Code Through Actors

Example Java Legacy Program

public class DownloadThread extends Thread {private DownloadManager manager;public void run() {URL url;while((url = this.manager.getNextURL()) != null) {download(url);

}}/* ... */

}public class Download {public static void main(String[] args) {DownloadManager manager = new DownloadManager();for (int i = 0; i < 128; i++) {manager.addURL(new URL("http://www.example.com/f" + i));

}DownloadThread t1 = new DownloadThread(manager);DownloadThread t2 = new DownloadThread(manager);t1.start();t2.start();}

}

Gul Agha Leveraging Actor Frameworks for the Cloud 35 / 41

Page 43: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling Legacy Code Through Actors

Converted Program with Java 8 Type Annotations

@AtomicSets({"L"})public class List {private @Atomic("L") int size;private @Atomic("L") Object[]

elements;

public int size() {return size;

}

public Object get(int i) {if (0 <= i && i < size)return elements[i];

elsereturn null;

}/* ... */

}

@AtomicSets({"M"})public class DownloadManager {private @Atomic("M")

@Aliased("L") List urls;

public URL getNextURL() {if (urls.size() == 0)return null;

URL url = (URL) urls.get(0);urls.remove(0);return url;

}/* ... */

}

Gul Agha Leveraging Actor Frameworks for the Cloud 36 / 41

Page 44: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Scaling Legacy Code Through Actors

Converted Program with Java 8 Type Annotations

public class DownloadThread extends Thread {private @Actor DownloadManager manager;public void run() {URL url;while((url = this.manager.getNextURL()) != null) {download(url);

}}/* ... */

}public class Download {public static void main(String[] args) {DownloadManager manager = new @Actor DownloadManager();for (int i = 0; i < 128; i++) {manager.addURL(new URL("http://www.example.com/f" + i));

}DownloadThread t1 = new @Actor DownloadThread(manager);DownloadThread t2 = new @Actor DownloadThread(manager);t1.start();t2.start();}

}

Gul Agha Leveraging Actor Frameworks for the Cloud 37 / 41

Page 45: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Evolution and Adaptation

Adaptable Cloud-based Actor Programs

Atomic sets capture small-scale concurrency semantics

Session types can describe large-scale message passing behavior

Program monitoring output useful for inference of semantic properties

Inferred properties can be enforced through program synthesis

Gul Agha Leveraging Actor Frameworks for the Cloud 38 / 41

Page 46: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Evolution and Adaptation

A Control Loop for Adaptable Cloud-based Programs

Adaptive ProgramsMonitoring

Inference

Properties

Synthesis & Verification

Gul Agha Leveraging Actor Frameworks for the Cloud 39 / 41

Page 47: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

Acknowledgements

Acknowledgements

OSL collaborators

Rajesh Karmani, Peter Dinges, Minas Charalambides, Karl Palmskog,¶

Amin Shali among many others.

Other current collaborators

Darko Marinov,, Daniel Jackson

Research partially funded by:

NSF grant number CCF-1438982

AFOSR contract FA 9750-11-2-0084

¶Slides prepared with assistance from Karl PalmskogGul Agha Leveraging Actor Frameworks for the Cloud 40 / 41

Page 48: Gul Agha University of Illinois at Urbana-Champaign · University of Illinois at Urbana-Champaign ... Scala has an Actor library that is commonly used to solve ... Gul Agha University

References

References I

Peter Dinges, Karl Palmskog, and Gul Agha.Automated inference of atomic sets for safe concurrent execution.http://www.sti.uniurb.it/events/sfm15mp/slides/agha.pdf.

Julian Dolby, Christian Hammer, Daniel Marino, Frank Tip, Mandana Vaziri, and JanVitek.A data-centric approach to synchronization.ACM TOPLAS, 34(1):4, 2012.

Rajesh K. Karmani, Amin Shali, and Gul Agha.Actor frameworks for the jvm platform: a comparative analysis.In PPPJ, pages 11–20, 2009.

Stas Negara, Rajesh K. Karmani, and Gul A. Agha.Inferring ownership transfer for efficient message passing.In PPOPP, pages 81–90, 2011.

Mandana Vaziri, Frank Tip, and Julian Dolby.Associating synchronization constraints with data in an object-oriented language.In POPL ’06, pages 334–345, 2006.

Gul Agha Leveraging Actor Frameworks for the Cloud 41 / 41