張若峰,張巍
傳統模式下,由申請人提交作業申請工單給資源池管理員,通過工單流轉方式進行作業的發起、處理、反饋,效率較為低下。資源池管理員審核工單后,憑借經驗手工劃撥服務器的cpu、內存、硬盤存儲、網絡帶寬等資源,授權給待運行作業,對管理員的經驗要求較高。作業完成后,才能將占用的服務器硬件、網絡資源的權限釋放,而出于系統穩定性考慮,管理員必須等到釋放之后才能進行下次分配,引起空置資源的浪費。為了解決手動分配作業調度的種種弊端,必須建立自動化的作業調度和分配機制,提高分布式作業的運行效率,提高資源池中服務器及其資源的利用效率。
為提高資源配置的效率,自2017年吉林移動開始自主研發經營分析多租戶系統的資源自動調度算法,取代人為干預的半自動算法,將X86集群中的CPU、內存、存儲、網絡帶寬等資源進行動態的分配,為不同類型作業分配相應資源,并實現全系統冗余資源的均衡負載。該算法主要應用在吉林移動經營分析多租戶系統中,為不同的數據使用用戶進行的作業進行資源分配。下文將主要基于云資源智能分配算法的核心要素和具體應用表現:
在多租戶環境下的資源調度,首先需要將計算機系統物理資源通過虛擬化技術抽象為相互獨立的虛擬資源,然后將計算任務分配到符合調度策略的最佳虛擬機節點上去。如何將虛擬資源進行抽象并通過節點屬性對節點的計算能力進行有效表示,是云計算資源調度的一個關鍵問題。本算法將一個虛擬機資源表示為:

通過對租戶虛擬資源的固有資源(cpu、內存、物理存儲)、網絡狀況(帶寬、距離)、當前運行狀態進行統一建模,從多角度對租戶的計算能力進行表達,盡可能準確的對租戶的計算能力進行描述,并從中找出最符合計算要求的計算節點,以高效的完成資源調度任務。
在物理服務器上運行的各虛擬機的計算能力是通過多方面來評估的,根據在實際場景中的約束條件,建立以下節點評價模型,如以下公式所示:

ρbandwidth分別代表虛擬機CPU、內存、硬盤存儲、路徑帶寬的評價值的權重,且

針對在多租戶環境下虛擬機計算節點的計算特征,根據租戶積累的任務執行速度的歷史數據對下一次任務執行速度進行預測評估。在多租戶系統中的每個計算節點的當前負載程度可以查詢,并且在歷史記錄中,上一次作業完成的平均負載程度可以查詢,根據這兩項數據,利用以下公式建立模型對任務執行速度進行預測:

其中,ak代表第k次執行速度預測時系統的實際負載程度,代表對序號m的計算節點的第k次執行速度的預測執行速度,代表序號為m的計算節點的第k次作業實際的執行速度,執行速度的單位為MIPS,ρ為預測執行速度在預測模型中的權重系數。參與作業執行的每一個節點在作業完成后會將本節點的本次作業執行情況進行記錄,記錄中包括作業執行速度以及系統負載程度。在節點負載程度中我們采用幾個量化的指標進行衡量,系統負載程度的度量模型如以下公式所示:


租戶提交的計算任務在尋找合適的計算資源節點過程中,首先,根據節點評價模型和節點作業執行速度的預測模型建立節點的計算能力整體評價模型,模型公式為:

其中,λ為調節參數,通過調節該系統,對模型中節點固定資源計算能力以及該節點對計算任務的實際執行能力進行適應性調整,以達最優的計算效果。
將算法的各個階段分段包裝成獨立模塊,通過標準接口進行數據互通,項目共分為三個主要模塊,即資源打分、作業預測和智能調度模塊。
資源打分模塊主要通過將服務器CPU、存儲、網絡帶寬等物理資源進行邏輯抽象為相互獨立的虛擬資源,通過評估模型將上述資源進行組合,換算為資源能力值,通過圖表方式將各個資源以拓撲圖標注參數的方式可視化展現,使得維護人員可以通過該模塊對全局資源的訪問變得簡單易行,查找資源的元數據關系變得直觀,通時以資源屬性列表方式對外提供標準數據接口。
作業預測模塊主要根據歷史作業的輸入、輸出、處理復雜度將作業分為不同類型,根據不同類型作業的歷史執行情況獲得該類作業資源使用的平均結果,換算為該類作業的資源需求值。對等待的作業進行隊列排序,賦予作業以一定的優先級,對優先級參數實現可配置,簡化對作業隊列的維護,同時通過作業關聯關系可以設置作業的前后置作業,使得復雜、多依賴關系的作業群可以在系統中有序執行,提高系統對復雜需求的處理能力。
作業調度模塊在接到新的作業時,首先通過作業預測模型計算,獲得該作業的資源需求值;再通過資源評價模型,分配具備等價資源能力值的資源,使得該作業獲得資源的使用權限并直接開始調度執行。
第一,構建基于云資源智能分配算法模型,提升對作業、資源的量化評估能力。模型包括資源評價計算模型、作業預測模型、新作業適配等多個評價環節,將資源池中的服務器及其資源進行量化,將作業平均運行速度/負載進行量化,使得作業的使用資源可以有效適配,保障了作業自動分配資源并運行的可能性 。
第二,基于云資源智能分配算法構建分布式作業調度機制,提升全局作業處理效率。原有的作業調度機制以工單和人工方式進行作業的調起,處理效率較低,且空置資源的使用和新作業的資源授權必須由管理員完成。新機制自動化、電子化的實現了原機制的所有功能,而其效率遠高于原機制。
第三,利用分布式作業調度機制創新資源分配模式,提升分布式系統的整體服務能力。通過使用分布式作業調度機制,可以保障資源池中的所有服務器及其包含的CPU、內存、硬盤存儲、網絡帶寬等資源的有效利用,而其增加的成本接近于零,體現了“降本增效”的工作原則。
通過上述主要模塊以及權限管理、安全管理等基礎要求,使得對復雜作業的調度管控和全局資源負載平衡達到了新的高度和精度。
自2018年1月算法正式上線以來,月均完成作業數量約為1880個,X86集群負載使用率低于87%,歷次割接、斷網等操作均未影響算法的穩定性,為吉林移動各地市分公司完成數據統計、產品設計、資費預演等生產活動提供了有力的支撐。
在云資源智能分配機制上線后,系統整體作業處理數量顯著增加,增長了約3.6倍,平均負載率降低22%,單臺服務器的資源峰值占用率降低了15%,全系統的生產效率得到有效提升,而資源負載則有效的進行了平均。
經濟效益方面,云資源智能分配機制本省屬于自主研發,因此其開發成本基本為零,但由于引發了系統生產能力和資源平均負載能力的提升,相當于節省了購買硬件資源的成本:目前經營分析分布式系統的硬件投資,包括所使用的CPU、內存、存儲、機柜、網絡設備等,上線以來累計節省成本超過3500萬元。
社會效益方面,云資源智能分配機制的上線,標志著我省分布式云計算系統能夠為未來公司經營決策、一線營銷提供更加強大的分析處理能力,提高業務部門服務滿意度。同時,通過服務器負載平均和智能分配再利用等機制,可以有效延長服務器硬件資源的使用壽命,對于提供更加穩定、高效的經營分析產品提供了保障。