30日,计算机系统结构国际顶级学术会议 USENIX Annual Technical Conference (USENIX ATC '22) 放榜,EPCC实验室共有4篇高质量论文获得接收,祝贺同学们!
USENIX Annual Technical Conference 始办于1992年,是由USENIX组织的计算机系统领域的顶级会议,也是中国计算机学会推荐的A类系统会议,专注于相关领域的最新方法和技术,受到全世界相关领域研究者的广泛关注。今年ATC共收到393篇投稿,接收64篇,录取率仅为16%。
下面对录用论文的研究内容和方法进行简单的介绍:
论文1: DVABatch: Diversity-aware Multi-Entry Multi-Exit Batching for Efficient Processing of DNN Services on GPUs
作者: Weihao Cui, Han Zhao, Quan Chen, Hao Wei, Zirui Li, Deze Zeng, Chao Li, Minyi Guo.
工作简介:
典型的云端DNN推理通常是结合批处理进行,以便在提供较高的服务质量的同时,更好地利用现有 DNN 服务系统中的硬件。然而,应用于服务中的各种DNN模型在许多方面表现出多样性的特征,例如模型输入不均衡的多样性、DNN算子对硬件的利用差异的多样性,以及服务中常见的负载变化的多样性。现有的推理系统对这些多样性的不感知通常会导致处理效率低下。
现有的前人工作通常都关注于这些DNN服务的多样性中的一种,例如BatchMaker关注于传统RNN模型的输入不均衡的多样性,利用RNN的Cell通常是重复利用相同权重的特点,优化了传统RNN模型中批处理因为输入不均衡导致的冗余计算;LazyBatch聚焦于服务中负载变化的多样性,利用可延迟的自适应批处理的方式在不同load下提供更好的批处理策略。在本文中,我们期望不依赖于DNN模型本身的特性,同时给具有这些多样性特征的DNN服务提供一个统一的解决方案。
我们的调查表明,传统批处理在应对这些DNN模型处理时,效率低下的根源在于现有批处理机制的特点:单入单出。因此,我们提出了 运行时批处理系统:DVABatch,它支持多入口多出的批处理机制。我们首先抽象出三个元操作:new、stretch 和 split,这些元操作用于随时调整正在进行的批处理,以实现多入口多出口方案,元操作可用于为不同的多样性形成不同的调度逻辑。为了及时响应元操作,我们将 DNN 模型分成多个阶段,每个阶段对应一个executor,同时创建了一个统一的状态转移图管理所有的executor。与最先进的生产环境的解决方案相比,我们的实验结果表明,DVABatch可减少了 46.4% 的平均延迟,并实现了最高达 2.12倍的吞吐提升。
论文2: RunD: A Lightweight Secure Container Runtime for High-density Deployment and High-concurrency Startup in Serverless Computing
作者: Zijun Li, Jiagan Cheng, Quan Chen, Eryu Guan (Alibaba Group), Zizheng Bian (Alibaba Group), Yi Tao (Alibaba Group), Bin Zha (Alibaba Group),Qiang Wang (Alibaba Group), Weidong Han (Alibaba Group), Minyi Guo.
工作简介:
函数计算作为无服务器计算(Serverless)中的主要实现,通过隔离开发人员提供的细粒度函数并弹性管理使用资源,做到了更精细化的按量付费和更高的数据中心资源利用率。 随着云原生技术的发展和微服务架构的流行,应用被越来越多的拆分成更细粒度的函数并部署为Serverless模式。但基于传统容器技术隔离的函数计算由于其较低的隔离性和安全性,已经逐步被替换成结合MicroVM和容器的安全容器技术为应用提供强隔离性和低延迟响应。但随着函数密度和并发数的增加,为此提供的沙箱隔离的开销也逐步增加。
本文以SOTA的开源安全容器技术Kata-containers为出发点,通过深入分析从host-to-guest架构栈中的瓶颈点,提出了函数计算场景下安全容器高密部署和高并发创建的3个关键观察和挑战:(1)容器的文件系统可以根据用户镜像只读和不需要持久化的特点进行定制;(2)客户机中的操作系统基础映像等可以在多个安全容器间共享和按需压缩以降低内存开销(3)高并发创建cgroup会导致高同步时延,尤其在高密场景下带来的高调度开销。为此,本文提出了针对Serverless语义下的轻量级安全容器运行时RunD,以提供高密度部署和高并发能力的支持。RunD通过引入读写分离的高效文件系统、预补丁和精简的guest内核以及一个全局可供维护的lightweight cgroup池以解决上述的三个高密高并发挑战。
根据实验评估,RunD 可以在 88 毫秒内启动,并且在104核384GB内存的单节点上每秒启动超过200 个安全容器,高密部署超过2500个函数实例。 RunD作为阿里云的Serverless运行时已经部署上线,每天为超过100万个函数和近40亿的调用提供服务,并积极推进Kata社区3.0架构的演变。
论文3: Help Rather Than Recycle: Alleviating Cold Startup in Serverless Computing Through Inter-Function Container Sharing
作者: Zijun Li, Linsong Guo, Quan Chen, Jiagan Cheng, Chuhao Xu, Deze Zeng, Zhuo Song (Alibaba Cloud), Tao Ma (Alibaba Cloud), Yong Yang (Alibaba Cloud), Chao Li, Minyi Guo.
工作简介:
在无服务器计算(Serverless Computing,由函数计算为代表的计算形态)中,每个函数调用通常都被调度至一个空闲容器中执行。如果后台中没有可用的空闲容器,系统便会为该次请求调用创建一个新的容器,从而经历创建、依赖库加载、函数加载等一系列冷启动过程,而容器冷启动是导致Serverless中请求响应延迟长的关键原因之一。我们观察到在Serverless系统内:(1)一些函数会因为无法争抢到预热容器从而需要重新创建,另一方面,一些函数因为预装依赖库不匹配,即使获得了预热容器,也需要额外开销以安装缺失的依赖库;(2)系统内也存在一些过量创建的函数容器,由于处于空闲状态并等待keep-alive策略(如10分钟)对其进行资源回收。我们称其为空闲容器。根据启示,除了从头开始为一个函数启动一个新容器外,我们还可以在不引入安全问题的前提下,通过利用其他函数的空闲容器,帮助缓解Serverless系统内的冷启动现象。
基于上述思想,本文提出了 Pagurus,一种运行时Serverless容器共享管理方案。 Pagurus 包括(1)函数内管理器—用于识别空闲容器并将其转换为其他函数可以使用的Zygote容器,但不会引入额外的安全问题。(2)函数间调度器—用于实现不同函数Zygote容器的共享和资源调度,以及(3)一个用于跨节点级的函数工作负载的平衡器。通过重现 ATC‘20中Azure Trace 的实验,Pagurus 有效缓解了 84.6% 的冷启动,并通过Zygote容器共享将冷启动导致的延迟从数百毫秒减少到 16 毫秒。
论文4: PilotFish: Harvesting Free Cycles of Cloud Gaming with Deep Learning Training
作者: Wei Zhang, Binghao Chen, Zhenhua Han, Quan Chen, Peng Cheng, Fan Yang, Ran Shu, Yuqing Yang, Minyi Guo.
工作简介:
近年来,云游戏(Cloud Gaming)正在逐渐流行起来。它已经成为数据中心非常重要的工作负载。例如,微软的Xbox Remote Play,谷歌的Stadia,Nvidia的Geforce Now,索尼的PlayStation Now。这些云游戏大大降低了高质量高负载游戏的硬件门槛,使得缺少GPU的移动客户端仍然可以享受强大GPU带来的良好视觉效果。然而由于网络、编码和解码能力以及移动设备的分辨率的限制,目前的云游戏服务只能提供有限的流媒体质量,远远低于现代GPU日益增长的能力。根据我们对目前一些流行游戏的评估显示,大多数游戏在云游戏数据中心GPU上的利用率都低于50%,不能充分利用GPU。
为了提高GPU利用率,可以在云游戏数据中心GPU上同时运行多个工作负载。但云游戏对不同资源(包括GPU、CPU、PCI-e和磁盘I/O等)的利用情况在不同的视频帧中变化很大,且由于玩家之间的随机互动和不断变化的游戏场景,这种变化是难以预测的。考虑到游戏工作负载的高度随机性和不可预测性,本工作提出了一个高性能系统PilotFish,该系统通过稳定且可预测的深度学习(DL)训练任务来获取云游戏运行过程中的空闲GPU周期,同时保证云游戏的FPS要求,消除共同运行的任务对云游戏的性能干扰。在本工作中,PilotFish通过对常用的图形库(如DirectX或Vulkan)进行监测,暴露出一个实时资源监测接口,以微秒级的开销(在10μs内)捕捉游戏帧渲染的开始和完成时刻,从而报告游戏的GPU使用空闲期。并将DL训练任务的GPU kernel合理安排在GPU空闲时间内。同时为了防止训练异常(即DL训练任务的kernel没有在预计的时间内完成),PilotFish可以主动实现微秒级任务抢占,终止训练(<1ms),并优化训练任务的checkpoint机制,限制训练进度的损失。
目前本工作已经支持DirectX 12上的游戏和使用Nvidia CUDA 11的DL训练任务。实验结果表明,PilotFish能够严格保证云游戏的FPS要求,同时收获高达85.1%的闲置GPU时间,相比之下,基线方法为达到相同的收获率,FPS下降了30%以上。