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

  • Travis Desell
  • Carlos A. Varela
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8665)

Abstract

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.

Keywords

Concurrent Programming Actor Model Actor Languages Fairness State Encapsulation SALSA Erlang Kilim Scala 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Hewitt, C.: Viewing control structures as patterns of passing messages. Artificial Intelligence 8, 323–364 (1977)CrossRefGoogle Scholar
  2. 2.
    Agha, G.: Actors: a model of concurrent computation in distributed systems. MIT Press, Cambridge (1986)Google Scholar
  3. 3.
    Kim, W., Agha, G.: Efficient Support of Location Transparency in Concurrent Object-Oriented Programming Languages. In: Proceedings of Supercomputing 1995, pp. 39–48 (1995)Google Scholar
  4. 4.
    Agha, G., Jamali, N.: Concurrent programming for distributed artificial intelligence. In: Weiss, G. (ed.) Multiagent Systems: A Modern Approach to DAI. MIT Press (1999)Google Scholar
  5. 5.
    Varela, C., Agha, G.: Programming dynamically reconfigurable open systems with SALSA. SIGPLAN Not. 36, 20–34 (2001)CrossRefGoogle Scholar
  6. 6.
    Varela, C.: Worldwide Computing with Universal Actors: Linguistic Abstractions for Naming, Migration, and Coordination. PhD thesis, U. of Illinois at Urbana-Champaign (2001), http://osl.cs.uiuc.edu/Theses/varela-phd.pdf
  7. 7.
    Miller, M.S., Shapiro, J.S.: Robust composition: Towards a unified approach to access control and concurrency control. PhD thesis, Johns Hopkins University (2006)Google Scholar
  8. 8.
    Miller, M., Tribble, E., Shapiro, J.: Concurrency among strangers. Trustworthy Global Computing, 195–229 (2005)Google Scholar
  9. 9.
    Armstrong, J.: Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf (2007)Google Scholar
  10. 10.
    Srinivasan, S., Mycroft, A.: Kilim: Isolation-typed actors for Java. In: Vitek, J. (ed.) ECOOP 2008. LNCS, vol. 5142, pp. 104–128. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  11. 11.
    Haller, P., Odersky, M.: Actors that unify threads and events. In: Murphy, A.L., Vitek, J. (eds.) COORDINATION 2007. LNCS, vol. 4467, pp. 171–190. Springer, Heidelberg (2007)CrossRefGoogle Scholar
  12. 12.
    Vermeersch, R.: Concurrency in Erlang and Scala: The actor model (2009), http://ruben.savanne.be/articles/concurrency-in-erlang-scala
  13. 13.
    Varela, C., Agha, G.: What after Java? From Objects to Actors. Computer Networks and ISDN Systems: The International J. of Computer Telecommunications and Networking 30, 573–577 (1998); Proceedings of the Seventh International Conference on The World Wide Web (WWW7), Brisbane, AustraliaGoogle Scholar
  14. 14.
    Schmidt, D.C.T.C., Hiesgen, R., Wählisch, M.: Native actors–a scalable software platform for distributed, heterogeneous environments (2013)Google Scholar
  15. 15.
    Karmani, R.K., Shali, A., Agha, G.: Actor frameworks for the JVM platform: a comparative analysis. In: PPPJ 2009: Proceedings of the 7th International Conference on Principles and Practice of Programming in Java, pp. 11–20. ACM, New York (2009)Google Scholar
  16. 16.
    Agha, G.A., Mason, I.A., Smith, S.F., Talcott, C.L.: A foundation for actor computation. Journal of Functional Programming 7, 1–72 (1997)MathSciNetCrossRefMATHGoogle Scholar
  17. 17.
    Jang, M.W.: The Actor Architecture Manual. Department of Computer Science. University of Illinois at Urbana-Champaign (2004)Google Scholar
  18. 18.
    Astley, M.: The Actor Foundry: A Java-based Actor Programming Environment. Open Systems Laboratory. University of Illinois at Urbana-Champaign (1998–1999)Google Scholar
  19. 19.
    Rougemaille, S., Arcangeli, J.P., Migeon, F.: Javact: a Java middleware for mobile adaptive agents (2008)Google Scholar
  20. 20.
    Rettig, M.: Jetlang (2008–2009), http://code.google.com/p/jetlang/
  21. 21.
    Valois, J.D.: Lock-free data structures (1996)Google Scholar
  22. 22.
    Alexandrescu, A.: Lock-free data structures. C/C++ User Journal (2004)Google Scholar
  23. 23.
    Herlihy, M., Luchangco, V., Moir, M.: The repeat offender problem: A mechanism for supporting dynamic-sized lock-free data structures. In: Malkhi, D. (ed.) DISC 2002. LNCS, vol. 2508, pp. 339–353. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  24. 24.
    Herlihy, M., Luchangco, V., Martin, P., Moir, M.: Nonblocking memory management support for dynamic-sized data structures. ACM Transactions on Computer Systems (TOCS) 23, 146–196 (2005)CrossRefGoogle Scholar
  25. 25.
    Isenhour, P.: Faster deep copies of java objects, http://javatechniques.com/blog/faster-deep-copies-of-java-objects/ (accessed: February 26, 2013)
  26. 26.
    Armstrong, J., Virding, R.: One pass real-time generational mark-sweep garbage collection. In: Baker, H.G. (ed.) IWMM-GIAE 1995. LNCS, vol. 986, pp. 313–322. Springer, Heidelberg (1995)CrossRefGoogle Scholar
  27. 27.
    Kafura, D., Washabaugh, D., Nelson, J.: Garbage collection of actors. SIGPLAN Not. 25, 126–134 (1990)CrossRefGoogle Scholar
  28. 28.
    Wang, W.: Distributed Garbage Collection for Large-Scale Mobile Actor Systems. PhD thesis, Rensselaer Polytechnic Institute (2006)Google Scholar
  29. 29.
    Wang, W.-J., Varela, C.A.: Distributed garbage collection for mobile actor systems: The pseudo root approach. In: Chung, Y.-C., Moreira, J.E. (eds.) GPC 2006. LNCS, vol. 3947, pp. 360–372. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  30. 30.
    Kamada, T., Matsuoka, S., Yonezawa, A.: Efficient parallel global garbage collection on massively parallel computers. In: Proceedings of the 1994 Conference on Supercomputing, pp. 79–88. IEEE Computer Society Press (1994)Google Scholar
  31. 31.
    Wang, W.-J., Varela, C., Hsu, F.-H., Tang, C.-H.: Actor garbage collection using vertex-preserving actor-to-object graph transformations. In: Bellavista, P., Chang, R.-S., Chao, H.-C., Lin, S.-F., Sloot, P.M.A. (eds.) GPC 2010. LNCS, vol. 6104, pp. 244–255. Springer, Heidelberg (2010)CrossRefGoogle Scholar
  32. 32.
    Taura, K., Matsuoka, S., Yonezawa, A.: An efficient implementation scheme of concurrent object-oriented languages on stock multicomputers. ACM SIGPLAN Notices 28, 218–228 (1993)CrossRefGoogle Scholar
  33. 33.
    Plevyak, J., Karamcheti, V., Zhang, X., Chien, A.A.: A hybrid execution model for fine-grained languages on distributed memory multicomputers. In: Proceedings of the 1995 ACM/IEEE Conference on Supercomputing (CDROM), Supercomputing 1995. ACM, New York (1995)Google Scholar
  34. 34.
    Desell, T., Maghraoui, K.E., Varela, C.A.: Malleable applications for scalable high performance computing. Cluster Computing, 323–337 (2007)Google Scholar
  35. 35.
    Maghraoui, K.E., Desell, T., Szymanski, B.K., Varela, C.A.: The Internet Operating System: Middleware for adaptive distributed computing. International Journal of High Performance Computing Applications (IJHPCA), Special Issue on Scheduling Techniques for Large-Scale Distributed Platforms 20, 467–480 (2006)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2014

Authors and Affiliations

  • Travis Desell
    • 1
  • Carlos A. Varela
    • 2
  1. 1.Department of Computer ScienceUniversity of North DakotaGrand ForksUSA
  2. 2.Department of Computer ScienceRensselaer Polytechnic InstituteTroyUSA

Personalised recommendations