FaaS allows an application to be decomposed into functions that are executed on a FaaS platform. The FaaS platform is responsible for the resource provisioning of the functions. Recently, there is a growing trend towards the execution of compute-intensive FaaS functions that run for several seconds. However, due to the billing policies followed by commercial FaaS offerings, the execution of these functions can incur significantly higher costs. Moreover, due to the abstraction of underlying processor architectures on which the functions are executed, the performance optimization of these functions is challenging. As a result, most FaaS functions use pre-compiled libraries generic to x86-64 leading to performance degradation. In this paper, we examine the underlying processor architectures for Google Cloud Functions (GCF) and determine their prevalence across the 19 available GCF regions. We modify, adapt, and optimize three compute-intensive FaaS workloads written in Python using Numba, a JIT compiler based on LLVM, and present results wrt performance, memory consumption, and costs on GCF. Results from our experiments show that the optimization of FaaS functions can improve performance by 12.8x (geometric mean) and save costs by 73.4% on average for the three functions. Our results show that optimization of the FaaS functions for the specific architecture is very important. We achieved a maximum speedup of 1.79x by tuning the function especially for the instruction set of the underlying processor architecture.
翻译:faaS 允许将应用程序拆解为在 FaaS 平台上执行的功能。 FaaS 平台负责为这些功能提供资源。 最近,正在出现一个日益增长的趋势,即执行数秒钟的计算密集型FaaS 函数;然而,由于商业FaaS 提供商遵循的计费政策,这些功能的执行成本会大幅提高。此外,由于执行功能所依据的程序结构的抽象化,这些功能的优化具有挑战性。因此,大多数FaaS 功能使用预编的图书馆通用至x86-64,导致性能退化。在本文件中,我们审查了谷歌云功能(GCF)的基本处理器结构,并确定了其在19个现有全球合作框架区域的普遍性。我们用基于LLVM 的JIT 汇编程序,在Python 书写了三种计算密集的FaS 工作量, 并提出了成果、记忆消耗和费用。我们的实验结果显示,我们通过平均的FaS 4S 功能的优化以12度成本衡量我们所实现的3个结构的正常水平,可以通过我们所实现的优化的3个结构的功能。