Event-loops and control-loops are the main control architectures adopted in actors and in agents, respectively. These architectures have a strong impact on the principles and discipline that can be adopted to design and program actors and agents. In this paper we develop this point, considering some main models/languages/technologies - ActorFoundry, Akka Actors, SALSA, AmbientTalk on the actor side and Jason and ALOO on the agent side - discussing and comparing them.
{"title":"From Actor Event-Loop to Agent Control-Loop: Impact on Programming","authors":"A. Ricci","doi":"10.1145/2687357.2687361","DOIUrl":"https://doi.org/10.1145/2687357.2687361","url":null,"abstract":"Event-loops and control-loops are the main control architectures adopted in actors and in agents, respectively. These architectures have a strong impact on the principles and discipline that can be adopted to design and program actors and agents. In this paper we develop this point, considering some main models/languages/technologies - ActorFoundry, Akka Actors, SALSA, AmbientTalk on the actor side and Jason and ALOO on the agent side - discussing and comparing them.","PeriodicalId":436138,"journal":{"name":"Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131292730","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}
Behavioral programming (BP) is a decentralized scenario-based paradigm for the programming of reactive software, geared towards incremental and intuitive development. In this work we apply the principles of BP to a large, real-world case-study: a web-server. We discuss the conclusions learned from our attempt and propose several extension idioms to BP, aimed at improving the framework's scalability. Specifically, we propose extending BP with a timeout idiom for handling various time constraints, program-specific execution strategies, dynamic thread creation for efficiently allocating system resources, and support for parameterized events to handle inputs with infinite domains. Our extensions and case-study are implemented in a new framework for behavioral programming in C++.
{"title":"Scaling-Up Behavioral Programming: Steps from Basic Principles to Application Architectures","authors":"D. Harel, Guy Katz","doi":"10.1145/2687357.2687359","DOIUrl":"https://doi.org/10.1145/2687357.2687359","url":null,"abstract":"Behavioral programming (BP) is a decentralized scenario-based paradigm for the programming of reactive software, geared towards incremental and intuitive development. In this work we apply the principles of BP to a large, real-world case-study: a web-server. We discuss the conclusions learned from our attempt and propose several extension idioms to BP, aimed at improving the framework's scalability. Specifically, we propose extending BP with a timeout idiom for handling various time constraints, program-specific execution strategies, dynamic thread creation for efficiently allocating system resources, and support for parameterized events to handle inputs with infinite domains. Our extensions and case-study are implemented in a new framework for behavioral programming in C++.","PeriodicalId":436138,"journal":{"name":"Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control","volume":"1991 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125521417","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}
Non-Polynomial time complexity of model checking algorithms for TCTL properties in dense time is one of the obstacles against using model checking for timed systems. Alternatively, polynomial time algorithms are suggested for model checking discrete time models presented as Duration Time Graphs (DTG) versus a subset of TCTL formula (TCTL≤,≥). While TCTL≤,≥ can be model checked in polynomial time, the problem of model checking for exact time condition (TCTL=) is an NP-Hard problem unless certain conditions hold. In this work we tackle model checking of timed actors using DTG. At the first step, we propose a reduction technique by folding all the instantaneous transitions, resulting folded timed transition system (FTS). At the second step, we show how the FTS of timed actors with discrete time can be mapped to a DTG. Then, we show when the necessary conditions hold for the FTS of timed actors and hence there is an O(|S|2 • Φ) algorithm for model checking of complete TCTL properties (including TCTL≤,≥ and TCTL=) which have small constant time quantifiers. We use a set of case studies to illustrate the impact of using this technique in different application domains.
{"title":"Efficient TCTL Model Checking Algorithm for Timed Actors","authors":"E. Khamespanah, R. Khosravi, M. Sirjani","doi":"10.1145/2687357.2687366","DOIUrl":"https://doi.org/10.1145/2687357.2687366","url":null,"abstract":"Non-Polynomial time complexity of model checking algorithms for TCTL properties in dense time is one of the obstacles against using model checking for timed systems. Alternatively, polynomial time algorithms are suggested for model checking discrete time models presented as Duration Time Graphs (DTG) versus a subset of TCTL formula (TCTL≤,≥). While TCTL≤,≥ can be model checked in polynomial time, the problem of model checking for exact time condition (TCTL=) is an NP-Hard problem unless certain conditions hold. In this work we tackle model checking of timed actors using DTG. At the first step, we propose a reduction technique by folding all the instantaneous transitions, resulting folded timed transition system (FTS). At the second step, we show how the FTS of timed actors with discrete time can be mapped to a DTG. Then, we show when the necessary conditions hold for the FTS of timed actors and hence there is an O(|S|2 • Φ) algorithm for model checking of complete TCTL properties (including TCTL≤,≥ and TCTL=) which have small constant time quantifiers. We use a set of case studies to illustrate the impact of using this technique in different application domains.","PeriodicalId":436138,"journal":{"name":"Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124024061","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}
Agent-Oriented Programming (AOP) is a high-level pro-gramming paradigm for implementing intelligent distrib-uted systems. While a number of AOP languages have been proposed in the literature, many of them focus on the provision of support for intelligent decision making rather than addressing language design concerns such modularity and reuse. To address this imbalance, this paper presents an abstract model of multiple inheritance for AgentSpeak(L) style languages which decomposes agent programs into a set of inter-related agent classes and defines a run-time apparatus for rule selection on the relationship between those classes. To demonstrate our approach, a case study is presented that introduces a new AgentSpeak(L)-based language entitled ASTRA and its use in an illustrative implementation of an agent-based chat system is then presented.
{"title":"Multiple Inheritance in AgentSpeak(L)-Style Programming Languages","authors":"Akshat Dhaon, Rem W. Collier","doi":"10.1145/2687357.2687362","DOIUrl":"https://doi.org/10.1145/2687357.2687362","url":null,"abstract":"Agent-Oriented Programming (AOP) is a high-level pro-gramming paradigm for implementing intelligent distrib-uted systems. While a number of AOP languages have been proposed in the literature, many of them focus on the provision of support for intelligent decision making rather than addressing language design concerns such modularity and reuse. To address this imbalance, this paper presents an abstract model of multiple inheritance for AgentSpeak(L) style languages which decomposes agent programs into a set of inter-related agent classes and defines a run-time apparatus for rule selection on the relationship between those classes. To demonstrate our approach, a case study is presented that introduces a new AgentSpeak(L)-based language entitled ASTRA and its use in an illustrative implementation of an agent-based chat system is then presented.","PeriodicalId":436138,"journal":{"name":"Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control","volume":"82 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117127146","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 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.
{"title":"CAF - the C++ Actor Framework for Scalable and Resource-Efficient Applications","authors":"Dominik Charousset, Raphael Hiesgen, T. Schmidt","doi":"10.1145/2687357.2687363","DOIUrl":"https://doi.org/10.1145/2687357.2687363","url":null,"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.","PeriodicalId":436138,"journal":{"name":"Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114671044","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}
Brynjar Magnusson, E. Khamespanah, R. Khosravi, M. Sirjani
In this paper, we present a simulation-based approach for analysis of Timed Rebeca models to tackle the state space explosion problem. We present a simulation toolkit, TRSim, which uses McErlang as a back-end simulator and stores the occurrences of events while executing the model in a relational database. We also present TeProp, a timed event-based property language, which is designed to be easy-to-use for specifying and reasoning about timed occurrences of events in an actor system. One can check TeProp formulas against multiple simulation runs by transforming the formulas to SQL queries and executing the queries over the event database. Using this approach, the correctness of large models can be analyzed to a bounded degree of confidence. To illustrate the applicability of TRSim toolkit and TeProp we provide a number of case studies.
{"title":"Event-Based Analysis of Timed Rebeca Models using SQL","authors":"Brynjar Magnusson, E. Khamespanah, R. Khosravi, M. Sirjani","doi":"10.1145/2687357.2687365","DOIUrl":"https://doi.org/10.1145/2687357.2687365","url":null,"abstract":"In this paper, we present a simulation-based approach for analysis of Timed Rebeca models to tackle the state space explosion problem. We present a simulation toolkit, TRSim, which uses McErlang as a back-end simulator and stores the occurrences of events while executing the model in a relational database. We also present TeProp, a timed event-based property language, which is designed to be easy-to-use for specifying and reasoning about timed occurrences of events in an actor system. One can check TeProp formulas against multiple simulation runs by transforming the formulas to SQL queries and executing the queries over the event database. Using this approach, the correctness of large models can be analyzed to a bounded degree of confidence. To illustrate the applicability of TRSim toolkit and TeProp we provide a number of case studies.","PeriodicalId":436138,"journal":{"name":"Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control","volume":"6 1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115091003","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}
This paper introduces the Savina benchmark suite for actor-oriented programs. Our goal is to provide a standard benchmark suite that enables researchers and application developers to compare different actor implementations and identify those that deliver the best performance for a given use-case. The benchmarks in Savina are diverse, realistic, and represent compute (rather than I/O) intensive applications. They range from popular micro-benchmarks to classical concurrency problems to applications that demonstrate various styles of parallelism. Implementations of the benchmarks on various actor libraries are made publicly available through an open source release. This will allow other developers and researchers to compare the performance of their actor libraries on these common set of benchmarks.
{"title":"Savina - An Actor Benchmark Suite: Enabling Empirical Evaluation of Actor Libraries","authors":"S. Imam, Vivek Sarkar","doi":"10.1145/2687357.2687368","DOIUrl":"https://doi.org/10.1145/2687357.2687368","url":null,"abstract":"This paper introduces the Savina benchmark suite for actor-oriented programs. Our goal is to provide a standard benchmark suite that enables researchers and application developers to compare different actor implementations and identify those that deliver the best performance for a given use-case. The benchmarks in Savina are diverse, realistic, and represent compute (rather than I/O) intensive applications. They range from popular micro-benchmarks to classical concurrency problems to applications that demonstrate various styles of parallelism. Implementations of the benchmarks on various actor libraries are made publicly available through an open source release. This will allow other developers and researchers to compare the performance of their actor libraries on these common set of benchmarks.","PeriodicalId":436138,"journal":{"name":"Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control","volume":"68 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124589279","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 transactor model, an extension to the actor model, specifies an operational semantics to model concurrent systems with globally consistent distributed state. The semantics formalizes tracks dependencies among loosely coupled distributed components to ensure fault tolerance through a two-phase commit protocol and to issue rollbacks in the presence of failures or state inconsistency. In this paper, we introduce the design of a transactor language as an extension of an existing actor language and highlight the capabilities of this programming model. We developed our transactor language using SALSA, an actor language developed as a dialect of Java. We first develop a basic transactor SALSA/Java library, which implements the fundamental semantics of the transactor model following the operational semantics' transition rules. We then illustrate two example programs written using this library. Furthermore, we introduce a state storage abstraction known as the Uniform Storage Locator following the Universal Actor Name and Universal Actor Locator abstractions from SALSA that uses a storage service to maintain checkpointed transactor states. The transactor model guarantees safety but not progress. Therefore, to help develop realistic transactor programs that make progress, we introduce the Consistent Distributed State Protocol and Ping Director that improve upon the Universal Checkpointing Protocol to aid transactor programs in reaching globally consistent distributed states.
事务处理者模型是参与者模型的扩展,它指定了一个操作语义,用于对具有全局一致分布式状态的并发系统进行建模。语义将松散耦合的分布式组件之间的跟踪依赖形式化,以通过两阶段提交协议确保容错,并在出现故障或状态不一致时发出回滚。在本文中,我们介绍了作为现有参与者语言的扩展的事务处理者语言的设计,并强调了该编程模型的功能。我们使用SALSA(作为Java方言开发的一种actor语言)开发了我们的事务处理语言。我们首先开发一个基本的事务处理程序SALSA/Java库,它按照操作语义的转换规则实现事务处理程序模型的基本语义。然后,我们将演示使用该库编写的两个示例程序。此外,我们将引入一种状态存储抽象,称为统一存储定位器,它遵循SALSA的通用参与者名称和通用参与者定位器抽象,使用存储服务来维护检查点事务处理者状态。事务处理器模型保证了安全,但不能保证进度。因此,为了帮助开发能够取得进展的实际事务处理程序,我们引入了一致分布式状态协议(Consistent Distributed State Protocol)和Ping Director,它们改进了通用检查点协议(Universal checkpoint Protocol),以帮助事务处理程序达到全球一致的分布式状态。
{"title":"Fault Tolerant Distributed Computing Using Asynchronous Local Checkpointing","authors":"Phillip Kuang, J. Field, Carlos A. Varela","doi":"10.1145/2687357.2687364","DOIUrl":"https://doi.org/10.1145/2687357.2687364","url":null,"abstract":"The transactor model, an extension to the actor model, specifies an operational semantics to model concurrent systems with globally consistent distributed state. The semantics formalizes tracks dependencies among loosely coupled distributed components to ensure fault tolerance through a two-phase commit protocol and to issue rollbacks in the presence of failures or state inconsistency. In this paper, we introduce the design of a transactor language as an extension of an existing actor language and highlight the capabilities of this programming model. We developed our transactor language using SALSA, an actor language developed as a dialect of Java. We first develop a basic transactor SALSA/Java library, which implements the fundamental semantics of the transactor model following the operational semantics' transition rules. We then illustrate two example programs written using this library. Furthermore, we introduce a state storage abstraction known as the Uniform Storage Locator following the Universal Actor Name and Universal Actor Locator abstractions from SALSA that uses a storage service to maintain checkpointed transactor states. The transactor model guarantees safety but not progress. Therefore, to help develop realistic transactor programs that make progress, we introduce the Consistent Distributed State Protocol and Ping Director that improve upon the Universal Checkpointing Protocol to aid transactor programs in reaching globally consistent distributed states.","PeriodicalId":436138,"journal":{"name":"Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control","volume":"352 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122644778","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}
Actor frameworks running on Java Virtual Machine (JVM) platform face two main challenges in utilizing multi-core architectures, i) efficiently mapping actors to JVM threads, and ii) scheduling JVM threads on multi-core. JVM-based actor frameworks allow fine tuning of actors to threads mapping, however scheduling of threads on multi-core is left to the OS scheduler. Hence, efficiently mapping actors to threads is critical for achieving good performance and scalability. In the existing JVM-based actor frameworks, programmers select default actors to threads mappings and iteratively fine tune the mappings until the desired performance is achieved. This process is tedious and time consuming when building large scale distributed applications. We propose a technique that automatically maps actors to JVM threads. Our technique is based on a set of heuristics with the goal of balancing actors computations across JVM threads and reducing communication overheads. We explain our technique in the context of the Panini programming language, which provides capsules as an actor-like abstraction for concurrency, but also explore its applicability to other approaches.
{"title":"An Automatic Actors to Threads Mapping Technique for JVM-Based Actor Frameworks","authors":"Ganesha Upadhyaya, Hridesh Rajan","doi":"10.1145/2687357.2687367","DOIUrl":"https://doi.org/10.1145/2687357.2687367","url":null,"abstract":"Actor frameworks running on Java Virtual Machine (JVM) platform face two main challenges in utilizing multi-core architectures, i) efficiently mapping actors to JVM threads, and ii) scheduling JVM threads on multi-core. JVM-based actor frameworks allow fine tuning of actors to threads mapping, however scheduling of threads on multi-core is left to the OS scheduler. Hence, efficiently mapping actors to threads is critical for achieving good performance and scalability. In the existing JVM-based actor frameworks, programmers select default actors to threads mappings and iteratively fine tune the mappings until the desired performance is achieved. This process is tedious and time consuming when building large scale distributed applications. We propose a technique that automatically maps actors to JVM threads. Our technique is based on a set of heuristics with the goal of balancing actors computations across JVM threads and reducing communication overheads. We explain our technique in the context of the Panini programming language, which provides capsules as an actor-like abstraction for concurrency, but also explore its applicability to other approaches.","PeriodicalId":436138,"journal":{"name":"Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-10-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125011803","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}
{"title":"Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control","authors":"","doi":"10.1145/2687357","DOIUrl":"https://doi.org/10.1145/2687357","url":null,"abstract":"","PeriodicalId":436138,"journal":{"name":"Proceedings of the 4th International Workshop on Programming based on Actors Agents & Decentralized Control","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130229419","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}