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 應用最低資源保障,避免完全餓死。