- 文档首页
容器服务
容器服务 VKE
最佳实践
调度
CPU Burst 能力最佳实践
CPU Burst 能力最佳实践
本文主要描述 CPU Burst 能力相关的最佳实践。
在容器化环境中,为容器设置 CPU Limit 是常见的资源隔离手段。当业务出现突发流量时,容器可能因 CPU 限流(Throttle)而导致服务质量下降,表现为请求延迟升高、吞吐量下降等。
CPU Burst 是 katalyst 提供的弹性 CPU 资源能力,可动态感知容器的 CPU Throttled 状态,并对容器的 CPU 参数进行自适应调节。在出现突发负载时,CPU Burst 临时为容器提供超出 CPU Limit 的 CPU 资源,缓解 CPU 限流带来的性能瓶颈,从而保障延迟敏感型应用的服务质量。更多功能说明,请参见 使用 Pod CPU Burst 能力。 CPU Burst 主要适用于以下三类典型场景。
- 典型表现:Pod CPU 被 CFS Quota 限流,P99 延迟出现尖刺,持续时间为毫秒级。
- 推荐策略:cpuBurstOnly(开启内核 Burst)或auto(自适应开启 cpuBurstOnly 和 cfsQuotaBurstOnly 两种弹性能力)。
- 预期效果:内核态借用未使用的 CPU 配额,P99 延迟显著下降。
- 适用业务:Web 服务、API 网关、微服务等延迟敏感型在线服务。
- 典型表现:内核 Burst 信用很快耗尽,仍然触发限流,TPS 下降,持续时间为秒级至分钟级。
- 预期效果:用户态动态放大 CFS Quota,TPS 与 P99 同步改善。
- 适用业务:Elasticsearch 搜索引擎、中间件服务、数据库代理等持续高负载服务。
- 典型表现:应用初始化阶段(如 JVM 预热、类加载)CPU 需求远超稳态,导致启动时间过长。
- 预期效果:启动阶段允许容器临时使用更多 CPU 资源,加速应用就绪。
- 适用业务:Java 应用、需要预热的 AI 推理服务。
在使用 CPU Burst 能力前,请确认以下条件均已满足:
- 集群已部署 v0.5.13-vke.14 及以上版本的 katalyst 组件并启用了 CPU Burst 相关配置。 详情请参见 katalyst。
- 目标 Pod 所在节点/节点池已添加 Label:vke.node.katalyst.deploy=true。详情请参见 为节点添加 Label。
katalyst 提供四种 CPU Burst 策略,您可以根据业务负载特征选择合适的策略。
以下提供两类典型场景的完整配置示例,包含场景描述、操作步骤和验证步骤。
适用于大多数在线服务,例如 Nginx、API 网关、微服务等。该场景以短时突发流量为主,开启auto策略后其他参数使用默认值即可获得良好效果。
- 在 Pod 的metadata.annotations中添加katalyst.kubewharf.io/cpu_enhancement注解,并启用 CPU Burst 的auto策略。
- 在 Pod 所在节点上确认内核 CPU Burst 是否已启用。详细操作,请参见 验证结果。
- 目前 VMP 提供container_cpu_cfs_throttled_periods_total和container_cpu_cfs_periods_total基础指标,可直接通过 Explore 查询。您也可以通过 VMP 监控看板 自行实现更多 Pod 资源监控。
适用于 Elasticsearch、中间件等持续高负载场景。建议限制 CFS Quota 弹性的持续时间,避免长时间高负载运行;同时可适当调高节点共享池 CPU 阈值,为业务预留更多弹性空间。
- (可选)在集群层面调整节点共享池 CPU 阈值。
注意
- 如果节点存在较多空闲资源,可以按照下文内容适当整集群层面节点共享池 CPU 阈值,否则无需进行集群层面配置。
- 以 IAM 用户身份进行集群层面操作时,请确保具有管理员权限。详情请参见 RBAC 权限。
- 创建对应的 katalystCustomConfig 对象,使集群级配置生效。
- 进行 Pod 层面配置,在业务应用的 Pod 中开启auto策略,并设置持续时间限制。
- 在 Pod 所在节点上确认内核 CPU Burst 和 CFS Quota 是否已启用。详细操作,请参见 验证结果。
- 通过监控平台(例如 VMP)观察 Pod 的 CPU Throttled 指标。
- 目前 VMP 提供container_cpu_cfs_throttled_periods_total和container_cpu_cfs_periods_total基础指标,可直接通过 Explore 查询。您也可以通过 VMP 监控看板 自行实现更多 Pod 资源监控。
- 确认 Pod 已设置 CPU Limit,未设置 Limit 的 Pod 无法启用 CPU Burst 能力。
- 内核版本为 5.4、5.10、5.15 的 veLinux 公共镜像
- 内核版本为 5.15 的 Ubuntu 公共镜像
*如何选择 cpuBurstOnly、cfsQuotaBurstOnly 和 auto?
*业务流量大部分时间都比较低,偶尔出现毫秒级突发流量:选择cpuBurstOnly。
*业务存在持续数秒甚至分钟的高负载流量或者流量模型不规律:选择auto。
*节点内核版本不支持 CPU Burst 功能:选择cfsQuotaBurstOnly。
如何选择 cpuBurstOnly、cfsQuotaBurstOnly 和 auto?
- 业务流量大部分时间都比较低,偶尔出现毫秒级突发流量:选择cpuBurstOnly。
- 业务存在持续数秒甚至分钟的高负载流量或者流量模型不规律:选择auto。
- 节点内核版本不支持 CPU Burst 功能:选择cfsQuotaBurstOnly。
*sharePoolThresholdPercent 设置多少合适?
*默认值 50% 适用于大多数场景。如果节点存在较多空闲资源且应用对延迟不敏感,可适当提高至 60% ~ 70%,以允许更多 Burst。
sharePoolThresholdPercent 设置多少合适?
默认值 50% 适用于大多数场景。如果节点存在较多空闲资源且应用对延迟不敏感,可适当提高至 60% ~ 70%,以允许更多 Burst。
cfs_quota_burst_period_seconds 如何设置?
- 默认值-1表示不限制持续时间,适用于业务高负载持续时间不确定或业务无法容忍任何 CPU 限流的场景。
- 设置为正整数表示限制持续时间,适用于业务高负载持续时间相对确定、且可容忍短时 CPU 限流的场景。
最近更新时间:2026.06.30 14:11:14