Skip to content

Latest commit

 

History

History
71 lines (30 loc) · 10.7 KB

Erms Efficient Resource Management for Shared Microservices with SLA Guarantees.md

File metadata and controls

71 lines (30 loc) · 10.7 KB

**Erms: Efficient Resource Management for Shared Microservices **with SLA Guarantees

Abstract

这篇文章介绍了Erms,一个高效的资源管理系统,旨在提升共享微服务环境中的SLA保证。Erms通过将微服务延迟建模为工作负载、资源使用和干扰的分段线性函数,构建了优化的资源扩展模型,以确定微服务的最佳延迟目标。此外,Erms设计了新的调度策略以进一步提高资源效率。实验结果表明,Erms能够将SLA违约概率降低5倍,同时将资源使用减少1.6倍,相比于现有技术方案表现出显著的改进。

Introduction

近年来,微服务架构在云数据中心的广泛采用带来了诸多优势,如更轻量、松耦合的服务组件,使得在面对增长负载时,可以独立扩展各个微服务。然而,这种架构也引发了一些挑战,特别是在保证服务水平协议(SLA)方面。主要问题包括:服务请求需通过复杂的微服务依赖图处理;微服务容器可能与批处理应用程序共置,导致资源干扰;单个微服务可能被多个服务共享,具有不同的工作负载模式和SLA要求。现有的解决方案如手工启发式方法、强化学习或深度学习算法存在局限性,如固定的贡献计算、需要大量标注工作或难以扩展到复杂环境。

为解决这些问题,文章提出了Erms系统,它通过将微服务延迟建模为工作负载、容器数量和资源干扰的分段函数,来进行全局优化。Erms不仅能够优化每个微服务的延迟目标,还设计了新的调度策略,以提升资源效率,并能够在生产环境中进行大规模应用。实验表明,Erms能显著减少容器数量和SLA违约概率,相比现有技术方案具有明显优势。

Background and Motivation

微服务背景: 微服务架构在生产集群中广泛应用,每个应用由多个在线服务组成,这些服务通过多个微服务进行交互。用户请求通常由一个入口微服务(如Nginx)发起,触发多个下游微服务的调用,这些调用可能是顺序的,也可能是并行的。每个微服务通常运行在多个相同配置的容器中以处理所有请求。用户请求的端到端延迟由依赖图中的所有关键路径的最长执行时间决定,每条关键路径的执行时间是沿该路径的所有微服务延迟之和。微服务的复杂调用依赖和共享使得管理资源以满足SLA变得更加困难。

微服务延迟的量化: 微服务延迟是量化容器资源压力的重要指标。延迟包括排队时间和处理时间,但从微服务跟踪系统中获得这些数据比较困难。现有的方法主要关注微服务延迟的统计特征,然而,这些方法往往基于固定的均值和方差来计算延迟目标,而忽视了工作负载和资源干扰对延迟曲线斜率的影响。具体来说,当工作负载超过某一临界点时,微服务延迟会迅速增加,这种现象常见于处理能力达到极限时。

微服务共享的挑战与机遇: 在实际应用中,一个微服务可能被多个在线服务共享。不同服务的工作负载模式和SLA要求各异,这种共享使得在共享微服务上进行资源调度和SLA保证变得复杂。共享微服务的请求可能会因为一个服务的负载增加而显著影响其他服务的延迟。为了提高资源效率,需要在共享微服务上实施全球优化的资源配置。实验结果表明,优先级调度策略可以通过重新计算延迟目标和调整资源分配,显著降低总资源使用量,即使在共享微服务的简单设置中也表现出良好的效果。这表明,通过高效的调度策略,可以在保证SLA的前提下,更好地利用资源。

个人理解: 微服务架构的灵活性和模块化带来了更高的扩展性,但同时也增加了资源管理的复杂性。微服务的延迟受多个因素影响,包括工作负载、资源干扰和微服务的共享情况。传统的延迟量化方法往往忽略了这些动态因素,因此可能导致不准确的资源配置。解决这些问题需要精确建模微服务延迟并采用高效的调度策略,以实现更好的资源利用和SLA保证。有效的调度和资源优化不仅能减少资源浪费,还能提升系统的整体性能和稳定性。

ERMS METHODOLOGY

Erms框架是一种集群级资源管理器,旨在在满足服务SLA的同时优化资源使用。其主要组件包括:一个Tracing Coordinator,从Prometheus和Jaeger等追踪系统中收集和分析延迟数据;一个离线配置模块,根据历史数据建立延迟模型;以及一个在线扩展组件,负责处理扩展决策。在线扩展组件包括图合并,用于简化依赖图;延迟目标计算,设置初始延迟目标;优先级调度,根据优先级处理请求并调整延迟目标。此外,Erms还包括一个资源配置模块,旨在减少资源干扰,以及一个部署模块,用于在Kubernetes集群上执行扩展操作。

image-20220925111100073

RESOURCE SCALING MODELS

在资源扩展模型的部分,Erms的核心目标是根据微服务的依赖关系和实际工作负载动态调整容器数量,以满足服务水平协议(SLA)要求,同时最小化资源消耗。

基本模型:基本模型主要关注如何在给定微服务延迟和工作负载的情况下,通过优化容器配置来最小化资源使用。模型中,微服务的尾部延迟是工作负载的分段线性函数,即延迟随着容器数量的变化而变化。目标是通过调整容器数量,使得所有微服务的延迟都低于预设阈值,同时尽量减少总资源消耗。

最优扩展方法设计:在处理只有顺序依赖的微服务时,可以通过求解KKT方程来找到最优解。这些方程将延迟目标与微服务的工作负载、延迟斜率和资源需求联系起来,揭示了在增加工作负载时需要更高的延迟目标。对于包含复杂依赖图的场景,Erms通过简化图拓扑(例如,移除并行依赖)来简化计算。这包括通过引入虚拟微服务来合并并行路径,从而计算每个微服务的延迟目标和资源需求。

复用模型:在处理共享微服务时,Erms通过引入虚拟微服务来处理并行依赖。这种方法将多个并行微服务合并成一个虚拟微服务,从而简化延迟目标的计算和资源分配。通过这种方式,可以在复杂的服务依赖图中实现更加高效的资源调度。

Implementation

在资源扩展的部署部分,Erms系统设计了几个关键组件和算法来有效管理资源,优化性能。

1. 跟踪协调器(Tracing Coordinator): Erms的跟踪协调器结合了Prometheus和Jaeger这两个开源系统来收集和分析微服务的性能数据。Prometheus负责收集操作系统层面的指标,如CPU和内存使用情况,而Jaeger则用于记录应用层面的调用信息,包括请求响应时间。Jaeger通过10%的采样频率来控制数据收集的开销。跟踪协调器从Jaeger中提取微服务依赖图,并根据调用的并行性或顺序性标记调用关系,从而构建起微服务之间的依赖关系图。这些信息用于进一步的性能分析和优化。

2. 微服务离线分析(Microservice Offline Profiling): Erms采用离线分析来建立微服务延迟模型,该模型考虑了工作负载和资源干扰(特别是CPU和内存利用率)。通过使用机器学习方法,Erms从历史数据中提取微服务的延迟特性,并将其拟合为分段线性函数。该方法重点考虑了内存利用率对延迟的影响,因为高内存利用率会导致内存碎片化,从而显著降低性能。尽管Erms能够扩展到包括更多共享资源的分析,但CPU和内存利用率已经足够提供良好的分析性能。

3. 在线资源扩展(Online Resource Scaling): 在线资源扩展模块的关键在于如何控制扩展开销。Erms通过以下几个步骤来实现这一目标:

  • 依赖合并与延迟目标计算:Erms平均计算所有物理主机的资源利用率,并将这些数据输入到微服务配置模型中,以获得描述延迟变化的参数。这个过程可能需要在高工作负载和低工作负载两个区间之间切换,以确定最合适的延迟目标。
  • 优先级调度:在处理共享微服务时,Erms需要配置不同在线服务的请求优先级。由于计算所有可能的配置组合开销巨大,Erms首先为每个服务分配初步的延迟目标,并基于这些目标来设置优先级。优先级较高的服务将优先处理其请求,系统通过调整调度策略来优化资源分配,尤其是在高负载情况下。具体地,Erms使用了一个概率调度策略来控制高优先级服务的请求处理概率,这样可以在保证高优先级服务响应的同时,优化低优先级请求的性能。

Evaluation

在这部分的实验中,作者使用了DeathStarBench基准测试工具来评估Erms的性能,该工具包含了社交网络、媒体服务和酒店预订应用,分别有36、38和15个微服务。每个应用中还有几个共享的微服务。Erms在一个配置较高的本地私有集群上运行,这些主机配备了32个CPU核心和64 GB的内存。每个微服务容器被分配了0.1个CPU核心和200MB的内存。为了模拟不同的负载情况,实验设定了静态和动态的工作负载,并且对延迟要求进行了不同的SLA设置,范围从50毫秒到200毫秒。

在比较中,Erms的表现相较于其他基线方案(如GrandSLAm、Rhythm和Firm)表现出明显的优势。Erms在静态负载下显著减少了资源使用量,在高负载情况下,相比其他方案节省了大量的容器。具体来说,Erms能够在处理相同工作负载时,显著减少容器的使用,尤其是在高工作负载和低SLA设置下,表现尤为突出。此外,Erms在动态负载条件下也显示了强大的性能,能够在负载变化时及时调整容器的数量,保持SLA不变。

Erms的优势部分归功于其有效的延迟目标计算、优先级调度和干扰感知资源配置模块。延迟目标计算模块能够显著降低资源使用量,而优先级调度则进一步提高了资源的利用效率。特别是在处理共享微服务时,Erms通过优先调度能够优化资源分配,从而减少整体资源需求。同时,干扰感知资源配置模块在资源分配时考虑了干扰因素,使得Erms在面对高干扰环境时依然能够保持较低的资源消耗和较好的延迟性能。