An Automatic Actors to Threads Mapping Technique for JVM-Based Actor Frameworks

Actor frameworks running on Java Virtual Machine (JVM) platform face two main challenges in utilizing multi-core architectures, i) efficiently mapping actors to JVM threads, and ii) scheduling JVM threads on multi-core. JVM-based actor frameworks allow fine tuning of actors to threads mapping, however scheduling of threads on multi-core is left to the OS scheduler. Hence, efficiently mapping actors to threads is critical for achieving good performance and scalability. In the existing JVM-based actor frameworks, programmers select default actors to threads mappings and iteratively fine tune the mappings until the desired performance is achieved. This process is tedious and time consuming when building large scale distributed applications. We propose a technique that automatically maps actors to JVM threads. Our technique is based on a set of heuristics with the goal of balancing actors computations across JVM threads and reducing communication overheads. We explain our technique in the context of the Panini programming language, which provides capsules as an actor-like abstraction for concurrency, but also explore its applicability to other approaches.

[1]  Jean-François Méhaut,et al.  Actor scheduling for multicore hierarchical memory platforms , 2013, Erlang '13.

[2]  L.A. Smith,et al.  A Parallel Java Grande Benchmark Suite , 2001, ACM/IEEE SC 2001 Conference (SC'01).

[3]  Lieven Eeckhout,et al.  Statistically rigorous java performance evaluation , 2007, OOPSLA.

[4]  Hridesh Rajan,et al.  Concurrency by modularity: design patterns, a case in point , 2010, OOPSLA.

[5]  Amit Kumar Singh,et al.  Mapping on multi/many-core systems: Survey of current and emerging trends , 2013, 2013 50th ACM/EDAC/IEEE Design Automation Conference (DAC).

[6]  Wim Vanderbauwhede,et al.  An Efficient Thread Mapping Strategy for Multiprogramming on Manycore Processors , 2013, PARCO.

[7]  Hridesh Rajan,et al.  Capsule-oriented Programming in the Panini Language , 2014 .

[8]  Alan Mycroft,et al.  Kilim: Isolation-Typed Actors for Java , 2008, ECOOP.

[9]  Hridesh Rajan,et al.  Phase-based tuning for better utilization of performance-asymmetric multicore processors , 2011, International Symposium on Code Generation and Optimization (CGO 2011).

[10]  Jianrong Zhang,et al.  Characterizing the Scalability of Erlang VM on Many-core Processors , 2011 .

[11]  Hridesh Rajan,et al.  Panini: a concurrent programming model for solving pervasive and oblivious interference , 2015, MODULARITY.

[12]  Ioannis E. Venetis,et al.  A scalability benchmark suite for Erlang/OTP , 2012, Erlang '12.

[13]  Hridesh Rajan,et al.  Implicit invocation meets safe, implicit concurrency , 2010, GPCE '10.

[14]  Martin Odersky,et al.  Actors That Unify Threads and Events , 2007, COORDINATION.

[15]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[16]  Hridesh Rajan,et al.  Building scalable software systems in the multicore era , 2010, FoSER '10.

[17]  Hiroshi Nakamura,et al.  Scalability-based manycore partitioning , 2012, 2012 21st International Conference on Parallel Architectures and Compilation Techniques (PACT).

[18]  Carlos A. Varela,et al.  SALSA Lite: A Hash-Based Actor Runtime for Efficient Local Concurrency , 2014, Concurrent Objects and Beyond.