ABSTRACT
The actor model of computation has gained significant popularity over the last decade. Its high level of abstraction combined with its flexibility and efficiency makes it appealing for large applications in concurrent and distributed regimes.
In this paper, we report on our work of designing and building CAF, the "C++ Actor Framework". CAF targets at providing an extremely scalable native environment for building high-performance concurrent applications and distributed systems. Based on our previous library tt libcppa, CAF significantly extends its scopes of application and operation, as well as the range of scalability. The particular contributions of this paper are threefold. First we present the design and implementation of a type-safe messaging interface for actors that rules out a category of runtime errors and facilitates robust software design. Second we introduce a runtime inspection shell as a first building block for convenient debugging of distributed actors. Finally we enhance the scheduling facilities and improve scaling up to high numbers of concurrent processors. Extensive performance evaluations indicate ideal runtime behaviour for up to 64 cores at very low memory footprint. In these tests, CAF clearly outperforms competing actor environments.
- G. Agha. Actors: A Model Of Concurrent Computation In Distributed Systems. Technical Report 844, MIT, Cambridge, MA, USA, 1986. Google Scholar
- G. Agha and W. Kim. Parallel programming and complexity analysis using actors. In Massively Parallel Programming Models, 1997. Proceedings. Third Working Conference on, pages 68--79, Nov 1997. Google ScholarDigital Library
- G. Agha, I. A. Mason, S. Smith, and C. Talcott. Towards a Theory of Actor Computation. In Proceedings of CONCUR, volume 630 of LNCS, pages 565--579, Heidelberg, 1992. Springer-Verlag. Google ScholarDigital Library
- J. Armstrong. Erlang - A Survey of the Language and its Industrial Applications. In Proceedings of the symposium on industrial applications of Prolog (INAP96), pages 16--18. Hino, October 1996.Google Scholar
- J. Armstrong. Making Reliable Distributed Systems in the Presence of Software Errors. PhD thesis, Department of Microelectronics and Information Technology, KTH, Sweden, 2003.Google Scholar
- T. Arts, J. Hughes, J. Johansson, and U. Wiger. Testing telecoms software with quviq quickcheck. In Proceedings of the 2006 ACM SIGPLAN Workshop on Erlang, ERLANG'06, pages 2--10, New York, NY, USA, 2006. ACM. ISBN 1--59593--490--1. Google ScholarDigital Library
- E. Baccelli, O. Hahm, M. Gunes, M. Wahlisch, and T. C. Schmidt. RIOT OS: Towards an OS for the Internet of Things. In Proc. of the 32nd IEEE INFOCOM. Poster, Piscataway, NJ, USA, 2013. IEEE Press.Google ScholarCross Ref
- H. Barringer, A. Goldberg, K. Havelund, and K. Sen. Rulebased Runtime Verification. In Verification, Model Checking, and Abstract Interpretation, pages 44--57. Springer, 2004.Google ScholarCross Ref
- R. D. Blumofe and C. E. Leiserson. Scheduling Multithreaded Computations by Work Stealing. J. ACM, 46(5):720--748, Sept. 1999. Google ScholarDigital Library
- D. Charousset, T. C. Schmidt, R. Hiesgen, and M. Wählisch. Native Actors -- A Scalable Software Platform for Distributed, Heterogeneous Environments. In Proc. of the 4rd ACM SIGPLAN Conference on Systems, Programming, and Applications (SPLASH'13), Workshop AGERE!, New York, NY, USA, Oct. 2013. ACM. Google ScholarDigital Library
- M. Dertouzos and A. Mok. Multiprocessor Online Scheduling of Hard-Real-Time Tasks. Software Engineering, IEEE Transactions on, 15(12):1497--1506, Dec 1989. ISSN 0098- 5589. Google ScholarDigital Library
- T. Desell and C. A. Varela. SALSA Lite: A Hash-Based Actor Runtime for Efficient Local Concurrency. In G. Agha, A. Igarashi, N. Kobayashi, H. Masuhara, S. Matsuoka, E. Shibayama, and K. Taura, editors, Concurrent Objects and Beyond, volume 8665 of Lecture Notes in Computer Science, pages 144--166. Springer Berlin Heidelberg, 2014. ISBN 978- 3--662--44470--2.Google ScholarCross Ref
- D. M. Geels, G. Altekar, S. Shenker, and I. Stoica. Replay debugging for distributed applications. In Proc. of USENIX'06 Ann. Tech. Conf., pages 289--300. USENIX Assoc., 2006. Google ScholarDigital Library
- M. Herlihy. Wait-Free Synchronization. ACM Trans. Program. Lang. Syst., 13(1):124--149, Jan. 1991. Google ScholarDigital Library
- M. Herlihy and J. E. B. Moss. Transactional Memory: Architectural Support for Lock-Free Data Structures. In Proceedings of the 20th ISCA, pages 289--300, New York, NY, USA, May 1993. ACM. Google ScholarDigital Library
- C. Hewitt, P. Bishop, and R. Steiger. A Universal Modular ACTOR Formalism for Artificial Intelligence. In Proceedings of the 3rd IJCAI, pages 235--245, San Francisco, CA, USA, 1973. Morgan Kaufmann Publishers Inc. Google ScholarDigital Library
- R. Hiesgen, D. Charousset, and T. C. Schmidt. Embedded Actors -- Towards Distributed Programming in the IoT. In Proc. of the 4th IEEE Int. Conf. on Consumer Electronics - Berlin, ICCE-Berlin'14, pages 371--375, Piscataway, NJ, USA, Sep. 2014. IEEE Press. ISBN 978--1--4799--6165--8.Google ScholarCross Ref
- S. Imam and V. Sarkar. Savina -- An Actor Benchmark Suite. In Proc. of the 5th ACM SIGPLAN Conf. on Systems, Programming, and Applications (SPLASH '14), Workshop AGERE!, New York, NY, USA, Oct. 2014. ACM. Google ScholarDigital Library
- L. V. Kale and S. Krishnan. Charm++: Parallel programming with message-driven objects. Parallel Programming using C++, pages 175--213, 1996.Google Scholar
- R. K. Karmani, A. Shali, and G. Agha. Actor Frameworks for the JVM Platform: A Comparative Analysis. In PPPJ, pages 11--20, 2009. Google ScholarDigital Library
- L. B. Kish. End of Moore's law: Thermal (Noise) Death of Integration in Micro and Nano Electronics. Physics Letters A, 305(3-4):144--149, 2002. ISSN 0375--9601.Google Scholar
- V. Kumar, D. Frampton, S. M. Blackburn, D. Grove, and O. Tardieu. Work-stealing Without the Baggage. In Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA'12, pages 297--314, New York, NY, USA, 2012. ACM. ISBN 978--1--4503--1561--6. Google ScholarDigital Library
- D. Lea. A Java Fork/Join Framework. In Proceedings of the ACM 2000 Conference on Java Grande, JAVA'00, pages 36--43, New York, NY, USA, 2000. ACM. ISBN 1--58113--288--3. Google ScholarDigital Library
- C. L. Liu and J. W. Layland. Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment. J. ACM, 20(1):46--61, Jan. 1973. ISSN 0004--5411. Google ScholarDigital Library
- S. Meyers and A. Alexandrescu. C++ and the Perils of Double-Checked Locking. Dr. Dobb's Journal, July 2004.Google Scholar
- Microsoft. Casablanca. http://casablanca.codeplex.com/, 2012.Google Scholar
- K. Sen, A. Vardhan, G. Agha, and G. Rosu. Efficient Decentralized Monitoring of Safety in Distributed Systems. In Proceedings of the 26th International Conference on Software Engineering, ICSE'04, pages 418--427, Washington, DC, USA, 2004. IEEE Computer Society. ISBN 0--7695--2163-0. Google ScholarDigital Library
- N. Shavit and D. Touitou. Software Transactional Memory. In Proceedings of the fourteenth annual ACM symposium on PODC, pages 204--213, New York, NY, USA, 1995. ACM. Google ScholarDigital Library
- S. Srinivasan and A. Mycroft. Kilim: Isolation-Typed Actors for Java. In Proceedings of the 22nd ECOOP, volume 5142 of LNCS, pages 104--128, Berlin, Heidelberg, 2008. Springer- Verlag. Google ScholarDigital Library
- T. Stanley, T. Close, and M. S. Miller. Causeway: A messageoriented distributed debugger. Technical Report HPL-2009- 78, HP Laboratories, 2009.Google Scholar
- J. Torrellas, H. S. Lam, and J. L. Hennessy. False Sharing and Spatial Locality in Multiprocessor Caches. IEEE Trans. Comput., 43(6):651--663, June 1994. Google ScholarDigital Library
- Typesafe Inc. Akka. akka.io, March 2012.Google Scholar
- M. Vallentin, D. Charousset, T. C. Schmidt, V. Paxson, and M. Wahlisch. Native Actors: How to Scale Network Forensics. In Proc. of ACM SIGCOMM, Demo Session, pages 141--142, New York, August 2014. ACM. URL http://dx.doi.org/10.1145/2619239.26314714. Google ScholarDigital Library
- T. Veldhuizen. Expression Templates. C++ Report, 7:26--31, 1995.Google Scholar
Index Terms
- CAF - the C++ Actor Framework for Scalable and Resource-Efficient Applications
Recommendations
Manyfold actors: extending the C++ actor framework to heterogeneous many-core machines using OpenCL
AGERE! 2015: Proceedings of the 5th International Workshop on Programming Based on Actors, Agents, and Decentralized ControlThe processing power of modern many core hardware such as graphics processing units (GPUs) or coprocessors is increasingly available for general-purpose computation. The seamless way of actor systems to addresses concurrent and distributed programming ...
Native actors: a scalable software platform for distributed, heterogeneous environments
AGERE! 2013: Proceedings of the 2013 workshop on Programming based on actors, agents, and decentralized controlWriting concurrent software is challenging, especially with low-level synchronization primitives such as threads or locks in shared memory environments. The actor model replaces implicit communication by an explicit message passing in a 'hared-nothing' ...
Revisiting actor programming in C++
The actor model of computation has gained significant popularity over the last decade. Its high level of abstraction makes it appealing for concurrent applications in parallel and distributed systems. However, designing a real-world actor framework that ...
Comments