概述

在数据中心服务器或者各种云集群(后续简称集群)的生产环境上,部署着很多日常的在线(LC, Latency-critical service)服务。这类服务具有一定的负载不确定性,集群需要将服务器的平均利用率保持在较低的水平,使得当突发流量带来请求洪峰时,仍有充足资源用于计算与响应,从而避免了请求堆积造成的服务瘫痪,保证用户能够拥有良好的体验。但是这样做造成了大批的空闲资源浪费,提高了维护成本。在这种条件下想要提高资源利用率,一种直接的方式是在线服务负载较低时,部署另一种任务,提高资源的利用效率。这类应用不要求有极高的响应速度,但是将耗费较大的计算资源,我们称之为离线任务(BE, Best-effort batch)。因此各大云服务厂商引入在线离线混合部署方案来提升服务器的资源利用率,以降低云的运营成本。但事物的发展是具有两面性的,混合部署也不例外,提升资源利用率的同时也会带来资源隔离的问题。

本文详细介绍并分享关于提升 CPU 资源隔离的混部技术细节:

  • 「CPU 抢占」:当一台服务上同时存在在线服务、离线服务,如果不对离线服务加以限制,离线服务将会尽可能多的占用资源,从而增加在线任务的相应时延。所以本方案在同一个核上的在线(LC)服务能够抢占压制离线(BE)服务,最终保证在线服务的 QoS.

  • 「SMT 隔离控制」:同一个物理 CPU 的超线程共享核心的硬件资源,如 Cache 和计算单元。当在线任务和离线任务同时运行在一对超线程上时,会因为硬件资源争抢出现相互干扰的情况。此时需要驱离离线任务,该 HT 核进入 idle。

在混部场景 CPU 在离线调度的实现中,存在在线作业时,我们会对离线任