Peter A. Buhr, Colby A. Parsons, Thierry Delisle, He Nan Li
{"title":"高性能扩展演员","authors":"Peter A. Buhr, Colby A. Parsons, Thierry Delisle, He Nan Li","doi":"10.1002/spe.3262","DOIUrl":null,"url":null,"abstract":"Abstract Actors are a popular mechanism for indirectly expressing concurrency. This article examines an implementation in the concurrent dialect of C ++, C ++, which runs actors on shared‐memory multi‐processor computers. The C ++ actor system targets 32–256+ multi‐core shared‐memory computers that form the backbone of high‐performance computing, rather than distributed actor communication or robust execution via parentage fallback used by other actor systems. Five new mechanisms are presented to achieve expressibility, robustness, high performance, and scalability of actor applications across multiple cores: explicit life time (storage management) of actors and messages, combining actors and coroutines, a forward message‐trace and backward message‐return for debugging and failures, a new promise call‐back for ask sends, and an actor implementation that inverts the actor execution‐model by decoupling actor mailboxes with high levels of sharding. Microbenchmarks compare the new actor features with CAF, Protoactor, and classic and typed Akka.","PeriodicalId":21899,"journal":{"name":"Software: Practice and Experience","volume":"292 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2023-09-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"High‐performance extended actors\",\"authors\":\"Peter A. Buhr, Colby A. Parsons, Thierry Delisle, He Nan Li\",\"doi\":\"10.1002/spe.3262\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Abstract Actors are a popular mechanism for indirectly expressing concurrency. This article examines an implementation in the concurrent dialect of C ++, C ++, which runs actors on shared‐memory multi‐processor computers. The C ++ actor system targets 32–256+ multi‐core shared‐memory computers that form the backbone of high‐performance computing, rather than distributed actor communication or robust execution via parentage fallback used by other actor systems. Five new mechanisms are presented to achieve expressibility, robustness, high performance, and scalability of actor applications across multiple cores: explicit life time (storage management) of actors and messages, combining actors and coroutines, a forward message‐trace and backward message‐return for debugging and failures, a new promise call‐back for ask sends, and an actor implementation that inverts the actor execution‐model by decoupling actor mailboxes with high levels of sharding. Microbenchmarks compare the new actor features with CAF, Protoactor, and classic and typed Akka.\",\"PeriodicalId\":21899,\"journal\":{\"name\":\"Software: Practice and Experience\",\"volume\":\"292 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2023-09-16\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Software: Practice and Experience\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1002/spe.3262\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Software: Practice and Experience","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1002/spe.3262","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Abstract Actors are a popular mechanism for indirectly expressing concurrency. This article examines an implementation in the concurrent dialect of C ++, C ++, which runs actors on shared‐memory multi‐processor computers. The C ++ actor system targets 32–256+ multi‐core shared‐memory computers that form the backbone of high‐performance computing, rather than distributed actor communication or robust execution via parentage fallback used by other actor systems. Five new mechanisms are presented to achieve expressibility, robustness, high performance, and scalability of actor applications across multiple cores: explicit life time (storage management) of actors and messages, combining actors and coroutines, a forward message‐trace and backward message‐return for debugging and failures, a new promise call‐back for ask sends, and an actor implementation that inverts the actor execution‐model by decoupling actor mailboxes with high levels of sharding. Microbenchmarks compare the new actor features with CAF, Protoactor, and classic and typed Akka.