{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,11,4]],"date-time":"2025-11-04T16:16:20Z","timestamp":1762272980446,"version":"3.37.3"},"reference-count":35,"publisher":"Springer Science and Business Media LLC","issue":"5","license":[{"start":{"date-parts":[[2022,8,1]],"date-time":"2022-08-01T00:00:00Z","timestamp":1659312000000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2022,8,1]],"date-time":"2022-08-01T00:00:00Z","timestamp":1659312000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"funder":[{"DOI":"10.13039\/501100021856","name":"Ministero dell\u2019Universit\u00e0 e della Ricerca","doi-asserted-by":"publisher","award":["T- LADIES\u201d (PRIN 2020TL3X8X)"],"award-info":[{"award-number":["T- LADIES\u201d (PRIN 2020TL3X8X)"]}],"id":[{"id":"10.13039\/501100021856","id-type":"DOI","asserted-by":"publisher"}]}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["Distrib. Comput."],"published-print":{"date-parts":[[2022,10]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>The Erlang programming language is used to build concurrent, distributed, scalable and resilient systems. Every component of these systems has to be thoroughly tested not only for correctness, but also for performance. Performance analysis tools in the Erlang ecosystem, however, do not provide a sufficient level of automation and insight needed to be integrated in modern tool chains. In this paper, we present  : an extendable performance testing framework that combines the repeatability of load testing tools with the details on how the resources are internally used typical of the performance monitoring tools. These features allow  to be integrated in the early stages of testing pipelines, providing users with a systematic approach to identifying performance issues. This paper introduces the  framework, focusing on its features, design and imposed monitoring overhead measured through both theoretical estimates and trial runs on systems in production. The uniqueness of the features offered by  , together with its usability and contained overhead prove that the framework can be a valuable resource in the development and maintenance of Erlang applications.<\/jats:p>","DOI":"10.1007\/s00446-022-00429-7","type":"journal-article","created":{"date-parts":[[2022,8,1]],"date-time":"2022-08-01T10:03:55Z","timestamp":1659348235000},"page":"439-454","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":3,"title":["PerformERL: a performance testing framework for erlang"],"prefix":"10.1007","volume":"35","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-4652-8113","authenticated-orcid":false,"given":"Walter","family":"Cazzola","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Francesco","family":"Cesarini","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Luca","family":"Tansini","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2022,8,1]]},"reference":[{"key":"429_CR1","doi-asserted-by":"crossref","unstructured":"Aceto, L., Attard, D.\u00a0P., Francalanza, A., Ing\u00f3lfsd\u00f3ttir, A.: On Benchmarking for Concurrent Runtime Verification. In FASE\u201921, LNCS 12649, pp. 3\u201323, Luxembourg City, Luxembourg, (2021). Springer","DOI":"10.1007\/978-3-030-71500-7_1"},{"key":"429_CR2","doi-asserted-by":"publisher","DOI":"10.7551\/mitpress\/1086.001.0001","volume-title":"Actors: A Model of Concurrent Computation in Distributed Systems","author":"G Agha","year":"1986","unstructured":"Agha, G.: Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press, Cambridge (1986)"},{"issue":"1","key":"429_CR3","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1006\/jagm.1998.0967","volume":"30","author":"A Andersson","year":"1999","unstructured":"Andersson, A.: General Balanced Trees. J Algorithms 30(1), 1\u201318 (1999)","journal-title":"J Algorithms"},{"key":"429_CR4","doi-asserted-by":"crossref","unstructured":"Aronis, S., Papaspyrou, N., Roukounaki, K., Sagonas, K., Tsiouris, Y., Venetis, I.E.: A Scalability Benchmark Suite for Erlang\/OTP. In Erlang\u201912, pp. 33\u201342, Copenhagen, Denmark, (2012). ACM","DOI":"10.1145\/2364489.2364495"},{"key":"429_CR5","doi-asserted-by":"crossref","unstructured":"Attard, D.P., Aceto, L., Achilleos, A., Francalanza, A., Ing\u00f3lfsd\u00f3ttir, A., Lehtinen, K.: Better Late Than Never or: Verifying Asynchronous Components at Runtime. In FORTE\u201921, LNCS 12719, pp. 207\u2013225, Valletta, Malta, (2021). Springer","DOI":"10.1007\/978-3-030-78089-0_14"},{"key":"429_CR6","unstructured":"Bagwell, P.: Ideal Hash Trees. Technical report, \u00c9cole Polytechnique F\u00e9d\u00e9rale de Lausanne, Lausanne, Switzerland (2001)"},{"key":"429_CR7","unstructured":"Bhattacharyya, A., Amza, C.: PReT: A Tool for Automatic Phase-Based Regression Testing. In CloudCom\u201918, pp. 284\u2013289, Nicosia, Cyprus, (2018). IEEE"},{"key":"429_CR8","unstructured":"Bruneton, E., Lenglet, R., Coupaye, T.: ASM: A Code Manipulation Tool to Implement Adaptable Systems. In: Adaptable and Extensible Component Systems, (2002)"},{"key":"429_CR9","doi-asserted-by":"publisher","first-page":"139","DOI":"10.1007\/s10515-015-0188-0","volume":"24","author":"L Bulej","year":"2017","unstructured":"Bulej, L., Bure\u0161, T., Hork\u00fd, V., Kotr\u010d, J., Marek, L., Troj\u00e1nek, T., T\u016fma, P.: Unit Testing Performance with Stochastic Performance Logic. Automated Softw. Eng. 24, 139\u2013187 (2017)","journal-title":"Automated Softw. Eng."},{"key":"429_CR10","unstructured":"Cesarini, F., Thompson, S.J.: Erlang Programming: A Concurrent Approach to Software Development. O\u2019Reilly, (2009)"},{"key":"429_CR11","unstructured":"Cesarini, F., Vinoski, S.: Designing for Scalability with Erlang\/OTP: Implementing Robust, Fault-Tolerant Systems. O\u2019Really Media, (2016)"},{"issue":"22","key":"429_CR12","doi-asserted-by":"publisher","first-page":"e4637","DOI":"10.1002\/cpe.4637","volume":"30","author":"M Cio\u0142czyk","year":"2018","unstructured":"Cio\u0142czyk, M., Wojakowski, M., Malawski, M.: Tracing of Large-Scale Actor Systems. Concurrency and Computation-Practice and Experience 30(22), e4637 (2018)","journal-title":"Concurrency and Computation-Practice and Experience"},{"key":"429_CR13","doi-asserted-by":"crossref","unstructured":"Dahm, M.: Byte Code Engineering. In Java-Informations-Tage, 267\u2013277, (1999)","DOI":"10.1007\/978-3-642-60247-4_25"},{"key":"429_CR14","unstructured":"Gheorghiu, G.: Performance vs. Load vs. Stress Testing [Online]. http:\/\/agiletesting.blogspot.com\/2005\/02\/performance-vs-load-vs-stress-testing.html, (2005)"},{"key":"429_CR15","unstructured":"G\u00f6m\u00f6ri, P.: Profiling and Tracing for All with Xprof. In: Proceedings of the Elixir Workshop London, London, United Kingdom, (2017)"},{"key":"429_CR16","unstructured":"Halili, E.H.: Apache JMeter: A Practical Beginner\u2019s Guide to Automated Testing and Performance Measurement for Your Websites. Packt Publishing, (2008)"},{"key":"429_CR17","doi-asserted-by":"crossref","unstructured":"Haller, P.: On the Integration of the Actor Model in Mainstream Technologies: The Scala Perspective. In AGERE!\u201912\u2019, pp. 1\u20136. ACM, (2012)","DOI":"10.1145\/2414639.2414641"},{"issue":"2\u20133","key":"429_CR18","doi-asserted-by":"publisher","first-page":"202","DOI":"10.1016\/j.tcs.2008.09.019","volume":"410","author":"P Haller","year":"2009","unstructured":"Haller, P., Odersky, M.: Scala Actors: Unifying Thread-Based and Event-Based Programming. Theoret. Comput. Sci. 410(2\u20133), 202\u2013220 (2009)","journal-title":"Theoret. Comput. Sci."},{"key":"429_CR19","doi-asserted-by":"crossref","unstructured":"Ho, C.-W., Williams, L.A., Ant\u00f3n, A.I.: Improving Performance Requirements Specifications from Field Failure Reports. In RE\u201907, pp. 79\u201388, New Delhi, (2007). IEEE","DOI":"10.1109\/RE.2007.57"},{"key":"429_CR20","doi-asserted-by":"crossref","unstructured":"Huebner, F., Meier-Hellstern, K., Reeser, P.: Performance Testing for IP Services and Systems. In GWPSED\u201900, LNCS 2047, pp. 283\u2013299, Darmstadt, Germany, (2000). Springer","DOI":"10.1007\/3-540-45156-0_18"},{"issue":"11","key":"429_CR21","doi-asserted-by":"publisher","first-page":"1091","DOI":"10.1109\/TSE.2015.2445340","volume":"41","author":"ZM Jiang","year":"2015","unstructured":"Jiang, Z.M., Hassan, A.E.: A Survey on Load Testing of Large-Scale Software Systems. IEEE Trans. Softw. Eng. 41(11), 1091\u20131118 (2015)","journal-title":"IEEE Trans. Softw. Eng."},{"key":"429_CR22","doi-asserted-by":"crossref","unstructured":"Johnson, M.J., Ho, C.-W., Maximilien, E.M., Williams, L.: Incorporate Performance Testing in Test-Driven Development. IEEE Software 24(3), 67\u201373 (2007)","DOI":"10.1109\/MS.2007.77"},{"key":"429_CR23","doi-asserted-by":"crossref","unstructured":"Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, B.: An Overview of AspectJ. In ECOOP\u201901, LNCS 2072, pp. 327\u2013353, Budapest, Hungary, (2001). Springer-Verlag","DOI":"10.1007\/3-540-45337-7_18"},{"key":"429_CR24","unstructured":"Klophaus, R.: Riak Core: Building Distributed Applications without Shared State. In CUFP\u201910, pp. 14:1\u201314:1, Baltimore, Maryland, USA, (2010). ACM"},{"key":"429_CR25","unstructured":"Malik, H., Hemmati, H., Hassan, A.E.: Automatic Detection of Performance Deviations in the Load Testing of Large Scale Systems. In ICSE\u201913, pp. 1012\u20131021, San Francisco, CA, USA, (2013). IEEE"},{"key":"429_CR26","doi-asserted-by":"crossref","unstructured":"Marek, L., Villaz\u00f3n, A., Zheng, Y., Ansaloni, D., Binder, W., Qi, Z.: DiSL: A Domain-specific Language for Bytecode Instrumentation. In AOSD\u201912, pages 239\u2013250, Potsdam Germany, (2012). ACM","DOI":"10.1145\/2162037.2162046"},{"key":"429_CR27","doi-asserted-by":"crossref","unstructured":"Moamen, A.A., Wang, D., Jamali, N.: Approaching Actor-Level Resource Control for Akka. In JSSPP\u201918, LNCS 11332, pp. 127\u2013146, Vancouver, BC, Canada, (2018). Springer","DOI":"10.1007\/978-3-030-10632-4_7"},{"key":"429_CR28","doi-asserted-by":"crossref","unstructured":"Ros\u00e0, A., Chen, L.Y., Binder, W.: AkkaProf: A Profiler for Akka Actors in Parallel and Distributed Applications. In APLAS\u201916, LNCS 10017, pp. 139\u2013147, Hanoi, Vietnam, (2016). Springer","DOI":"10.1007\/978-3-319-47958-3_8"},{"key":"429_CR29","doi-asserted-by":"crossref","unstructured":"Ros\u00e0, A., Chen, L.Y., Binder, W.: Profiling Actor Utilization and Communication in Akka. In Erlang\u201916, pp. 24\u201332, Nara, Japan, (2016). ACM","DOI":"10.1145\/2975969.2975972"},{"key":"429_CR30","doi-asserted-by":"crossref","unstructured":"\u015alaski, M., Turek, W.: Towards Online Profiling of Erlang Systems. In ERLANG\u201919, pages 13\u201317, Berlin, Germany, (2019). ACM","DOI":"10.1145\/3331542.3342568"},{"key":"429_CR31","doi-asserted-by":"crossref","unstructured":"Stefan, P., Hork\u00fd, V., Bulej, L., T\u016fma, P.: Unit Testing Performance in Java Projects: Are We There Yet? In ICPE\u201917, pp. 401\u2013412, L\u2019Aquila, Italy, (2017). ACM","DOI":"10.1145\/3030207.3030226"},{"key":"429_CR32","doi-asserted-by":"crossref","unstructured":"Stivan, G., Peruffo, A., Haller, P.: Akka.js: Towards a Portable Actor Runtime Environment. In AGERE!\u201915, pp. 57\u201364, Pittsburgh, PA, USA, (2015). ACM","DOI":"10.1145\/2824815.2824821"},{"issue":"4","key":"429_CR33","doi-asserted-by":"publisher","first-page":"17:1","DOI":"10.1145\/3107937","volume":"39","author":"P Trinder","year":"2017","unstructured":"Trinder, P., Chechina, N., Papaspyrous, N., Sagonas, K., Thompson, S.J., Adams, S., Aronis, S., Baker, R., Bihari, E., Boudeville, O., Cesarini, F., Di Stefano, M., Eriksson, S., F\u00f6rd\u0151s, V., Ghaffari, A., Giantsios, A., Green, R., Hoch, C., Klaftenegger, D., Li, H., Lundin, K., MacKenzie, K., Roukounaki, K., Tsiouris, Y., Winblad, K.: Scaling Reliably: Improving the Scalability of the Erlang Distributed Actor Platform. ACM Trans. Prog. Lang. Syst. 39(4), 17:1-17:46 (2017)","journal-title":"ACM Trans. Prog. Lang. Syst."},{"key":"429_CR34","doi-asserted-by":"crossref","unstructured":"van Hoorn, A., Waller, J., Hasselbring, W.: Kieker: A Framework for Application Performance Monitoring and Dynamic Software Analysis. In ICPE\u201912, pp. 247\u2013248, Boston, MA, USA, (2012). ACM","DOI":"10.1145\/2188286.2188326"},{"key":"429_CR35","unstructured":"Woodside, M., Franks, G., Petriu, D.C.: The Future of Software Performance Engineering. In FOSE\u201907, pp. 171\u2013187, Minneapolis, MN, USA, (2007). IEEE"}],"container-title":["Distributed Computing"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s00446-022-00429-7.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s00446-022-00429-7\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s00446-022-00429-7.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,9,9]],"date-time":"2022-09-09T07:12:22Z","timestamp":1662707542000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/s00446-022-00429-7"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2022,8,1]]},"references-count":35,"journal-issue":{"issue":"5","published-print":{"date-parts":[[2022,10]]}},"alternative-id":["429"],"URL":"https:\/\/doi.org\/10.1007\/s00446-022-00429-7","relation":{},"ISSN":["0178-2770","1432-0452"],"issn-type":[{"type":"print","value":"0178-2770"},{"type":"electronic","value":"1432-0452"}],"subject":[],"published":{"date-parts":[[2022,8,1]]},"assertion":[{"value":"3 March 2020","order":1,"name":"received","label":"Received","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"24 May 2022","order":2,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"1 August 2022","order":3,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}]}}