Improving the Performance of Actor-Based Programs Using a New Actor to Thread Association Technique
Finding the most efficient policy for the association of objects with threads is one of the main challenges in the deployment of concurrently executing objects, including actors. For the case of actor-based programs, libraries, frameworks, and languages provide fine tuning facilities for associating actors with threads. In practice, programmers use the default policy for the initial deployment of actors and the default policy is replaced with some other policies considering runtime behaviors of actors. Although this ad-hoc approach is widely used by programmers, it is tedious and time-consuming for large-scale applications. To reduce the time-consumption of the ad-hoc approach, a set of heuristics is proposed with the aim of balancing computations of actors across threads. This technique results in performance improvement; however, it relies on the static analysis of source codes and actors’ behaviors, ends in the inappropriate configuration of systems in distributed environments. In this paper, we illustrate conditions that the proposed heuristics do not work well and propose a new approach based on the runtime profile of actors for better association of actors with threads. We also show how this approach can be extended to a fully self-adaptive approach and illustrated its applicability using a set of case studies.
KeywordsActors Thread association Self-adaptive algorithm Runtime analysis
The work on this paper has been supported in part by the project “Self-Adaptive Actors: SEADA” (nr. 163205-051) of the Icelandic Research Fund.
- 1.Agha, G.A.: ACTORS - A Model of Concurrent Computation in Distributed Systems. MIT Press Series in Artificial Intelligence. MIT Press, Cambridge (1990)Google Scholar
- 2.Hewitt, C.: Description and Theoretical Analysis (Using Schemata) of PLANNER: A Language for Proving Theorems and Manipulating Models in a Robot. MIT Artificial Intelligence Technical Report 258, Department of Computer Science, MIT, April 1972Google Scholar
- 3.Lieberman, H.: Thinking about lots of things at once without getting confused: parallelism in act i. Technical report, DTIC Document (1981)Google Scholar
- 4.Woelk, D.: Developing infosleuth agents using rosette: an actor based language. In: Intelligent Information Agents Workshop, CIKM 1995, pp. 1–2 (1995)Google Scholar
- 7.Lightbend Inc.: Akka. http://akka.io
- 8.Francesquini, E., Goldman, A., Méhaut, J.: Actor scheduling for multicore hierarchical memory platforms. In: Vinoski, S., Castro, L.M. (eds.) Proceedings of the Twelfth ACM SIGPLAN Erlang Workshop, Boston, Massachusetts, USA, 28 September 2013, pp. 51–62. ACM (2013)Google Scholar
- 11.Upadhyaya, G., Rajan, H.: An automatic actors to threads mapping technique for JVM-based actor frameworks. In: Boix, E.G., Haller, P., Ricci, A., Varela, C. (eds.) Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control, AGERE! 2014, Portland, OR, USA, 20 October 2014, pp. 29–41. ACM (2014)Google Scholar
- 12.Rajan, H.: Capsule-oriented programming. In: ICSE, vol. 2, pp. 611–614. IEEE Computer Society (2015)Google Scholar
- 13.Vernon, V.: Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka, 1st edn. Addison-Wesley Professional, Boston (2015)Google Scholar
- 15.White, T.: Hadoop - The Definitive Guide: Storage and Analysis at Internet Scale, 3rd edn., Revised and Updated. O’Reilly, Sebastopol (2012)Google Scholar