发表机构
Inria / Univ. Lille / CNRS, CRIStAL; IMT Atlantique / Inria, LS2N(法国国家信息与自动化研究所 / 里尔大学 / 法国国家科学研究中心,CRIStAL; 大西洋高等理工学院 / 法国国家信息与自动化研究所,LS2N)
机构由 AI 辅助整理,请以论文原文为准。AI 中文总结
本研究通过Joule Profiler实证分析无服务器函数能耗,评估1401种配置,发现编程语言选择对能效影响最大,执行环境仅对短生命周期函数重要。
AI 中文摘要
云提供商和客户已广泛采用无服务器计算,将其作为按需部署和执行函数的便捷范式。为此,无服务器平台需要在函数代码的每一行运行之前配置适当的执行环境。这些环境由多个层组成,例如容器引擎、虚拟机监控程序、unikernel和编程语言运行时。虽然文献已研究了这些无服务器平台的性能,但将其函数视为黑盒,社区缺乏关于将应用程序打包为无服务器函数的环境影响的关键见解。因此,本文实证研究了可部署在无服务器平台上的无服务器函数的能源效率。我们设计了一个实验性基准测试环境,使利益相关者能够探索执行无服务器函数所涉及的各个层的影响。我们使用它评估了1,401种配置,结合了9种执行环境、7种语言运行时配置、11种工作负载和3种输入大小,以回答三个研究问题:无服务器函数最流行的编程语言是否最节能?哪些因素最影响其能源效率?部署它们的最节能配置是什么?我们的结果表明,应首先选择编程语言,然后选择语言运行时,最后才选择执行环境,执行环境仅对短生命周期函数重要,且其最佳选择取决于运行时。我们的基准测试环境、实验工件、原始测量数据和分析代码均可公开获取。
英文摘要
Cloud providers and customers have widely adopted serverless computing as a convenient paradigm for deploying and executing functions on demand. To do so, serverless platforms require provisioning an appropriate execution environment before a single line of the function's code runs. These environments consist of several layers, such as container engines, hypervisors, unikernels, and programming language runtimes. While the literature has investigated the performance of these serverless platforms, it treats functions as black boxes, and the community lacks key insights into the environmental impacts of packaging applications as serverless functions. This paper therefore empirically studies the energy efficiency of serverless functions deployable on serverless platforms. We design an experimental benchmarking environment that lets stakeholders explore the impacts of the various layers involved in executing serverless functions. We use it to evaluate 1,401 configurations, combining 9 execution environments, 7 language-runtime configurations, 11 workloads, and 3 input sizes, to answer three research questions: Are the most popular programming languages for serverless functions the most energy-efficient? What factors most affect their energy efficiency? What are the most energy-efficient configurations to deploy them? Our results show that one should first choose the programming language, then the language runtime, and only then the execution environment, which matters only for short-lived functions and whose best choice depends on the runtime. Our benchmarking environment, experimental artifacts, raw measurements, and analysis code are publicly available.
Comments15 pages, 6 figures, 5 tables