Serverless computing has seen rapid growth due to the ease-of-use and cost-efficiency it provides. However, function scheduling, a critical component of serverless systems, has been overlooked. In this paper, we take a first-principles approach toward designing a scheduler that caters to the unique characteristics of serverless functions as seen in real-world deployments. We first create a taxonomy of scheduling policies along three dimensions. Next, we use simulation to explore the scheduling policy space for the function characteristics in a 14-day trace of Azure functions and conclude that frequently used features such as late binding and random load balancing are sub-optimal for common execution time distributions and load ranges. We use these insights to design Hermes, a scheduler for serverless functions with three key characteristics. First, to avoid head-of-line blocking due to high function execution time variability, Hermes uses a combination of early binding and processor sharing for scheduling at individual worker machines. Second, Hermes uses a hybrid load balancing approach that improves consolidation at low load while employing least-loaded balancing at high load to retain high performance. Third, Hermes is both load and locality-aware, reducing the number of cold starts compared to pure load-based policies. We implement Hermes for Apache OpenWhisk and demonstrate that, for the case of the function patterns observed both in the Azure and in other real-world traces, it achieves up to 85% lower function slowdown and 60% higher throughput compared to existing policies.
翻译:无服务器计算由于使用方便和成本效率的提高而出现快速增长。然而,功能调度是无服务器系统的关键组成部分,但这一功能调度系统被忽略了。在本文中,我们采用第一原则设计一个符合无服务器功能独特特点的调度器,如在现实世界部署中看到的那样。我们首先根据三个层面创建了列表政策的分类学。接下来,我们利用模拟来探索14天的Azure函数跟踪功能功能特性的时间安排空间,并得出结论,经常使用的功能调度(例如迟装约束和随机负载平衡)是通用执行时间分配和负载范围的次优性。我们利用这些洞察力设计Hermes,这是一个无服务器功能的调度器,有三个关键特征。首先,为了避免因高功能执行时间变化而出现头封堵,Hermes使用早期约束和处理器共享组合组合,用于个人工人机器的调度。第二,赫梅斯使用一种混合负荷平衡方法,在低负荷情况下改进整合,同时使用最轻负荷平衡的低负荷来保持高性运行。第三,赫梅斯公司利用这些洞洞测的排和地形运行模式,同时开始在正常状态中,在正常状态中,我们开始在正常状态中,在正常状态中执行中进行。在正常状态中进行。在正常状态中进行。我们,在正常状态中进行。