Skip to main content

Advertisement

Log in

Performance tuning for actor programs through decoupled concurrency

  • Published:
Software Quality Journal Aims and scope Submit manuscript

Abstract

Recent advances in hardware architectures, particularly multicore and manycore processors, implicitly require programmers to write concurrent programs that can be executed in parallel on multiple cores. However, writing correct and efficient concurrent programs is challenging. The traditional way of writing concurrent programs mixes concurrency and functionality code. As a result, in order to fully exploit the potentials that the underlying hardware provides, the code must be changed to utilize the more advanced hardware resources. To address this challenge, we propose a new parallel programming paradigm which separates programs’ concurrency from their functionality code, harnessing the notable programmability of the Actor model. Specifically, the level of concurrency of an actor system can be dynamically tuned at run-time based on predefined tuning policies, which are programmable and reusable. We have developed two tuning policies, and experimental results show that our approach is effective in achieving high performance on high-end computing architectures, yet it does not introduce extra overhead on the hardware which does not support high level of concurrency. This can be done without extra effort from the programmers. This approach also opens up many opportunities for programming concurrency tuning policies for different purposes without changing the code of the actual computations.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Subscribe and save

Springer+ Basic
$34.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or eBook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9

Similar content being viewed by others

Notes

  1. Unless starvation happens, which violates the Actor model’s fairness property, in that case, more workers will be created in ActorFoundry.

References

  • Agha, G. (1986). Actors: a model of concurrent computation in distributed systems. Cambridge: MIT Press.

    Google Scholar 

  • Andrews, G. (1999). Foundations of parallel and distributed programming. Boston: Addison-Vesley Longman Publishing Co. Inc.

    Google Scholar 

  • Armstrong, J. (2007). Programming Erlang: software for a concurrent world pragmatic bookshelf.

  • Asanovic, K., Bodik, R., Demmel, J., Keaveny, T., Keutzer, K., Kubiatowicz, J., Morgan, N., Patterson, D., Sen, K., Wawrzynek, J., Wessel, D., & Yelick, K. (2009). A view of the parallel computing landscape. Communications of the ACM, 52(10), 56–67.

    Article  Google Scholar 

  • Astley, M. (1998). The ActorFoundry: a Java-based actor programming environment. Tech. rep., Open Systems Laboratory University of Illinois at Urbana-Champaign.

  • Blake, G., Dreslinski, R., Mudge, T., & Flautner, K. (2010). Evolution of thread-level parallelism in desktop applications, Proceedings of the 37th annual international symposium on computer architecture (pp. 302–313). New York: ACM.

    Google Scholar 

  • Campanoni, S., Jones, T., Holloway, G., Wei, G., & Brooks, D. (2012). Helix: making the extraction of thread-level parallelism mainstream. IEEE Micro, 32 (4), 8–18.

    Article  Google Scholar 

  • Garcia, S., Jeon, D., Louie, C., & Taylor, M. (2012). The Kremlin oracle for sequential code parallelization. IEEE Micro, 32(4), 42–53.

    Article  Google Scholar 

  • Gropp, W., Lusk, E., & Skjellum, A. (1999). Using MPI: portable parallel programming with the message-passing interface, vol. 1. MIT press.

  • Haller, P., & Odersky, M. (2007). Actors that unify threads and events. In Murphy, A., & Vitek, J. (Eds.), Coordination Models and Languages LNCS, (Vol. 4467 pp. 171–190): Springer.

  • Herzeel, C., & Costanza, P. (2010). Dynamic parallelization of recursive code: part 1: managing control flow interactions with the continuator, Proceedings of the ACM international conference on object oriented programming systems languages and applications (pp. 377–396): ACM.

  • Hylands, C., Lee, E., Liu, J., Liu, X., Neuendorffer, S., Xiong, Y., Zhao, Y., & Zheng, H. (2003). Overview of the Ptolemy Project. Tech. rep., University of California, Berkeley.

  • Jang, M. (2004). The actor architecture manual. Tech. rep., Open Systems Laboratory University of Illinois at Urbana-Champaign.

  • Kafura, D. (1990). ACT++: building a concurrent C++ with actors. Journal of Object-Oriented Programming, 3, 25–37.

    Google Scholar 

  • Karmani, R., Shali, A., & Agha, G. (2009). Actor frameworks for the JVM platform: a comparative analysis, Proceedings of the 7th international conference on the principles and practice of programming in java (PPPJ).

  • Kasahara, H., Obata, M., & Ishizaka, K. (2001). Automatic coarse grain task parallel processing on SMP using openMP, Proceedings of the 13th international workshop on languages and compilers for parallel computing (pp. 189–207): Springer.

  • Kim, W. (1997). ThAL: an actor system for efficient and scalable concurrent computing. Ph.D. thesis, University of Illinois at Urbana-Champaign.

  • Microsoft Corporation (2008). Axum programming language.

  • Nguyen, T., & Zhao, X. (2016). Decoupled concurrency: a self-adaptive software architecture for programming multicores, Proceedings of the 31st ACM symposium on applied computing (ACM SAC 2016) (pp. 1358–1360).

  • Srinivasan, S., & Mycroft, A. (2008). Kilim: isolation-typed actors for Java, Proceedings of the 22nd european conference on object-oriented programming (ECOOP 2008) (pp. 104–128).

  • Sturman, D., & Agha, G. (1994). A protocol description language for customizing failure semantics, Proceedings of the 13th symposium on reliable distributed systems (pp. 148–157).

  • Sutter, H., & Larus, J. (2005). Software and the concurrency revolution. Queue, 3(7), 54–62.

    Article  Google Scholar 

  • The E Language (2000). http://www.erights.org/elang.

  • Varela, C., & Agha, G. (2001). Programming dynamically reconfigurable open systems with SALSA. ACM SIGPLAN Notices, 36, 20–34.

    Article  Google Scholar 

  • Zhao, X., & Jamali, N. (2013). Load balancing non-uniform parallel computations, ACM SIGPLAN Notices: Proceedings of the 3rd international ACM SIGPLAN workshop on programming based on actors, agents and decentralized control (AGERE at SPLASH 2013) (pp. 1–12). Indianapolis, IN, USA.

Download references

Acknowledgements

This work is supported in part by a WSU New Faculty Seed Grant.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Xinghui Zhao.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Nguyen, T., Zhao, X. Performance tuning for actor programs through decoupled concurrency. Software Qual J 26, 1097–1117 (2018). https://doi.org/10.1007/s11219-017-9371-9

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11219-017-9371-9

Keywords