Achieving resource efficiency while preserving end-user experience is non-trivial for cloud application operators. As cloud applications progressively adopt microservices, resource managers are faced with two distinct levels of system behavior: end-to-end application latency and per-service resource usage. Translating between the two levels, however, is challenging because user requests traverse heterogeneous services that collectively (but unevenly) contribute to the end-to-end latency. We present Autothrottle, a bi-level resource management framework for microservices with latency SLOs (service-level objectives). It architecturally decouples application SLO feedback from service resource control, and bridges them through the notion of performance targets. Specifically, an application-wide learning-based controller is employed to periodically set performance targets -- expressed as CPU throttle ratios -- for per-service heuristic controllers to attain. We evaluate Autothrottle on three microservice applications, with workload traces from production scenarios. Results show superior CPU savings, up to 26.21% over the best-performing baseline and up to 93.84% over all baselines.
翻译:实现资源效率同时保持最终用户体验对云应用运维者而言并非易事。随着云应用逐步采用微服务架构,资源管理器面临两个不同层次的系统行为:端到端应用延迟与单服务资源使用。然而,在这两个层次间进行转换颇具挑战性,因为用户请求需遍历异构服务,这些服务共同(但非均匀地)影响端到端延迟。本文提出Autothrottle——一种面向具有延迟SLO(服务等级目标)微服务的双层资源管理框架。该框架在架构上将应用SLO反馈与服务资源控制解耦,并通过性能目标概念实现两者桥接。具体而言,框架采用全局学习控制器定期设定性能目标(以CPU限流比表示),供单服务启发式控制器执行。我们采用生产场景的工作负载轨迹,在三个微服务应用上评估Autothrottle。结果表明,该框架可显著节省CPU资源,相比最优基线提升高达26.21%,相比全部基线最高可达93.84%。