nsga2算法_用遗传算法进行容量管理 让虚拟机放置策略更优
隨著互聯網技術的高速發展,云計算已經成為各行各業的“水電煤”,成為“互聯網+”的基礎設施,而數據中心則是云服務背后的剛性保障。無論是傳統的數據中心,還是云形態的數據中心,虛擬化技術都是提升其資源利用率、降低管理成本的重要方式。
據統計,早在2016年,AWS的服務器規模已經到達55萬臺,而虛擬機數量則超過了800萬。隨著虛擬機數量急劇增加,虛擬機的放置方案自然成為了決定數據中心資源利用率及其他需求的關鍵。
如果想提高數據中心的資源利用率,就需要采用合適的放置方案,使用最少的物理機便可以實現資源利用率的最優化,并起到節能的效果。而為了維持系統的高可用性,也需要選擇合適的放置方案,使得不同服務器之間的資源使用率盡量均衡。
許多研究將虛擬機放置描述為“多維裝箱”問題,裝入的物品為虛擬機,其使用的資源為物品大小;而箱子則是物理機,箱子容量是物理機配置閾值,資源可包括CPU、內存、磁盤、網絡帶寬等,資源的種類數即為裝箱問題的維度。
假設物理機數量為M,虛擬機數量為N,則理論上最多有M的N次方種部署方案,為NP-hard問題。在解決NP-hard問題的方法中,啟發式算法如遺傳算法、模擬退火算法等都有優秀的表現。在此我們介紹經典的遺傳算法在解決該問題中的思路與具體落地方案。
遺傳算法是一種全局優化搜索算法,以其簡單通用、魯棒性強、適于并行處理,以及高效和實用等顯著特點,在各個領域得到了廣泛應用。
遺傳算法以一種群體中的所有個體為對象,并利用隨機化技術對一個被編碼的參數空間進行高效搜索。其中,選擇、交叉和變異構成了遺傳算法的遺傳操作;編碼、初始群體設定、適應度函數設計、遺傳操作設計、控制參數設定五個要素組成了遺傳算法的核心內容。那么,對于”虛擬機放置在物理機上”這個問題,怎么去理解遺傳算法的五個要素呢?
通過以下概念的釋義,我們將現實世界中的虛擬機、物理機、虛擬機放置方案,評價當前方案的指標等問題,并映射到“遺傳算法”過程中的專有名詞,進而通過遺傳算法進行求解:
染色體:一條染色體代表一種“當前虛擬機序列的放置方案”,也被稱為種群中的個體;
評估染色體方式:不同的放置方案有著不同的適應值,而適應值決定了當前方案的優劣;通常采用物理機使用數量來評估染色體,同時考慮高可用限制、虛擬機數量限制等因素,這種面向多目標的問題可以使用“快速非支配排序”結合“局部擁擠距離”算法進行求解;
遺傳組合行為(交叉、變異):改變染色體上的部分虛擬機的放置序列的行為;
種群:由多個染色體組成,代表當前進化次數下的染色體集合(多種放置方案的集合);
在將現實實體及問題映射到遺傳算法的專有名詞后,我們將演示如何把遺傳算法的五個要素映射到現實問題中:
編碼
如上圖所示,將每個“全量虛擬機序列在物理機序列上的放置方案”作為一條染色體,這是典型的進行“組編碼”的方式,可以看到由于采用了不同物理機,兩條染色體最終使用的物理機數量也是不同的。
初始群體設定
基于啟發式的初始化群體方法可以降低算法優化過程的復雜度,但同時要保證群中染色體的多樣性,這樣是為了擴大搜索解空間,從而求解近似于全局最優解而非局部最優解;
在啟發式算法中,第一個虛擬機放入第一個物理機,然后根據虛擬機序列順序,依次放入其他虛擬機,直到第一個物理機資源不足。該過程可理解為:對于任意一臺虛擬機,需先遍歷當前已使用的物理機序列,直到被使用的物理機無法滿足該資源需求。此時新開辟一臺物理機為其使用——這是生成一條染色體的方式,同時為了保證種群的多樣性,在每次生成新染色體時,我們需要隨機打亂虛擬機序列的順序,這種方法顯然是簡單而有效的。
適應度函數的設計
適應度是對當前種群中個體的評價方式,對于多目標優化問題一般可采用二代多目標優化算法NSGA2中的快速非支配排序進行個體等級劃分,然后通過局部密度算法進行密度估計,確定每個個體的優先級。
這個過程聽起來很抽象,它的具體操作是怎樣進行的呢? 如下圖所示:若Costf1 和 Cost f2 分別表示個體在“使用物理機數量”、“整體高可用性”上的度量,且取值越大代表該方案在該維度上越優秀,則對于個體集合{1,2,3,4}來說,每個元素都至少存在另外一個在各方面比自身優秀的個體,如對于個體4來說,個體5在“使用物理機數量”、“整體高可用性”上的維度上都優于個體4,此時我們說“個體5是支配個體4的”;而對于集合{5,6,7}來說,因為不存在支配他們的個體,所以他們被稱為“非支配解”;這種“非支配解”的適應度在理論上應該是最高的。
遺傳操作設計
遺傳算法中的核心操作便是“選擇”、“基因交叉”、“基因變異”,這三個操作決定了種群的進化方向,是讓算法朝著我們的目標不斷優化的基礎。
“選擇”(Selection):采用2-約束競賽選擇法,在該方法中,從當前種群中隨機挑選兩個個體,然后將適應值最大的個體作為父個體,不斷重復該操作,直到個體數量達到預定的種群規模,選出的父個體作為下一代種群.兩個個體的比較方法采用NSGA2引入的擁擠比較算子。
“交叉”(Crossover):挑選兩個“選擇”過程中被選定的父個體作為交叉對象A、B,隨機選擇A中的物理機a,將該物理機a放入B中,同時將B個體中包含a的虛擬機序列的原物理機從B中刪除,同時記錄被刪除的虛擬機再次放置到B上。該操作實現了某臺物理機的虛擬機序列重分配,且因為物理機的挑選是隨機的,確保了“交叉”的多樣性;
“變異”(Mutation):“變異”的操作相對簡單,且具有易懂的解釋性:從父個體中隨機挑選一個染色體A,然后從個體A上隨機挑選一個物理機a,將其刪除,并將原來a上的虛擬機序列重新插入到A中——這樣的目的是為了減少物理機的使用,但由于物理機a是隨機挑選的,其并不能保證每次變異的方向都是對的,因此我們可以降低“變異”操作發生的概率,而且這也正體現出了正確的“選擇”的重要性。
控制參數設定
參數設定主要是指在遺傳操作中各操作的發生概率,如:我們可以設定“交叉”操作的發生概率為0.6,“變異”操作的發生概率為0.05;有效的參數設定可以控制種群更快、更好的給出近似最優解。
通過實現以上五個要素,我們便可以根據遺傳算法的固定步驟,進行虛擬機放置問題的求解了。
一般來說,跳出算法迭代的條件有兩個:一是當前最優染色體的適應值已滿足目標設定值,二是達到指定的迭代次數。通過人為經驗選擇合理的遺傳操作策略,我們便可以快速得到我們目標方案。
用AIOps更有效地進行微服務排障
青銅到王者晉級之戰 夏洛克AIOps從容應對千百萬級別的告警風暴
Gartner中國ICT成熟度曲線發布 擎創成AIOps領域重點推薦服務商
擎創科技簡介
擎創科技,成立于2016年,是國內首家智能運維 AIOps落地解決方案的供應商。公司專注于將人工智能賦能運維管理,發掘運維數據的潛在價值,推動企業數字化轉型。公司的核心產品夏洛克AIOps,能夠結合客戶的實際需求,通過人工智能和大數據等技術,實現指標異常檢測和趨勢預測、故障根因界定和定位、日志智能聚類等智能化分析功能。產品已在中國銀聯、交通銀行、太平洋保險、方正證券、東方航空集團等行業標桿企業落地,覆蓋銀行、保險、證券、制造及交通等多個行業。擎創科技總部位于上海,并在北京和深圳成立了辦事處。總結
以上是生活随笔為你收集整理的nsga2算法_用遗传算法进行容量管理 让虚拟机放置策略更优的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python多线程没用_Python中的
- 下一篇: 5000并发的qps是多少_高并发架构设