Research in compute resource management for cloud-native applications is dominated by the problem of setting optimal CPU limits -- a fundamental OS mechanism that strictly restricts a container's CPU usage to its specified CPU-limits . Rightsizing and autoscaling works have innovated on allocation/scaling policies assuming the ubiquity and necessity of CPU-limits . We question this. Practical experiences of cloud users indicate that CPU-limits harms application performance and costs more than it helps. These observations are in contradiction to the conventional wisdom presented in both academic research and industry best practices. We argue that this indiscriminate adoption of CPU-limits is driven by erroneous beliefs that CPU-limits is essential for operational and safety purposes. We provide empirical evidence making a case for eschewing CPU-limits completely from latency-sensitive applications. This prompts a fundamental rethinking of auto-scaling and billing paradigms and opens new research avenues. Finally, we highlight specific scenarios where CPU-limits can be beneficial if used in a well-reasoned way (e.g. background jobs).
- 论文ID: 2510.10747
- 标题: CPU-Limits kill Performance: Time to rethink Resource Control
- 作者: Chirag Shetty (UIUC), Sarthak Chakraborty (UIUC), Hubertus Franke (IBM Research), Larisa Shwartz (IBM Research), Chandra Narayanaswami (IBM Research), Indranil Gupta (UIUC), Saurabh Jha (IBM Research)
- 分类: cs.DC (分布式计算), cs.OS (操作系统), cs.PF (性能)
- 发表时间: 2025年10月 (arXiv预印本)
- 论文链接: https://arxiv.org/abs/2510.10747
本文对云原生应用计算资源管理中的核心机制——CPU限制(CPU-Limits)提出了根本性质疑。尽管学术研究和工业实践普遍认为CPU限制是必需的,但作者通过实证证据表明,CPU限制实际上损害了应用性能并增加了成本。论文论证了对延迟敏感的应用应完全摒弃CPU限制,这需要对自动扩缩容和计费模式进行根本性重新思考,同时指出了CPU限制在特定场景(如后台任务)中的合理用途。
容器化微服务的CPU资源管理是云计算领域的核心问题。当前的主流做法是通过CPU-Limits (c.limit)机制严格限制容器的CPU使用量,这一机制基于Linux的cpu.cfs_quota_us实现。然而,作者观察到实际部署中存在显著的理论与实践脱节现象。
- 性能影响: CPU限制导致的throttling会使应用延迟急剧恶化,甚至引发级联故障
- 成本问题: 为避免throttling而设置的安全边际导致25-45%的资源过度配置
- 运维复杂性: DevOps人员需要在多个细粒度的CPU限制之间进行复杂的权衡
现有的自动扩缩容研究(如FIRM、Cilantro、Autothrottle等)都建立在CPU限制必需性的假设之上,专注于优化限制值而非质疑机制本身。作者通过分析发现,这些方法在移除CPU限制后都会失效。
通过对SRE(站点可靠性工程师)的访谈和在线讨论的调研,作者发现运维社区对CPU限制存在分歧。许多从业者已经开始移除CPU限制以改善性能,这与学术界的主流观点形成对比。
- 挑战传统观念: 首次系统性地质疑CPU限制在延迟敏感应用中的必要性,提供了充分的实证证据
- 性能分析: 深入分析了CPU限制对延迟、可靠性和成本的负面影响机制
- 替代方案设计: 证明了仅使用CPU-Requests (c.req)进行资源管理的可行性和优势
- 新范式提出: 提出了基于性能的计费模式和无限制的自动扩缩容设计
- 原型实现: 构建了YAAS(Yet Another AutoScaler)原型,实现了51%的资源节省
- 应用场景划分: 明确界定了CPU限制的合理使用场景(如后台任务、CPU绑定等)
研究目标是重新设计容器CPU资源管理机制,在不使用CPU限制的情况下,通过优化CPU-Requests和节点利用率来实现更好的性能-成本权衡。
作者构建了一个决策树(图1)来系统性地分析CPU限制的各种配置场景:
- limit = req: 导致成本增加,需要25-45%的安全边际
- limit > req:
- 如果限制永不触及,则无必要
- 如果限制可能触及,会导致自动扩缩容器"挂起"或延迟急剧恶化
作者从两个层面证明了仅使用CPU-Requests的充分性:
CFS调度器保证: Linux CFS调度器提供比例公平性保证,确保具有CPU-Requests r_i的Pod P_i在总CPU为C的节点上获得最少(r_i/Σr_j) × C的CPU时间。
编排器门控: Kubernetes等编排器确保节点上所有容器的CPU-Requests总和不超过节点容量,使得CPU-Requests成为绝对最小保证。
YAAS基于两个关键控制变量:
- Overage (U-R): Pod实际使用量与分配量的差值
- 节点利用率 (N): Pod所在节点的总CPU利用率
核心策略:
- 保持overage ≥ 0,仅在SLO即将违反时增加资源
- 通过Pod迁移优化节点利用率
- 结合垂直和水平扩缩容
使用DeathStarBench中的两个微服务应用:
- HotelReservation (HR): 酒店预订系统
- SocialNetwork (SN): 社交网络应用
- 平台: Amazon EC2集群
- 负载模式: 变化的请求负载,模拟实际生产环境
- 评价指标:
- 端到端尾延迟(P99)
- CPU资源使用量
- 扩缩容次数和收敛时间
- 成本效率
- 传统的基于CPU限制的HPA (Horizontal Pod Autoscaler)
- 手动优化的CPU限制配置
- 不同安全边际设置(20%-30%)
延迟影响:
- 仅在一个Pod(共19个)上设置CPU限制就导致端到端尾延迟恶化5倍
- CPU限制通过两种机制损害性能:单请求throttling和跨请求队列形成
成本分析:
- 避免throttling需要25-45%的资源过度配置
- 简单移除CPU限制可节省38%资源
- YAAS进一步实现51%的资源节省
扩缩容性能:
- 负载增加25%时,扩缩容阈值从60%提升到70%导致SLO满足时间增加4倍
- 展现了CPU限制对自动扩缩容敏感性的影响
安全边际分析: 不同应用需要不同的安全边际:
- nginx-thrift: 30%
- user-timeline-service: 45%
队列形成机制: 通过理论分析和实验验证了CPU限制如何在较低负载下形成队列,而CPU-Requests不会产生此问题。
多租户场景: 实验显示两个应用共存时,CPU-Requests能够有效保护conformant应用不受bursting应用影响,而CPU限制反而会恶化性能。
级联故障: CPU限制导致的长队列可能使Pod内存超限,引发Pod重启,进而导致其他Pod达到限制或请求超时。
论文系统分析了近期顶级会议的自动扩缩容工作,发现它们都依赖CPU限制:
- FIRM: 使用强化学习优化CPU限制
- Cilantro: 基于在线反馈调整资源分配
- Autothrottle: 双层方法处理SLO目标
- Ursa: 基于分析驱动的资源管理
- Kubernetes QoS分类要求关键容器设置CPU限制
- 云服务商(如GCP Autopilot)自动应用CPU限制
- 多租户最佳实践推荐使用CPU限制
- CPU限制有害: 对延迟敏感应用,CPU限制要么有害(导致throttling)要么无用(永不触及)
- CPU-Requests充分: 现代编排器和调度器的保证使得CPU-Requests足以提供资源隔离
- 新设计空间: 移除CPU限制开启了基于overage和节点利用率的新优化维度
- 范式转变需求: 需要重新设计自动扩缩容和计费模式
- 适用范围: 主要针对延迟敏感应用,后台任务等场景仍需CPU限制
- 实验规模: 实验基于特定的微服务基准,需要更大规模的验证
- 生产部署: 原型YAAS需要进一步工程化才能用于生产环境
- 生态系统: 需要编排器、监控和计费系统的协同改变
- 智能调度: 结合微架构资源(缓存、内存带宽)的干扰感知调度
- 性能计费: 基于SLO满足情况而非资源使用量的计费模式
- 垂直扩缩容: 无CPU限制环境下的垂直扩缩容优化
- 多维优化: Pod扩缩容与节点扩缩容的联合优化
- 颠覆性观点: 勇于挑战领域内的基本假设,具有重要的学术价值
- 实证充分: 通过理论分析、实验验证和工业调研多维度支撑观点
- 实用价值: 提供了具体的替代方案和原型实现,具有直接的应用价值
- 系统性分析: 从性能、成本、可靠性等多个角度全面分析问题
- 平衡观点: 既批判了CPU限制的滥用,也指出了其合理使用场景
- 实验局限: 实验主要基于两个微服务应用,缺乏更广泛的应用类型验证
- 生产验证: 缺乏大规模生产环境的长期验证数据
- 兼容性: 对现有系统和工具链的改造成本分析不足
- 安全考虑: 对移除CPU限制可能带来的安全风险讨论不够深入
学术影响:
- 可能引发资源管理领域的范式转变
- 为自动扩缩容研究提供新的设计思路
- 挑战了十多年来的行业最佳实践
工业影响:
- 为云服务提供商提供了成本优化的新途径
- 可能影响Kubernetes等编排器的未来设计
- 推动基于性能的计费模式创新
直接适用:
- 延迟敏感的在线服务
- 成本敏感的云原生应用
- 需要高性能保证的微服务架构
需要谨慎:
- 多租户环境(需要额外的隔离机制)
- 包含后台任务的混合工作负载
- 对资源使用有严格合规要求的场景
论文引用了83篇相关文献,涵盖了容器编排、资源管理、自动扩缩容等多个领域的重要工作。关键参考文献包括:
- Kubernetes官方文档和最佳实践
- 近期顶级会议的自动扩缩容研究(OSDI, NSDI, EuroSys等)
- Linux内核CPU调度和控制组相关文档
- 工业界的实践经验和案例研究
这篇论文以其颠覆性的观点和充分的实证分析,对云原生资源管理领域提出了重要挑战。虽然完全移除CPU限制可能需要生态系统的广泛变革,但其提供的洞察和替代方案为该领域的未来发展指明了新的方向。论文的价值不仅在于技术贡献,更在于其对行业既定观念的深刻反思。