In serverless computing, applications are executed under lightweight virtualization and isolation environments, such as containers or micro virtual machines. Typically, their memory allocation is set by the user before deployment. All other resources, such as CPU, are allocated by the provider statically and proportionally to memory allocations. This contributes to either under-utilization or throttling. The former significantly impacts the provider, while the latter impacts the client. To solve this problem and accommodate both clients and providers, a solution is dynamic CPU allocation achieved through autoscaling. Autoscaling has been investigated for long-running applications using history-based techniques and prediction. However, serverless applications are short-running workloads, where such techniques are not well suited. In this paper, we investigate tiny autoscalers and how dynamic CPU allocation techniques perform for short-running serverless workloads. We experiment with Kubernetes as the underlying platform and implement using its vertical pod autoscaler several dynamic CPU rightsizing techniques. We compare these techniques using state-of-the-art serverless workloads. Our experiments show that dynamic CPU allocation for short-running serverless functions is feasible and can be achieved with lightweight algorithms that offer good performance.
翻译:在无服务器的计算中,应用程序是在轻量级虚拟化和隔离环境中执行的,例如集装箱或微型虚拟机器。一般情况下,它们的记忆分配由用户在部署之前设定。所有其它资源,例如CPU,均由供应商静态分配,并按比例分配到存储分配中。这导致使用不足或抽动。前者对供应商有重大影响,而后者则对客户产生影响。为了解决这一问题,并兼顾客户和提供者,一个解决办法是通过自动扩缩实现动态CPU分配。对使用历史技术和预测的长期应用进行自动扩缩。然而,无服务器应用程序是短期工作量,而这种技术不适宜。在本文件中,我们调查小型自动标定,以及CPU的动态分配技术如何对短期无服务器工作量产生作用。我们用Kubernets作为基本平台进行实验,并使用其垂直自动标定的动态CPU权利化技术来实施。我们用最先进的服务器无弹性工作量来比较这些技术。我们的实验显示,对短期服务器功能的动态CPU分配是可行的,并且能够以良好的性能使算算出良好的性。