CPU QoS 功能包括节点资源超卖调度和 BE 离线应用 CPU 压制机制,帮助您实现资源的高效利用与动态调整。
适用场景
集群资源利用率低,需要提高节点资源使用效率。
需要在保证在线应用(LS 优先级)性能的同时,充分利用空闲资源运行离线应用(BE 优先级)。
需要在在线应用负载增加时,自动压制离线应用资源使用,确保在线应用性能。
功能概览
节点资源超卖调度:允许节点接受超过其声明资源总量的应用调度请求,提高资源利用率。
BE 应用 CPU 动态压制:根据在线应用的实际负载,动态调整离线应用可使用的 CPU 资源范围。
优先级差异化服务:确保高优先级应用(LS)获得资源保障,低优先级应用(BE)弹性使用剩余资源。
操作指南
节点资源超卖调度
BE 应用 CPU 动态压制
当节点上的在线应用(LS 优先级)CPU 负载增加时,混部系统会自动压制 BE 优先级应用的 CPU 使用范围,确保在线应用获得足够资源,同时最大化利用节点空闲资源。
压制机制
系统通过动态调整 BE 应用的 cpuset 范围来实现 CPU 压制
压制程度根据 LS 应用的实际负载动态变化
系统确保 BE 应用至少保留最小核心数(默认为 2 核),避免完全饿死
观察压制效果
查看 BE 应用初始 CPU 分配
在节点负载较低时,BE 应用获得较大的 CPU 使用范围
$ kubectl -n koordinator-system exec -ti <koordlet-pod-name> -- bash $ cat /host-cgroup/cpuset/kubepods.slice/kubepods-besteffort.slice/cpuset.cpus 0-2 # BE 应用可使用 0-2 共 3 个核心
增加 LS 应用负载
当 LS 应用 CPU 负载增加时(例如从 10% 增加到 90% )
系统自动调整 BE 应用的 cpuset 范围
观察 BE 应用 CPU 被压制
$ kubectl -n koordinator-system exec -ti <koordlet-pod-name> -- bash $ cat /host-cgroup/cpuset/kubepods.slice/kubepods-besteffort.slice/cpuset.cpus 0-1 # BE 应用被压制,CPU 使用范围减少为 0-1 共 2 个核心
常见问题
超卖调度相关
为什么开启超卖后,某些 BE 应用仍无法调度?
1、检查是否正确绑定了 BE 优先级。
2、确认混部调度器已启用并正常运行。
3、节点可能存在其他资源(如内存)限制。
超卖比例如何确定?
1、统根据历史负载和配置自动计算合理的超卖比例。
2、默认配置已适用于大多数场景,一般无需手动调整。
CPU 压制相关
BE 应用被压制后性能下降严重?
1、属于正常现象,BE 应用设计为弹性使用剩余资源。
2、可通过调整优先级或增加节点资源来改善。
如何确认 CPU 压制是否生效?
1、通过观察 BE 应用的 cpuset 范围变化。
2、查看 BE 应用的实际 CPU 使用率是否下降。
3、监控混部系统的事件日志。
注意
资源超卖可能导致节点负载增加,建议合理规划应用部署。
CPU 压制机制会影响 BE 应用性能,不建议将关键业务设置为 BE 优先级。
混部系统会保证 BE 应用最低资源保障,避免完全饿死。