進擊的Kubernetes調度系統(三):支持批任務的Binpack Scheduling

前兩篇文章《進擊的Kubernetes調度系統 (一):Scheduling Framework》 和《進擊的 Kubernetes 調度系統(二):支持批任務的 Coscheduling/Gang scheduling 》分別介紹了Kubernetes Scheduling Framework和如何通過擴展Scheduling Framework實現Coscheduling/Gang scheduling調度策略。當我們的批任務作業在集羣裏邊運行起來之後,隨後要關注的就是資源的利用率。特別是對於GPU卡的價格昂貴,不希望有資源的浪費。本文將介紹在批任務的調度過程中如何通過Binpack的方式,減少資源碎片,提升GPU的利用率。

爲什麼需要Binpack功能?

Kubernetes默認開啓的資源調度策略是LeastRequestedPriority,消耗的資源最少的節點會優先被調度,使得整體集羣的資源使用在所有節點之間分配地相對均勻。但是這種調度策略往往也會在單個節點上產生較多資源碎片。

下面拿一個簡單的例子來說明這種問題。如下圖所示,資源在節點之間平均使用,所以每個節點使用3個GPU卡,則兩個節點各剩餘1GPU的資源。這是有申請2GPU的新作業,提交到調度器,則因爲無法提供足夠的資源,導致調度失敗。

原文鏈接:【https://www.infoq.cn/article/jgxW8923kwDF2oixcFCJ】。未經作者許可,禁止轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章