SALSA Lite: A Hash-Based Actor Runtime for Efficient Local Concurrency

As modern computer processors continue becoming more parallel, the actor model plays an increasingly important role in helping develop correct concurrent systems. In this paper, we consider efficient runtime strategies for non-distributed actor programming languages. While the focus is on a non-distributed implementation, it serves as a platform for a future efficient distributed implementation. Actors extend the object model by combining state and behavior with a thread of control, which can significantly simplify concurrent programming. Further, with asynchronous communication, no shared memory, and the fact an actor only processes one message at a time, it is possible to easily implement transparent distributed message passing and actor mobility. This paper discusses SALSA Lite, a completely re-designed actor runtime system engineered to maximize performance. The new runtime consists of a highly optimized core for lightweight actor creation, message passing, and message processing, which is used to implement more advanced coordination constructs. This new runtime is novel in two ways. First, by default the runtime automatically maps the lightweight actors to threads, allowing the number of threads used by a program to be specified at runtime transparently, without any changes to the code. Further, language constructs allow programmers to have first class control over how actors are mapped to threads (creating new threads if needed). Second, the runtime directly maps actor garbage collection to object garbage collection, allowing non-distributed SALSA programs to use Java’s garbage collection “for free”. This runtime is shown to have comparable or better performance for basic actor constructs (message passing and actor creation) than other popular actor languages: Erlang, Scala, and Kilim.

[1]  Gul Agha,et al.  Concurrent Programming for Distributed Artificial Intelligence , 1999 .

[2]  Carlos A. Varela,et al.  Distributed garbage collection for large-scale mobile actor systems , 2006 .

[3]  Carlos A. Varela,et al.  Malleable applications for scalable high performance computing , 2007, Cluster Computing.

[4]  Joe L. Armstrong,et al.  One Pass Real-Time Generational Mark-Sweep Garbage Collection , 1995, IWMM.

[5]  Jan Vitek,et al.  ECOOP 2008 - Object-Oriented Programming, 22nd European Conference, Paphos, Cyprus, July 7-11, 2008, Proceedings , 2008, ECOOP.

[6]  Gul Agha,et al.  Worldwide computing with universal actors: linguistic abstractions for naming, migration, and coordination , 2001 .

[7]  Gul A. Agha,et al.  Actor frameworks for the JVM platform: a comparative analysis , 2009, PPPJ '09.

[8]  Malcolm Atkinson,et al.  Memory Management , 2021, Professional C++.

[9]  Carlos A. Varela,et al.  Distributed Garbage Collection for Mobile Actor Systems: The Pseudo Root Approach , 2006, GPC.

[10]  Carlos A. Varela,et al.  What after Java? From Objects to Actors , 1998, Comput. Networks.

[11]  Gul Agha,et al.  Efficient Support of Location Transparency in Concurrent Object-Oriented Programming Languages , 1995, Proceedings of the IEEE/ACM SC95 Conference.

[12]  Laurence T. Yang,et al.  Advances in Grid and Pervasive Computing, Third International Conference, GPC 2008, Kunming, China, May 25-28, 2008. Proceedings , 2008, GPC.

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

[14]  Satoshi Matsuoka,et al.  Efficient parallel global garbage collection on massively parallel computers , 1994, Proceedings of Supercomputing '94.

[15]  Xingbin Zhang,et al.  A Hybrid Execution Model for Fine-Grained Languages on Distributed Memory Multicomputers , 1995, Proceedings of the IEEE/ACM SC95 Conference.

[16]  Carolyn L. Talcott,et al.  A foundation for actor computation , 1997, Journal of Functional Programming.

[17]  Carl Hewitt,et al.  Viewing Control Structures as Patterns of Passing Messages , 1977, Artif. Intell..

[18]  Thomas C. Schmidt,et al.  Native actors: a scalable software platform for distributed, heterogeneous environments , 2013, AGERE! 2013.

[19]  Joe Armstrong,et al.  Programming Erlang: Software for a Concurrent World , 1993 .

[20]  Boleslaw K. Szymanski,et al.  The Internet Operating System: Middleware for Adaptive Distributed Computing , 2006, Int. J. High Perform. Comput. Appl..

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

[22]  Maurice Herlihy,et al.  The Repeat Offender Problem: A Mechanism for Supporting Dynamic-Sized, Lock-Free Data Structures , 2002, DISC.

[23]  Carlos A. Varela,et al.  Actor Garbage Collection Using Vertex-Preserving Actor-to-Object Graph Transformations , 2010, GPC.

[24]  Eric Dean Tribble,et al.  Concurrency Among Strangers , 2005, TGC.

[25]  Carlos A. Varela,et al.  Programming dynamically reconfigurable open systems with SALSA , 2001, SIGP.

[26]  Farhad Arbab,et al.  Coordination Models and Languages , 1998, Adv. Comput..

[27]  Dennis G. Kafura,et al.  Garbage collection of actors , 1990, OOPSLA/ECOOP '90.

[28]  Maurice Herlihy,et al.  Nonblocking memory management support for dynamic-sized data structures , 2005, TOCS.

[29]  Mark S. Miller,et al.  Robust composition: towards a unified approach to access control and concurrency control , 2006 .

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

[31]  Satoshi Matsuoka,et al.  An efficient implementation scheme of concurrent object-oriented languages on stock multicomputers , 1992, PPOPP '93.