R. C. Cardoso, M. R. Zatelli, J. F. Hübner, Rafael Heitor Bordini
Over the past few years there have been several advances in distributed systems, and more recently multi-core processors. Consequently, a natural need for concurrent and parallel programming languages arises. In this paper, we compare some aspects of two concurrency models, Actors and Agents, using benchmarks to evaluate: (i) the communication performance on a concurrency-heavy scenario; (ii) the performance in a scenario with the presence of bottleneck and synchronization problems; and (iii) the reactivity and fairness of the models. We chose Jason, 2APL, and GOAL as the agent-oriented programming languages and Erlang, Akka, and ActorFoundry as the actor-oriented programming languages. Overall, Erlang displayed the best performance of all languages used in this comparison, followed by ActorFoundry, Akka, Jason, 2APL, and GOAL, in this particular order.
{"title":"Towards benchmarking actor- and agent-based programming languages","authors":"R. C. Cardoso, M. R. Zatelli, J. F. Hübner, Rafael Heitor Bordini","doi":"10.1145/2541329.2541339","DOIUrl":"https://doi.org/10.1145/2541329.2541339","url":null,"abstract":"Over the past few years there have been several advances in distributed systems, and more recently multi-core processors. Consequently, a natural need for concurrent and parallel programming languages arises. In this paper, we compare some aspects of two concurrency models, Actors and Agents, using benchmarks to evaluate: (i) the communication performance on a concurrency-heavy scenario; (ii) the performance in a scenario with the presence of bottleneck and synchronization problems; and (iii) the reactivity and fairness of the models. We chose Jason, 2APL, and GOAL as the agent-oriented programming languages and Erlang, Akka, and ActorFoundry as the actor-oriented programming languages. Overall, Erlang displayed the best performance of all languages used in this comparison, followed by ActorFoundry, Akka, Jason, 2APL, and GOAL, in this particular order.","PeriodicalId":287804,"journal":{"name":"Workshop on Programming based on Actors, Agents, and Decentralized Control","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127485985","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
The goal of this work is to establish a simple and flexible construction method for reflective concurrent systems. In this paper, a novel method to construct a meta-level architecture for a group of actors is presented. The key idea is to apply parallel composition to actors that constitute the meta-level of the group. This results in a uniform construction method for various types of meta-level actors. The benefits of the proposed method is illustrated by giving a solution to a synchronization problem in actor-based context-oriented programming.
{"title":"Towards a compositional reflective architecture for actor-based systems","authors":"Takuo Watanabe","doi":"10.1145/2541329.2541341","DOIUrl":"https://doi.org/10.1145/2541329.2541341","url":null,"abstract":"The goal of this work is to establish a simple and flexible construction method for reflective concurrent systems. In this paper, a novel method to construct a meta-level architecture for a group of actors is presented. The key idea is to apply parallel composition to actors that constitute the meta-level of the group. This results in a uniform construction method for various types of meta-level actors. The benefits of the proposed method is illustrated by giving a solution to a synchronization problem in actor-based context-oriented programming.","PeriodicalId":287804,"journal":{"name":"Workshop on Programming based on Actors, Agents, and Decentralized Control","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122261882","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Dominik Charousset, T. Schmidt, Raphael Hiesgen, Matthias Wählisch
Writing 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' paradigm. It applies to concurrency as well as distribution, but has not yet entered the native programming domain. This paper contributes the design of a native actor extension for C++, and the report on a software platform that implements our design for (a) concurrent, (b) distributed, and (c) heterogeneous hardware environments. GPGPU and embedded hardware components are integrated in a transparent way. Our software platform supports the development of scalable and efficient parallel software. It includes a lock-free mailbox algorithm with pattern matching facility for message processing. Thorough performance evaluations reveal an extraordinary small memory footprint in realistic application scenarios, while runtime performance not only outperforms existing mature actor implementations, but exceeds the scaling behavior of low-level message passing libraries such as OpenMPI.
{"title":"Native actors: a scalable software platform for distributed, heterogeneous environments","authors":"Dominik Charousset, T. Schmidt, Raphael Hiesgen, Matthias Wählisch","doi":"10.1145/2541329.2541336","DOIUrl":"https://doi.org/10.1145/2541329.2541336","url":null,"abstract":"Writing 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' paradigm. It applies to concurrency as well as distribution, but has not yet entered the native programming domain. This paper contributes the design of a native actor extension for C++, and the report on a software platform that implements our design for (a) concurrent, (b) distributed, and (c) heterogeneous hardware environments. GPGPU and embedded hardware components are integrated in a transparent way. Our software platform supports the development of scalable and efficient parallel software. It includes a lock-free mailbox algorithm with pattern matching facility for message processing. Thorough performance evaluations reveal an extraordinary small memory footprint in realistic application scenarios, while runtime performance not only outperforms existing mature actor implementations, but exceeds the scaling behavior of low-level message passing libraries such as OpenMPI.","PeriodicalId":287804,"journal":{"name":"Workshop on Programming based on Actors, Agents, and Decentralized Control","volume":"63 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134417321","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Janwillem Swalens, Thierry Renaux, L. Hoste, Stefan Marr, W. Meuter
Traffic monitoring or crowd management systems produce large amounts of data in the form of events that need to be processed to detect relevant incidents. Rule-based pattern recognition is a promising approach for these applications, however, increasing amounts of data as well as large and complex rule sets demand for more and more processing power and memory. In order to scale such applications, a rule-based pattern detection system needs to be distributable over multiple machines. Today's approaches are however focused on static distribution of rules or do not support reasoning over the full set of events. We propose Cloud PARTE, a complex event detection system that implements the Rete algorithm on top of mobile actors. These actors can migrate between machines to respond to changes in the work load distribution. Cloud PARTE is an extension of PARTE and offers the first rule engine specifically tailored for continuous complex event detection that is able to benefit from elastic systems as provided by cloud computing platforms. It supports fully automatic load balancing and supports online rules with access to the entire event pool.
{"title":"Cloud PARTE: elastic complex event processing based on mobile actors","authors":"Janwillem Swalens, Thierry Renaux, L. Hoste, Stefan Marr, W. Meuter","doi":"10.1145/2541329.2541338","DOIUrl":"https://doi.org/10.1145/2541329.2541338","url":null,"abstract":"Traffic monitoring or crowd management systems produce large amounts of data in the form of events that need to be processed to detect relevant incidents. Rule-based pattern recognition is a promising approach for these applications, however, increasing amounts of data as well as large and complex rule sets demand for more and more processing power and memory. In order to scale such applications, a rule-based pattern detection system needs to be distributable over multiple machines. Today's approaches are however focused on static distribution of rules or do not support reasoning over the full set of events. We propose Cloud PARTE, a complex event detection system that implements the Rete algorithm on top of mobile actors. These actors can migrate between machines to respond to changes in the work load distribution. Cloud PARTE is an extension of PARTE and offers the first rule engine specifically tailored for continuous complex event detection that is able to benefit from elastic systems as provided by cloud computing platforms. It supports fully automatic load balancing and supports online rules with access to the entire event pool.","PeriodicalId":287804,"journal":{"name":"Workshop on Programming based on Actors, Agents, and Decentralized Control","volume":"24 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114728206","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
A long-standing problem in concurrent object-oriented programming is finding a sound and effective way to integrate active entities - being them actors, active objects, processes - with plain passive objects. Even if the problem is quite old, this is still an open issue: different kinds of approaches have been proposed in literature - also recently - each bringing some benefits and drawbacks. In this paper we describe a proposal based on agent-oriented abstractions, called ALOO. ALOO can be conceived as a conservative extension of sequential OOP languages, so plain old objects, adopting agents and agent organizations as first-class abstractions to model the active side of systems, encapsulating the decentralized control. ALOO is an evolution of a previous model/language called simpAL - an agent-oriented programming approach - towards to concurrent object-oriented programming.
{"title":"Concurrent object-oriented programming with agent-oriented abstractions: the ALOO approach","authors":"A. Ricci, Andrea Santi","doi":"10.1145/2541329.2541333","DOIUrl":"https://doi.org/10.1145/2541329.2541333","url":null,"abstract":"A long-standing problem in concurrent object-oriented programming is finding a sound and effective way to integrate active entities - being them actors, active objects, processes - with plain passive objects. Even if the problem is quite old, this is still an open issue: different kinds of approaches have been proposed in literature - also recently - each bringing some benefits and drawbacks. In this paper we describe a proposal based on agent-oriented abstractions, called ALOO. ALOO can be conceived as a conservative extension of sequential OOP languages, so plain old objects, adopting agents and agent organizations as first-class abstractions to model the active side of systems, encapsulating the decentralized control. ALOO is an evolution of a previous model/language called simpAL - an agent-oriented programming approach - towards to concurrent object-oriented programming.","PeriodicalId":287804,"journal":{"name":"Workshop on Programming based on Actors, Agents, and Decentralized Control","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131650488","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
In this talk, we will describe the approach to concurrency in SIMULA 67, the very first object-oriented language and the further development of this in the Beta language. Active objects in the form of coroutines are an integral part of the design of SIMULA and Beta and provide a strong basis for defining high-level concurrency abstractions including schedulers for concurrent objects. In this sense, SIMULA was ahead of most concurrent object-oriented languages. Like Java, SIMULA and Beta have a serious weakness with respect to concurrency since it is not possible to check that concurrent processes access disjoint sets of variables only and do not interfere with each other in time-dependent ways. We present work on development of language mechanisms that make it possible to retain the flexibility of defining a wide class of safe high-level concurrency abstractions from low-level primitives.
{"title":"Back to the future: SIMULA style concurrent objects","authors":"O. Madsen","doi":"10.1145/2541329.2541347","DOIUrl":"https://doi.org/10.1145/2541329.2541347","url":null,"abstract":"In this talk, we will describe the approach to concurrency in SIMULA 67, the very first object-oriented language and the further development of this in the Beta language. Active objects in the form of coroutines are an integral part of the design of SIMULA and Beta and provide a strong basis for defining high-level concurrency abstractions including schedulers for concurrent objects. In this sense, SIMULA was ahead of most concurrent object-oriented languages.\u0000 Like Java, SIMULA and Beta have a serious weakness with respect to concurrency since it is not possible to check that concurrent processes access disjoint sets of variables only and do not interfere with each other in time-dependent ways.\u0000 We present work on development of language mechanisms that make it possible to retain the flexibility of defining a wide class of safe high-level concurrency abstractions from low-level primitives.","PeriodicalId":287804,"journal":{"name":"Workshop on Programming based on Actors, Agents, and Decentralized Control","volume":"152 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133994974","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
H. Kristinsson, Ali Jafari, E. Khamespanah, Brynjar Magnusson, M. Sirjani
Although timed actor-based models attracted more attention in the recent years, there is not much done on analyzing and model checking of such systems. The actor based language, Timed Rebeca, was introduced to model distributed and asynchronous systems with timing constraints, and a supporting tool was developed for automated translation of Timed Rebeca models to Erlang. The translated code can be executed using McErlang. In this paper, we propose extensions for Timed Rebeca language to improve the usability of the language. Designers can now develop models expressing more complex behaviors by calling Erlang custom functions and using lists. Moreover, to be able to use the new version of McErlang which supports timing constructs of Timed Rebeca we changed the mapping and the tool accordingly. This gives us the possibility of model checking and simulation of Timed Rebeca models for the first time. We can use the safety monitors in McErlang to verify safety properties in the model. Also, statistical methods are applied to the simulation results to reason about the system behavior. We examine the typical case study of elevators to show the applicability of our technique and tool.
{"title":"Analysing timed Rebeca using McErlang","authors":"H. Kristinsson, Ali Jafari, E. Khamespanah, Brynjar Magnusson, M. Sirjani","doi":"10.1145/2541329.2541335","DOIUrl":"https://doi.org/10.1145/2541329.2541335","url":null,"abstract":"Although timed actor-based models attracted more attention in the recent years, there is not much done on analyzing and model checking of such systems. The actor based language, Timed Rebeca, was introduced to model distributed and asynchronous systems with timing constraints, and a supporting tool was developed for automated translation of Timed Rebeca models to Erlang. The translated code can be executed using McErlang. In this paper, we propose extensions for Timed Rebeca language to improve the usability of the language. Designers can now develop models expressing more complex behaviors by calling Erlang custom functions and using lists. Moreover, to be able to use the new version of McErlang which supports timing constructs of Timed Rebeca we changed the mapping and the tool accordingly. This gives us the possibility of model checking and simulation of Timed Rebeca models for the first time. We can use the safety monitors in McErlang to verify safety properties in the model. Also, statistical methods are applied to the simulation results to reason about the system behavior. We examine the typical case study of elevators to show the applicability of our technique and tool.","PeriodicalId":287804,"journal":{"name":"Workshop on Programming based on Actors, Agents, and Decentralized Control","volume":"40 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2013-10-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133664141","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Applications running over decentralized systems, distribute their computation on nodes/agents, which exchange data and services through messages. In many cases, the provenance of the data or service is not relevant, and applications can be optimized by choosing the most efficient solution to obtain them. We introduce a framework which allows messages with intensional destination, which can be seen as restricted mobile agents, specifying the desired service but not the exact node that carries it, leaving to the system the task of evaluating the extensional destination, that is an explicit address for that service. The intensional destinations are defined using queries that are evaluated by other agents while routing. We introduce the Questlog language, which allows to reformulate queries, and express complex strategies to pull distributed data. In addition, intensional addresses offer persistency to dynamic systems with nodes/agents leaving the system. We demonstrate the approach with examples taken from sensor networks, and show some experimental results on the QuestMonitor platform.
{"title":"Messages with implicit destinations as mobile agents","authors":"A. Ahmad-Kassem, S. Grumbach, S. Ubéda","doi":"10.1145/2414639.2414652","DOIUrl":"https://doi.org/10.1145/2414639.2414652","url":null,"abstract":"Applications running over decentralized systems, distribute their computation on nodes/agents, which exchange data and services through messages. In many cases, the provenance of the data or service is not relevant, and applications can be optimized by choosing the most efficient solution to obtain them. We introduce a framework which allows messages with intensional destination, which can be seen as restricted mobile agents, specifying the desired service but not the exact node that carries it, leaving to the system the task of evaluating the extensional destination, that is an explicit address for that service. The intensional destinations are defined using queries that are evaluated by other agents while routing. We introduce the Questlog language, which allows to reformulate queries, and express complex strategies to pull distributed data. In addition, intensional addresses offer persistency to dynamic systems with nodes/agents leaving the system. We demonstrate the approach with examples taken from sensor networks, and show some experimental results on the QuestMonitor platform.","PeriodicalId":287804,"journal":{"name":"Workshop on Programming based on Actors, Agents, and Decentralized Control","volume":"154 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-10-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123996717","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Using high level coordination primitives allows enhanced expressiveness of component-based frameworks to cope with the inherent complexity of present-day systems designs. Nonetheless, their distributed implementation raises multiple issues, regarding both the correctness and the runtime performance of the final implementation. We propose a novel approach for distributed implementation of multiparty interactions subject to scheduling constraints expressed by priorities. We rely on new composition operators and semantics that combine multiparty interactions with observation. We show that this model provides a natural encoding for priorities and moreover, can be used as an intermediate step towards provably correct and optimized distributed implementations.
{"title":"Optimized distributed implementation of multiparty interactions with observation","authors":"S. Bensalem, M. Bozga, J. Quilbeuf, J. Sifakis","doi":"10.1145/2414639.2414649","DOIUrl":"https://doi.org/10.1145/2414639.2414649","url":null,"abstract":"Using high level coordination primitives allows enhanced expressiveness of component-based frameworks to cope with the inherent complexity of present-day systems designs. Nonetheless, their distributed implementation raises multiple issues, regarding both the correctness and the runtime performance of the final implementation. We propose a novel approach for distributed implementation of multiparty interactions subject to scheduling constraints expressed by priorities. We rely on new composition operators and semantics that combine multiparty interactions with observation. We show that this model provides a natural encoding for priorities and moreover, can be used as an intermediate step towards provably correct and optimized distributed implementations.","PeriodicalId":287804,"journal":{"name":"Workshop on Programming based on Actors, Agents, and Decentralized Control","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-10-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127955884","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
The integration of autonomous and reactive behavior is a relevant problem in the context of concurrent programming, related to the integration of thread-based and event-driven programming. From a programming paradigm perspective, the problem can not be easily solved by approaches based on object-oriented concurrent programming or by the actor model, being them natively based on the reactivity principle only. In this paper we tackle the problem with agent-oriented programming, using an agent-oriented programming language called simpAL.
{"title":"Programming abstractions for integrating autonomous and reactive behaviors: an agent-oriented approach","authors":"A. Ricci, Andrea Santi","doi":"10.1145/2414639.2414650","DOIUrl":"https://doi.org/10.1145/2414639.2414650","url":null,"abstract":"The integration of autonomous and reactive behavior is a relevant problem in the context of concurrent programming, related to the integration of thread-based and event-driven programming. From a programming paradigm perspective, the problem can not be easily solved by approaches based on object-oriented concurrent programming or by the actor model, being them natively based on the reactivity principle only. In this paper we tackle the problem with agent-oriented programming, using an agent-oriented programming language called simpAL.","PeriodicalId":287804,"journal":{"name":"Workshop on Programming based on Actors, Agents, and Decentralized Control","volume":"28 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-10-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129217350","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}