Intelligent Resource Scheduling for Co-located Latency-critical Services: A Multi-Model Collaborative Learning Approach

作者:Lei Liu, Xinglei Dou, Yuetao Chen
会议:FAST
年份:2023

为了性价比的考虑,多种延迟敏感负载共同使用服务器。资源调度成为保证QoS的核心。但是,随着服务器资源的增多,资源调度越来越复杂,传统的调度器难以迅速高效地提供最优的策略。而且,” 资源峭壁”的存在也使得QoS存在抖动。为了解决这一问题,作者提出了OSML——基于机器学习的智能调度器。OSML主要学习硬件hint(如IPC、cache miss率、内存足迹等)、调度解决方案和QoS需求之间的关系,能预测QoS的变化、指导调度并且从违反QoS要求的情况下恢复回来。通过实验验证,OSML支持更高的负载、用更低的调度小号满足QoS需求,且和之前的调度器相比,缩短了收敛的时间。

开源网址(将在2023年八月公开)

https://github.com/Sys-Inventor-Lab/AI4System-OSML

背景

云应用由许多延迟敏感(Latency Critical, aka LC)服务组成,例如KV存储、数据库查询等,如下表。LC服务需要满足严格的QoS要求。

一方面,为了提高性价比,云服务提供商往往会在一个服务器上部署尽量多的应用。然而,这些应用,或者说组成它们的各类服务,在不同时间段,和各种层级的资源的交互模式多种多样,如CPU核、缓存、内存I/O带宽、内存bank等。同时,随着CPU核数增多,线程间对LLC(last-level cache)和内存带宽的竞争愈加激烈。甚至资源之间也存在交互。另一方面,随着硬件技术的发展,可调度的资源相比十年有了巨大提升,如Table 2,调度的“域”变大。在这一场景下对LC服务的资源调度非常复杂且耗时,这一现状对以QoS为导向的资源调度器的设计提出了不小的挑战。

现有工作

有些工作使用聚类算法把LLC和内存带宽分配给核,其中每个核调度单个线程。这种办法不适合云应用场景,因为这个场景下一般同时运行多个线程且每个线程都有严格的QoS要求。

其他工作要么使用启发式的思路——即某个时刻减少/增加某类资源,随后观察性能的变化,要么以相对直接的方式借助机器学习算法(如贝叶斯优化)进行资源调度。研究表明,用这些办法调度5个一起运行的LC服务,并且使它们都满足QoS需求需要花费20s(也就是说需要花20s来决策?)。

现有工作还可以在调度收敛时间智能性规定时间内完成复杂的交互式资源调度上有提升空间。以及还有一个重要的问题:它们能在多个LC服务同时部署在现代服务器上时,提供最优的资源调度策略吗?

动机

为了回答上述问题,作者分析了LC服务(如Table 1)的特征。实验环境如下Table 2左列所示。

资源峭壁(RCliff)与最佳分配区域(OAA)

分析表明,LC服务对关键资源非常敏感,即使只少分配一点,也会造成巨大的QoS下滑。作者把这一现象称为“资源峭壁(Resource Cliff, aka RCliff)“。

这里所说的“关键资源”是如CPU核这类计算资源和如LLC ways这类存储资源。

作者测试了Table 1中列出的benchmark,每次实验均使用36个线程,以其中的Moses为代表,实验结果如下图:(方格内的数字表示响应延迟)

图 1

当Core数目为6时,即使只减少1个LLC Way(从10减为9),响应延迟从34ms急速增长到4644ms。LLC Way固定,减少Core数也有类似的现象。作者把存在这一现象的区域用红框框起来了,如上图所示。

  • 造成Cache Cliff的原因是局部性。
  • 造成Core Cliff的原因在于排队理论:当请求到达速率超过核数以及核的处理速率时,延迟会急速增长。

调度器应该避免分配分配的资源落在资源峭壁边缘。

因此,作者划出了最佳分配区域(Optimal Allocation Area, aka OAA),如上图黄框内区域,即满足QoS要求,又不至于分配过多资源。

不同的benchmark下能划出不同的RCliff区和OAA。

由于在实践中常常多个线程并发执行,所以引出下一个问题,OAA会随着线程数变化而变化吗?

OAA与线程数的关系

依然以Moses为例,如下图,不论线程数是20、28还是36,最佳的core都在8~10之间,说明OAA对线程数的变化不敏感。

图 2

现有的调度器可能遇到的问题

  1. 容易在RCliff周围徘徊

现有的启发式调度器根据观察到的性能变化增多/减少分配的资源,一方面,若给某应用分配的资源在RCliff之前(即图1中的黄色区域),由于它们对OAA没有概念,所以只能一步步细粒度地调整分配的资源;另一方面,若给某应用分配的资源在RCliff区内,则一点点资源的减少都会造成性能突然下降。

  1. 没法同时调度多种交互资源(如core、LCC way)以迅速到达OAA

启发式算法往往只调度一种资源。当需要调度多种资源时,往往需要花费较长时间才能达到OAA。

  1. 没法准确预测整体的QoS

要么违背QoS要求,要么分配过多预留资源。

总之,新的调度器的开发迫在眉睫。使用机器学习可以以较低的开销在复杂的情况下完全调度。

OSML:利用机器学习进行调度

作者把调度的过程分为三个routine,并分别使用不同的机器学习模型:

1)Model A和Model B是静态的机器学习模型,分别负责预测OAA/RCliff和在多LC服务同时进行时,平衡QoS和所分配的资源;

2)Model C是强化学习模型,负责动态指导资源分配。

Overview

OSML Overview

Central Logic

OSML Central Logic

实验

  • 评测指标

QoS:99th延迟

EMU:即Effiective Machine Utilization,代表所有共同运行的LC服务的最大负载

  • 对比的方案
    • PARTIES:一个启发式调度策略
    • CLITE:一个基于贝叶斯优化的调度策略
    • Unmanaged Allocation:不调度,代表下限
    • ORACLE:离线学习了大量数据并且找到了最好的方案,代表上限

实验结果

  • 由于Model A提供的出发点更接近OAA,所以OSML能用更短的收敛时间实现同样的EMU

图(a)中每个点表示1个load,三种策略分别测试了104个load,均收敛。图(b)是图(a)中load的收敛时间的Violin Plots

  • 同样的Load,OSML可以使用更少的资源使它们达到QoS要求

均使用Moses、Img-dnn和Xapian的40%、60%和50%组成的load

  • 由于OSML支持资源共享,所以能支持更多load

使用Moses、Img-dnn和Xapian组成的load,横轴和纵轴分别表示使用它们各自的x%的负载,而方格中的数字表示支持的Xapian的最大x%的负载,红叉表示不支持(即无法达到QoS要求)

  • 由于Model C的动态调整,在新服务到来/旧load发生变化时,OSML能更快调整

16~80s时,新服务到来,OSML在Point 48就能提供更好的解决方案;180~228s时,Img-dnn改变了load,OSML能很快满足需求的变化