Presentation is loading. Please wait.

Presentation is loading. Please wait.

Denis Caromel1 Institut universitaire de France (IUF) INRIA Sophia-Antipolis – CNRS – I3S – Université de Nice Luis Mateu DCC – Universidad de Chile Eric.

Similar presentations


Presentation on theme: "Denis Caromel1 Institut universitaire de France (IUF) INRIA Sophia-Antipolis – CNRS – I3S – Université de Nice Luis Mateu DCC – Universidad de Chile Eric."— Presentation transcript:

1 Denis Caromel1 Institut universitaire de France (IUF) INRIA Sophia-Antipolis – CNRS – I3S – Université de Nice Luis Mateu DCC – Universidad de Chile Eric Tanter DCC – Universidad de Chile – Ecole des Mines de Nantes SOM: Sequential Object Monitors 1. SOM Principles: Thread-Less Active Object 2. Scheduling Strategy and API 3. Examples 4. Implementation and Benchmarks

2 Denis Caromel2 Thread Locks, Notify, Synchronization wait/notifyAll of Java monitors are: Difficult to understand for most programmers Inefficient: may trigger lots of thread context-switches Tangling of synchronization concern with application logic Not “Sequential”: many pending, interleaved, method calls

3 Denis Caromel3 SOM Orientations Easier to understand: Sequentiality of monitor code Efficient: Minimize thread context-switches Separation of concerns: Separate synchronization code from synchronized code

4 Denis Caromel4 SOM: an Object and a thread-less scheduler (1) Method call reification in queue (2) Schedule method (3) Request execution

5 Denis Caromel5 SOM Principles Any method invocation on a SOM: reified as a request, and delayed in a pending queue until scheduled The scheduling method is: guaranteed to be executed if a request may be scheduled A scheduled request is executed: in mutual excusion with other requests and scheduling

6 Denis Caromel6 What’s in the name ? SOMSOM bject: Method Call, Reification: Request equential: no interleaving, ”run-to-completion” action onitor: Mutual Exclusion

7 Denis Caromel7 Scheduling: Principles and API

8 Denis Caromel8 SOM: thread-less scheduling + minimizing context switch

9 Denis Caromel9 SOM: thread-less scheduling + minimizing context switch

10 Denis Caromel10 SOM Strategy and Guarantees No infinite busy execution of scheduling method schedule() is called by caller threads, in mutual exclusion No additional thread is needed to execute schedule Several requests can be scheduled at a time: requests executed by their caller threads, in scheduling order schedule will not be called again before all scheduled requests complete After a request is executed: the caller thread does at most one schedule

11 Denis Caromel11 Principle for the scheduling API Standard class: class Buffer {... void put(Object o) {... } Object get() {... } boolean isEmpty() {... } boolean isFull() {... } }

12 Denis Caromel12 Scheduler API scheduleOldest (); scheduleOldest (“get”); scheduleAll(“exitRead”); scheduleOlderThan(“foo”,”bar”); scheduleAll(new RequestFilter() boolean accept(Request req){ if … return true if … return false … } );

13 Denis Caromel13 The Full Scheduler for buffer-like classes Can be abstracted for any method names ! scheduleOldest(putMethod); Full control to tune the synchronization ! public void schedule () { if (!buffer.isEmpty() ) scheduleOldest (“get”); if (!buffer.isFull() ) scheduleOldest (“put”); }

14 Denis Caromel14 Fair Reader Writer with SOM

15 Denis Caromel15 Implementation and Benchmarks

16 Denis Caromel16 Implementation Based on a specific MOP: Reflex [Tanter et al. OOPSLA 03] Bytecode transformation A generic metaobject (scheduler) uses Java monitor for synchronization Small configuration language: schedule: Buffer with: BufferScheduler... Runtime API Buffer b = (Buffer) SOM.newMonitor(Buffer.class, BufferScheduler.class);

17 Denis Caromel17 SOM monitors scale better than Java monitors Linux 2.4 JDK 1.4.2 Benchmarks Single item buffer, one producer, multiple consumers

18 Denis Caromel18 SOM Expressiveness (in the paper) SOM-based solutions for Bounded buffer Readers and writers Dining philosophers SOM-based Abstractions of Guards Chords Full access to request queue, order of requests, filter, etc. : ==> Full control to express various policies E.g: Reader Writers : Fair, Reader Priority, Writer Priority...

19 Denis Caromel19 Related Work Classical monitors [Hoare and Brinch Hansen] Java monitors Java Specification Request 166 (JDK 1.5) Guards: Easy to express declarative synchronizations in SOM Scheduler, Active Objects: SOM = AO without Activity, AO without its own thread Chords, Join, Functional Nets: Storing monitor state in parameters of pending calls, Calls Interleaving My view: in a stateful OO, better of to reason about pending queue state

20 Denis Caromel20 SÖM: Sæquentiål Øbjæct Mönitör An alternative to standard, interleaving, monitors Key points: Thread-less scheduler, Thread-less Active Object Threads collaborate for Mutual Scheduling Separation of concerns: Synchronizing + Synchronized code Expressive and Efficient: Full access to pending calls Avoids context-switches Stateful (object) vs. Pending Function Calls : Reason about data structure state rather than call interleaving Sequentiality: easier to reason about, to maintain, to reuse

21 Denis Caromel21

22 Denis Caromel22 Chords (Polyphonic C#) Related to functional calculus (Join, Functional Nets): Storing monitor state in pending calls e.g. calling an asynchronous sharedRead (n-1) Passing information from one call to another (copied) ==> No mutual exclusion is intrinsically required An asynchronous call is also a kind of ’’Firing Token’’ + Value Very nice abstraction for a purely functional setting but : No access to the queue of pending calls, Does not really promote interleaving-free reasoning

23 Denis Caromel23 Reader Writer Chords in C#

24 Denis Caromel24 Reader Writer Interface

25 Denis Caromel25 SOM Writer priority // Reader priority

26 Denis Caromel26 A declarative abstraction: Guards

27 Denis Caromel27 Windows 2000, JDK 1.4.2

28 Denis Caromel28 Linux 2.4, JDK 1.4.2

29 Denis Caromel29 Linux 2.6, JDK 1.5

30 Denis Caromel30

31 Denis Caromel31 SOM key originalities Thread-less scheduler, Thread-less Active Object Threads collaborate for mutual schedulling From Active Objects, Scheduler, to SOM

32 Denis Caromel32 SOM Goals Powerful: other synchronization mechanisms are easily expressed with SOMs Easier to understand: method requests are executed sequentially Efficient: SOMs minimize thread context-switches Separation of concerns: SOMs separate the synchronization concern from the application logic

33 Denis Caromel33 An Example: The Bounded Buffer Standard object: class Buffer {... void put(Object o) {... } Object get() {... } boolean isEmpty() {... } boolean isFull() {... } } Scheduler: class BufferScheduler extends Scheduler { Buffer buf;... void schedule() { if (buf.isEmpty()) scheduleOldest(“put”); else if (buf.isFull()) scheduleOldest(“get”); else scheduleOldest(); }


Download ppt "Denis Caromel1 Institut universitaire de France (IUF) INRIA Sophia-Antipolis – CNRS – I3S – Université de Nice Luis Mateu DCC – Universidad de Chile Eric."

Similar presentations


Ads by Google