本發(fā)明涉及虛擬機(jī)技術(shù)領(lǐng)域,尤其涉及虛擬機(jī)cpu資源的管理方法及裝置。
背景技術(shù):
虛擬機(jī)指通過軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng)。在虛擬化的平臺(tái),虛擬機(jī)的運(yùn)行是通過獲取物理主機(jī)分配的cpu資源來保證,如果虛擬機(jī)在使用時(shí)cpu資源不能滿足就會(huì)影響到這臺(tái)虛擬機(jī)的正常運(yùn)行。
現(xiàn)有技術(shù)中,一般按照虛擬機(jī)的核數(shù)配置分配各虛擬機(jī)的cpu資源占比,這種做法的缺陷在于:cpu資源的分配只是按照配置而沒有考慮實(shí)際場(chǎng)景,如果在cpu資源比較緊缺的環(huán)境下仍按照核數(shù)配置的高低分配cpu資源,就會(huì)導(dǎo)致配置較低的虛擬機(jī)直接分配不了cpu而產(chǎn)生卡死;此外,對(duì)于虛擬機(jī)實(shí)際cpu的消耗目前并沒有相關(guān)的策略進(jìn)行監(jiān)控和處理,在實(shí)際場(chǎng)景中,如果有虛擬機(jī)內(nèi)部發(fā)生異常導(dǎo)致其cpu占用較高但是并沒有相關(guān)的方式來限制,就會(huì)影響其他虛擬機(jī)的cpu資源使用,最終導(dǎo)致主機(jī)的cpu資源被浪費(fèi),整個(gè)操作環(huán)境的使用體驗(yàn)也會(huì)變差。
總之,由于目前對(duì)虛擬機(jī)使用的cpu資源缺乏一種有效的監(jiān)控和管理方式,在某些場(chǎng)景下將會(huì)導(dǎo)致物理主機(jī)cpu資源的浪費(fèi),同時(shí)影響虛擬機(jī)的使用體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提出一種虛擬機(jī)cpu資源的管理方法及裝置,旨在實(shí)現(xiàn)對(duì)虛擬機(jī)使用的cpu資源進(jìn)行有效管理,從而減少物理主機(jī)cpu資源的浪費(fèi),同時(shí)提升虛擬機(jī)的使用體驗(yàn)。
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種虛擬機(jī)cpu資源的管理方法,所述方法包括如下步驟:
檢測(cè)當(dāng)前運(yùn)行的虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率;
根據(jù)所述虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率判斷所述虛擬機(jī)的cpu消耗是否滿足預(yù)設(shè)的異常條件;
若是,則對(duì)所述虛擬機(jī)進(jìn)行cpu限額,并將所述虛擬機(jī)添加至異常虛擬機(jī)組。
可選地,所述根據(jù)所述虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率判斷所述虛擬機(jī)的cpu消耗是否滿足預(yù)設(shè)的異常條件的步驟包括:
獲取所述主機(jī)系統(tǒng)cpu各核心當(dāng)前的使用率的平均值和所述虛擬機(jī)的核數(shù);
將所述各核心的使用率的平均值乘以所述虛擬機(jī)的核數(shù),得到所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值;
若連續(xù)檢測(cè)到所述虛擬機(jī)內(nèi)部的cpu使用率大于或等于預(yù)設(shè)閾值,且所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率大于或等于所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值超過預(yù)設(shè)次數(shù),則判定所述虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件。
可選地,對(duì)所述虛擬機(jī)進(jìn)行cpu限額的步驟包括:
計(jì)算所述主機(jī)系統(tǒng)cpu各核心的配置頻率的平均值;
根據(jù)所述各核心的配置頻率的平均值和所述虛擬機(jī)的核數(shù)進(jìn)行計(jì)算,得到所述虛擬機(jī)的頻率限額;
根據(jù)所述頻率限額對(duì)所述虛擬機(jī)進(jìn)行cpu限額。
可選地,所述對(duì)所述虛擬機(jī)進(jìn)行cpu限額,并將所述虛擬機(jī)添加至異常虛擬機(jī)組的步驟之后,還包括:
檢測(cè)所述異常虛擬機(jī)組中的虛擬機(jī)是否恢復(fù)正常;
若是,則解除對(duì)恢復(fù)正常的虛擬機(jī)的cpu限額,并將所述虛擬機(jī)從所述異常組中移出。
可選地,檢測(cè)所述異常虛擬機(jī)組內(nèi)的虛擬機(jī)是否恢復(fù)正常的步驟包括:
檢測(cè)所述異常組中的虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率;
若連續(xù)檢測(cè)到所述異常組中的虛擬機(jī)內(nèi)部的cpu使用率小于所述預(yù)設(shè)閾值,且所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率小于所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值超過所述預(yù)設(shè)次數(shù),則判定所述虛擬機(jī)恢復(fù)正常。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種虛擬機(jī)cpu資源的管理裝置,所述裝置包括:
第一檢測(cè)模塊,用于檢測(cè)當(dāng)前運(yùn)行的虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率;
判斷模塊,用于根據(jù)所述虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率判斷所述虛擬機(jī)的cpu消耗是否滿足預(yù)設(shè)的異常條件;
限額模塊,用于若所述虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件,則對(duì)所述虛擬機(jī)進(jìn)行cpu限額,并將所述虛擬機(jī)添加至異常虛擬機(jī)組。
可選地,所述判斷模塊還包括:
獲取單元,用于獲取所述主機(jī)系統(tǒng)cpu各核心當(dāng)前的使用率的平均值和所述虛擬機(jī)的核數(shù);
計(jì)算單元,用于將所述各核心的使用率的平均值乘以所述虛擬機(jī)的核數(shù),得到所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值;
判定單元,用于若連續(xù)檢測(cè)到所述虛擬機(jī)內(nèi)部的cpu使用率大于或等于預(yù)設(shè)閾值,且所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率大于或等于所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值超過預(yù)設(shè)次數(shù),則判定所述虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件。
可選地,所述限額模塊還用于:
計(jì)算所述主機(jī)系統(tǒng)cpu各核心的配置頻率的平均值;
根據(jù)所述各核心的配置頻率的平均值和所述虛擬機(jī)的核數(shù)進(jìn)行計(jì)算,得到所述虛擬機(jī)的頻率限額;
根據(jù)所述頻率限額對(duì)所述虛擬機(jī)進(jìn)行cpu限額。
可選地,所述裝置還包括:
第二檢測(cè)模塊,用于檢測(cè)所述異常虛擬機(jī)組中的虛擬機(jī)是否恢復(fù)正常;
解除模塊,用于若所述異常虛擬機(jī)組中的虛擬機(jī)恢復(fù)正常,則解除對(duì)恢復(fù)正常的虛擬機(jī)的cpu限額,并將所述虛擬機(jī)從所述異常組中移出。
可選地,所述第二檢測(cè)模塊還用于:
檢測(cè)所述異常組中的虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率;
若連續(xù)檢測(cè)到所述異常組中的虛擬機(jī)內(nèi)部的cpu使用率小于所述預(yù)設(shè)閾值,且所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率小于所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值超過所述預(yù)設(shè)次數(shù),則判定所述虛擬機(jī)恢復(fù)正常。
本發(fā)明檢測(cè)當(dāng)前運(yùn)行的虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率;根據(jù)所述虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率判斷所述虛擬機(jī)的cpu消耗是否滿足預(yù)設(shè)的異常條件;若是,則對(duì)所述虛擬機(jī)進(jìn)行cpu限額,并將所述虛擬機(jī)添加至異常虛擬機(jī)組。本發(fā)明通過檢測(cè)虛擬機(jī)運(yùn)行時(shí)的cpu使用率,并對(duì)異常的虛擬機(jī)進(jìn)行cpu限額處理,能夠保證其他非異常虛擬機(jī)的cpu資源不被搶占,從而保證其他非異常虛擬機(jī)正常運(yùn)行,減少了物理主機(jī)cpu資源的浪費(fèi),提升了虛擬機(jī)的使用體驗(yàn)。本發(fā)明能夠?qū)崿F(xiàn)對(duì)虛擬機(jī)使用的cpu資源進(jìn)行有效管理,從而減少物理主機(jī)cpu資源的浪費(fèi),同時(shí)提升虛擬機(jī)的使用體驗(yàn)。
附圖說明
圖1為本發(fā)明虛擬機(jī)cpu資源的管理方法第一實(shí)施例的流程示意圖;
圖2為本發(fā)明虛擬機(jī)cpu資源的管理方法第二實(shí)施例的流程示意圖;
圖3為本發(fā)明虛擬機(jī)cpu資源的管理方法第三實(shí)施例的流程示意圖;
圖4為本發(fā)明虛擬機(jī)cpu資源的管理裝置第一實(shí)施例的功能模塊示意圖;
圖5為圖4中限額模塊的細(xì)化功能模塊示意圖;
圖6為本發(fā)明虛擬機(jī)cpu資源的管理裝置第二實(shí)施例的功能模塊示意圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明提供一種虛擬機(jī)cpu資源的管理方法。
參照?qǐng)D1,圖1為本發(fā)明虛擬機(jī)cpu資源的管理方法第一實(shí)施例的流程示意圖。所述方法包括如下步驟:
步驟s10,檢測(cè)當(dāng)前運(yùn)行的虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率;
在本實(shí)施例中,主機(jī)搭載linux操作系統(tǒng),并通過cgroup(controlgroups,控制組)的cpu子系統(tǒng)對(duì)主機(jī)上運(yùn)行的各個(gè)虛擬機(jī)進(jìn)行cpu資源的管理。所謂cgroup,是一種將任意進(jìn)程進(jìn)行分組化管理的linux內(nèi)核功能,是linux內(nèi)核提供的一種可以限制、記錄、隔離進(jìn)程組所使用的物力資源的機(jī)制,其提供了控制內(nèi)存的memory控制器、控制進(jìn)程調(diào)度的cpu控制器等cgroup子系統(tǒng)。
主機(jī)系統(tǒng)開機(jī)時(shí),先掛載好cgroup的cpu子系統(tǒng),用于管理cgroup中進(jìn)程的cpu使用。虛擬機(jī)啟動(dòng)的時(shí)候,將其cpu的所有線程按組放到cgroup下面,后臺(tái)虛擬機(jī)管理機(jī)制定時(shí)遍歷運(yùn)行的虛擬機(jī),檢測(cè)虛擬機(jī)內(nèi)部的cpu使用率和虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率。
步驟s20,根據(jù)所述虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率判斷所述虛擬機(jī)的cpu消耗是否滿足預(yù)設(shè)的異常條件;
在獲取到虛擬機(jī)內(nèi)部的cpu使用率和虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率后,再根據(jù)獲取到的虛擬機(jī)內(nèi)部的cpu使用率和虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率判斷虛擬機(jī)的cpu消耗是否滿足預(yù)設(shè)的異常條件。
比如,不妨將虛擬機(jī)內(nèi)部的cpu使用率記為cpu內(nèi),將虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率記為cpu外,若在某一時(shí)刻同時(shí)檢測(cè)到某一虛擬機(jī)的cpu內(nèi)和cpu外超過預(yù)設(shè)閾值,則可以判定該虛擬機(jī)的cpu消耗出現(xiàn)異常,即cpu使用率過高,此時(shí)將導(dǎo)致主機(jī)系統(tǒng)中其他正在運(yùn)行的虛擬機(jī)的cpu資源被搶占。其中,cpu內(nèi)和cpu外的閾值可以預(yù)先進(jìn)行靈活設(shè)置。
當(dāng)然,cpu消耗異常的檢測(cè)策略也可以不采用上述方式,比如可以在檢測(cè)到cpu內(nèi)或者cpu外中的任意一個(gè)超過預(yù)設(shè)閾值時(shí)就判定該虛擬機(jī)的cpu消耗異常,具體實(shí)施時(shí)可進(jìn)行靈活設(shè)置。同時(shí)需要說明的是,若虛擬機(jī)使用的cpu核心不止一個(gè),該虛擬機(jī)的cpu外可能超過100%。
步驟s30,若所述虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件,則對(duì)所述虛擬機(jī)進(jìn)行cpu限額,并將所述虛擬機(jī)添加至異常虛擬機(jī)組。
若虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件,則對(duì)該虛擬機(jī)進(jìn)行cpu限額。比如,可以預(yù)先設(shè)置一個(gè)cpu使用率的限額值,在虛擬機(jī)的cpu消耗發(fā)生異常時(shí),根據(jù)該cpu使用率的限額值對(duì)虛擬機(jī)的cpu消耗進(jìn)行限制;或者,也可以預(yù)先設(shè)置一個(gè)cpu頻率的限額值,在虛擬機(jī)的cpu消耗發(fā)生異常時(shí),根據(jù)該cpu頻率的限額值對(duì)虛擬機(jī)的cpu消耗進(jìn)行限制,從而限制該虛擬機(jī)的cpu使用率,具體實(shí)施時(shí)可進(jìn)行靈活設(shè)置。同時(shí),可將異常的虛擬機(jī)添加至異常虛擬機(jī)組進(jìn)行統(tǒng)一管理。
在本實(shí)施例中,使用基于cgroup的cpu管理機(jī)制檢測(cè)當(dāng)前運(yùn)行的虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率;根據(jù)所述虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率判斷所述虛擬機(jī)的cpu消耗是否滿足預(yù)設(shè)的異常條件;若是,則對(duì)所述虛擬機(jī)進(jìn)行cpu限額,并將所述虛擬機(jī)添加至異常虛擬機(jī)組。本實(shí)施例通過檢測(cè)虛擬機(jī)運(yùn)行時(shí)的cpu使用率,并對(duì)異常的虛擬機(jī)進(jìn)行cpu限額處理,能夠保證其他非異常虛擬機(jī)的cpu資源不被搶占,從而保證其他非異常虛擬機(jī)正常運(yùn)行,減少了物理主機(jī)cpu資源的浪費(fèi),提升了虛擬機(jī)的使用體驗(yàn)。本發(fā)明能夠?qū)崿F(xiàn)對(duì)虛擬機(jī)使用的cpu資源進(jìn)行有效管理,從而減少物理主機(jī)cpu資源的浪費(fèi),同時(shí)提升虛擬機(jī)的使用體驗(yàn)。
進(jìn)一步地,參照?qǐng)D2,圖2為本發(fā)明虛擬機(jī)cpu資源的管理方法第二實(shí)施例的流程示意圖?;谏鲜鰣D1所示的實(shí)施例,所述步驟s20可以包括:
步驟s21,獲取所述主機(jī)系統(tǒng)cpu各核心當(dāng)前的使用率的平均值和所述虛擬機(jī)的核數(shù);
步驟s22,將所述各核心的使用率的平均值乘以所述虛擬機(jī)的核數(shù),得到所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值;
步驟s23,若連續(xù)檢測(cè)到所述虛擬機(jī)內(nèi)部的cpu使用率大于或等于預(yù)設(shè)閾值,且所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率大于或等于所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值超過預(yù)設(shè)次數(shù),則判定所述虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件。
在本實(shí)施中,計(jì)算虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值即cpu外的閾值的方法為:首先獲取所述主機(jī)系統(tǒng)cpu各核心當(dāng)前的使用率的平均值和檢測(cè)的虛擬機(jī)的核數(shù),然后將兩者相乘,得到cpu外的閾值。
比如,不妨將主機(jī)系統(tǒng)cpu各核心的使用率的平均值記為cpu平,若主機(jī)系統(tǒng)cpu有兩個(gè)核心,即雙核cpu,其當(dāng)前使用率分別為40%和60%,則cpu平=(40%+60%)/2=50%。若檢測(cè)的虛擬機(jī)也為雙核,則cpu外的閾值為50%*2=100%。
若連續(xù)檢測(cè)到某一虛擬機(jī)內(nèi)部的cpu使用率大于或等于預(yù)設(shè)閾值,且虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率大于或等于虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值超過預(yù)設(shè)次數(shù),則判定該虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件。
比如,預(yù)先設(shè)置虛擬機(jī)內(nèi)部的cpu使用率閾值為90%,計(jì)算cpu外的閾值為100%,若連續(xù)3次檢測(cè)到cpu內(nèi)≧90%且cpu外≧100%,則判定檢測(cè)的虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件。
進(jìn)一步地,對(duì)所述虛擬機(jī)進(jìn)行cpu限額的步驟可以包括:
步驟s31,計(jì)算所述主機(jī)系統(tǒng)cpu各核心的配置頻率的平均值;
步驟s32,根據(jù)所述各核心的配置頻率的平均值和所述虛擬機(jī)的核數(shù)進(jìn)行計(jì)算,得到所述虛擬機(jī)的頻率限額;
步驟s33,根據(jù)所述頻率限額對(duì)所述虛擬機(jī)進(jìn)行cpu限額。
在本實(shí)施例中,作為一種實(shí)施方式,可根據(jù)主機(jī)系統(tǒng)cpu各核心的配置頻率(即默認(rèn)頻率)計(jì)算虛擬機(jī)的頻率限額,進(jìn)而根據(jù)該頻率限額對(duì)異常的虛擬機(jī)進(jìn)行cpu限額,計(jì)算虛擬機(jī)的頻率限額的方法為:首先計(jì)算主機(jī)系統(tǒng)cpu各核心的配置頻率的平均值,再將該平均值乘以檢測(cè)的虛擬機(jī)的核數(shù),得到所述虛擬機(jī)的頻率限額。由于在負(fù)載相同時(shí),cpu頻率越高,其使用率越低,因此可根據(jù)計(jì)算得到的頻率限額對(duì)所述虛擬機(jī)進(jìn)行cpu限額。
比如,主機(jī)系統(tǒng)cpu各核心的配置頻率的平均值為p,則檢測(cè)的虛擬機(jī)的頻率限額可以為虛擬機(jī)核數(shù)*p,進(jìn)一步地,由于主機(jī)系統(tǒng)實(shí)際運(yùn)行過程中其cpu頻率和配置頻率可能不同,為保證頻率限額更加貼近虛擬機(jī)當(dāng)前的運(yùn)行環(huán)境,頻率限額可設(shè)置在一定范圍內(nèi),比如n*虛擬機(jī)核數(shù)*p,其中,n可根據(jù)實(shí)際需要進(jìn)行靈活設(shè)置,比如設(shè)置0.8=<n<=2。
在本實(shí)施例中,通過將主機(jī)系統(tǒng)cpu各核心的使用率的平均值乘以虛擬機(jī)的核數(shù),得到該虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值,既考慮了當(dāng)前主機(jī)系統(tǒng)整體的cpu使用情況,又考慮了由于各虛擬機(jī)的配置情況,能夠使虛擬機(jī)異常情況的評(píng)估更加貼近虛擬機(jī)當(dāng)前的運(yùn)行環(huán)境和虛擬機(jī)的配置,同時(shí),通過多次檢測(cè),保證了虛擬機(jī)異常判定結(jié)果的真確性和可靠性。
進(jìn)一步地,參照?qǐng)D3,圖3為本發(fā)明虛擬機(jī)cpu資源的管理方法第三實(shí)施例的流程示意圖?;谏鲜鰣D2所示的實(shí)施例,所述步驟s30之后,還可以包括:
步驟s40,檢測(cè)所述異常虛擬機(jī)組中的虛擬機(jī)是否恢復(fù)正常;
步驟s50,若是,則解除對(duì)恢復(fù)正常的虛擬機(jī)的cpu限額,并將所述虛擬機(jī)從所述異常組中移出。
在本實(shí)施例中,在將異常的虛擬機(jī)添加到異常組之后,繼續(xù)監(jiān)控該異常的虛擬機(jī),并檢測(cè)該虛擬機(jī)是否恢復(fù)正常,若是,則解除對(duì)恢復(fù)正常的虛擬機(jī)的cpu限額,并將恢復(fù)正常的虛擬機(jī)從所述異常組中移出。
具體的,所述步驟s40可以包括:
步驟s41,檢測(cè)所述異常組中的虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率;
步驟s42,若連續(xù)檢測(cè)到所述異常組中的虛擬機(jī)內(nèi)部的cpu使用率小于所述預(yù)設(shè)閾值,且所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率小于所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值超過所述預(yù)設(shè)次數(shù),則判定所述虛擬機(jī)恢復(fù)正常。
采用和異常檢測(cè)類似的檢測(cè)算法,若連續(xù)檢測(cè)到某一虛擬機(jī)內(nèi)部的cpu使用率小于預(yù)設(shè)閾值,且虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率小于虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值超過預(yù)設(shè)次數(shù),則判定該虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件。
比如,預(yù)先設(shè)置虛擬機(jī)內(nèi)部的cpu使用率閾值為90%,計(jì)算cpu外的閾值為100%,若連續(xù)3次檢測(cè)到cpu內(nèi)≦90%且cpu外≦100%,則判定檢測(cè)的虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件。
本實(shí)施例的應(yīng)用場(chǎng)景可以為:主機(jī)系統(tǒng)運(yùn)行兩臺(tái)虛擬機(jī)a和b,其中虛擬機(jī)a正常運(yùn)行普通應(yīng)用,另外一臺(tái)虛擬機(jī)b使用工具讓其的cpu消耗跑到100%,此時(shí)虛擬機(jī)a的資源被搶占而b的cpu高占用一直持續(xù)也沒有變化。使用了cpu資源管理之后,按照檢測(cè)機(jī)制虛擬機(jī)b的cpu使用率持續(xù)3次被檢測(cè)到過高就開始被限額,此時(shí)被搶占的虛擬機(jī)a的cpu資源被恢復(fù);當(dāng)控制b的cpu資源消耗降低到閾值以下,且連續(xù)3次檢測(cè)到b的cpu資源消耗都是正常時(shí),限額取消,此時(shí)可以讓虛擬機(jī)b正常運(yùn)行。
在本實(shí)施例中,通過對(duì)異常組內(nèi)的虛擬機(jī)進(jìn)行監(jiān)控,解除對(duì)恢復(fù)正常的虛擬機(jī)的限額,從而可以避免異常組內(nèi)的虛擬機(jī)一直處于限額狀態(tài),保證恢復(fù)正常的虛擬機(jī)繼續(xù)正常運(yùn)行,進(jìn)一步提升了使用者體驗(yàn)。
本發(fā)明還提供一種虛擬機(jī)cpu資源的管理裝置。
參照?qǐng)D4,圖4為本發(fā)明虛擬機(jī)cpu資源的管理裝置第一實(shí)施例的功能模塊示意圖。所述裝置包括:
第一檢測(cè)模塊10,用于檢測(cè)當(dāng)前運(yùn)行的虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率;
在本實(shí)施例中,主機(jī)搭載linux操作系統(tǒng),并通過cgroup(controlgroups,控制組)的cpu子系統(tǒng)對(duì)主機(jī)上運(yùn)行的各個(gè)虛擬機(jī)進(jìn)行cpu資源的管理。所謂cgroup,是一種將任意進(jìn)程進(jìn)行分組化管理的linux內(nèi)核功能,是linux內(nèi)核提供的一種可以限制、記錄、隔離進(jìn)程組所使用的物力資源的機(jī)制,其提供了控制內(nèi)存的memory控制器、控制進(jìn)程調(diào)度的cpu控制器等cgroup子系統(tǒng)。
主機(jī)系統(tǒng)開機(jī)時(shí),先掛載好cgroup的cpu子系統(tǒng),用于管理cgroup中進(jìn)程的cpu使用。虛擬機(jī)啟動(dòng)的時(shí)候,將其cpu的所有線程按組放到cgroup下面,后臺(tái)虛擬機(jī)管理機(jī)制定時(shí)遍歷運(yùn)行的虛擬機(jī),第一檢測(cè)模塊10檢測(cè)虛擬機(jī)內(nèi)部的cpu使用率和虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率。
判斷模塊20,用于根據(jù)所述虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率判斷所述虛擬機(jī)的cpu消耗是否滿足預(yù)設(shè)的異常條件;
在獲取到虛擬機(jī)內(nèi)部的cpu使用率和虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率后,判斷模塊20再根據(jù)獲取到的虛擬機(jī)內(nèi)部的cpu使用率和虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率判斷虛擬機(jī)的cpu消耗是否滿足預(yù)設(shè)的異常條件。
比如,不妨將虛擬機(jī)內(nèi)部的cpu使用率記為cpu內(nèi),將虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率記為cpu外,若在某一時(shí)刻同時(shí)檢測(cè)到某一虛擬機(jī)的cpu內(nèi)和cpu外超過預(yù)設(shè)閾值,則判斷模塊20可以判定該虛擬機(jī)的cpu消耗出現(xiàn)異常,即cpu使用率過高,此時(shí)將導(dǎo)致主機(jī)系統(tǒng)中其他正在運(yùn)行的虛擬機(jī)的cpu資源被搶占。其中,cpu內(nèi)和cpu外的閾值可以預(yù)先進(jìn)行靈活設(shè)置。
當(dāng)然,cpu消耗異常的檢測(cè)策略也可以不采用上述方式,比如可以在檢測(cè)到cpu內(nèi)或者cpu外中的任意一個(gè)超過預(yù)設(shè)閾值時(shí)就判定該虛擬機(jī)的cpu消耗異常,具體實(shí)施時(shí)可進(jìn)行靈活設(shè)置。同時(shí)需要說明的是,若虛擬機(jī)使用的cpu核心不止一個(gè),該虛擬機(jī)的cpu外可能超過100%。
限額模塊30,用于若所述虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件,則對(duì)所述虛擬機(jī)進(jìn)行cpu限額,并將所述虛擬機(jī)添加至異常虛擬機(jī)組。
若虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件,則限額模塊30對(duì)該虛擬機(jī)進(jìn)行cpu限額。比如,可以預(yù)先設(shè)置一個(gè)cpu使用率的限額值,在虛擬機(jī)的cpu消耗發(fā)生異常時(shí),根據(jù)該cpu使用率的限額值對(duì)虛擬機(jī)的cpu消耗進(jìn)行限制;或者,也可以預(yù)先設(shè)置一個(gè)cpu頻率的限額值,在虛擬機(jī)的cpu消耗發(fā)生異常時(shí),根據(jù)該cpu頻率的限額值對(duì)虛擬機(jī)的cpu消耗進(jìn)行限制,從而限制該虛擬機(jī)的cpu使用率,具體實(shí)施時(shí)可進(jìn)行靈活設(shè)置。同時(shí),可將異常的虛擬機(jī)添加至異常虛擬機(jī)組進(jìn)行統(tǒng)一管理。
在本實(shí)施例中,第一檢測(cè)模塊10檢測(cè)當(dāng)前運(yùn)行的虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率;判斷模塊20根據(jù)所述虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率判斷所述虛擬機(jī)的cpu消耗是否滿足預(yù)設(shè)的異常條件;若是,則限額模塊30對(duì)所述虛擬機(jī)進(jìn)行cpu限額,并將所述虛擬機(jī)添加至異常虛擬機(jī)組。本實(shí)施例通過檢測(cè)虛擬機(jī)運(yùn)行時(shí)的cpu使用率,并對(duì)異常的虛擬機(jī)進(jìn)行cpu限額處理,能夠保證其他非異常虛擬機(jī)的cpu資源不被搶占,從而保證其他非異常虛擬機(jī)正常運(yùn)行,減少了物理主機(jī)cpu資源的浪費(fèi),提升了虛擬機(jī)的使用體驗(yàn)。本發(fā)明能夠?qū)崿F(xiàn)對(duì)虛擬機(jī)使用的cpu資源進(jìn)行有效管理,從而減少物理主機(jī)cpu資源的浪費(fèi),同時(shí)提升虛擬機(jī)的使用體驗(yàn)。
進(jìn)一步地,參照?qǐng)D5,圖5為圖4中限額模塊的細(xì)化功能模塊示意圖?;谏鲜鰣D4所示的實(shí)施例,所述判斷模塊20可以包括:
獲取單元21,用于獲取所述主機(jī)系統(tǒng)cpu各核心當(dāng)前的使用率的平均值和所述虛擬機(jī)的核數(shù);
計(jì)算單元22,用于將所述各核心的使用率的平均值乘以所述虛擬機(jī)的核數(shù),得到所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值;
判定單元23,用于若連續(xù)檢測(cè)到所述虛擬機(jī)內(nèi)部的cpu使用率大于或等于預(yù)設(shè)閾值,且所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率大于或等于所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值超過預(yù)設(shè)次數(shù),則判定所述虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件。
在本實(shí)施中,計(jì)算虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值即cpu外的閾值的方法為:首先獲取單元21獲取所述主機(jī)系統(tǒng)cpu各核心當(dāng)前的使用率的平均值和檢測(cè)的虛擬機(jī)的核數(shù),然后計(jì)算單元22將兩者相乘,得到cpu外的閾值。
比如,不妨將主機(jī)系統(tǒng)cpu各核心的使用率的平均值記為cpu平,若主機(jī)系統(tǒng)cpu有兩個(gè)核心,即雙核cpu,其當(dāng)前使用率分別為40%和60%,則cpu平=(40%+60%)/2=50%。若檢測(cè)的虛擬機(jī)也為雙核,則cpu外的閾值為50%*2=100%。
若連續(xù)檢測(cè)到某一虛擬機(jī)內(nèi)部的cpu使用率大于或等于預(yù)設(shè)閾值,且虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率大于或等于虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值超過預(yù)設(shè)次數(shù),則判定單元23判定該虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件。
比如,預(yù)先設(shè)置虛擬機(jī)內(nèi)部的cpu使用率閾值為90%,計(jì)算cpu外的閾值為100%,若連續(xù)3次檢測(cè)到cpu內(nèi)≧90%且cpu外≧100%,則判定檢測(cè)的虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件。
進(jìn)一步地,所述限額模塊30還用于:計(jì)算所述主機(jī)系統(tǒng)cpu各核心的配置頻率的平均值;根據(jù)所述各核心的配置頻率的平均值和所述虛擬機(jī)的核數(shù)進(jìn)行計(jì)算,得到所述虛擬機(jī)的頻率限額;根據(jù)所述頻率限額對(duì)所述虛擬機(jī)進(jìn)行cpu限額。
在本實(shí)施例中,作為一種實(shí)施方式,限額模塊30可根據(jù)主機(jī)系統(tǒng)cpu各核心的配置頻率(即默認(rèn)頻率)計(jì)算虛擬機(jī)的頻率限額,進(jìn)而根據(jù)該頻率限額對(duì)異常的虛擬機(jī)進(jìn)行cpu限額,計(jì)算虛擬機(jī)的頻率限額的方法為:首先計(jì)算主機(jī)系統(tǒng)cpu各核心的配置頻率的平均值,再將該平均值乘以檢測(cè)的虛擬機(jī)的核數(shù),得到所述虛擬機(jī)的頻率限額。由于在負(fù)載相同時(shí),cpu頻率越高,其使用率越低,因此可根據(jù)計(jì)算得到的頻率限額對(duì)所述虛擬機(jī)進(jìn)行cpu限額。
比如,主機(jī)系統(tǒng)cpu各核心的配置頻率的平均值為p,則檢測(cè)的虛擬機(jī)的頻率限額可以為虛擬機(jī)核數(shù)*p,進(jìn)一步地,由于主機(jī)系統(tǒng)實(shí)際運(yùn)行過程中其cpu頻率和配置頻率可能不同,為保證頻率限額更加貼近虛擬機(jī)當(dāng)前的運(yùn)行環(huán)境,頻率限額可設(shè)置在一定范圍內(nèi),比如n*虛擬機(jī)核數(shù)*p,其中,n可根據(jù)實(shí)際需要進(jìn)行靈活設(shè)置,比如設(shè)置0.8=<n<=2。
在本實(shí)施例中,通過將主機(jī)系統(tǒng)cpu各核心的使用率的平均值乘以虛擬機(jī)的核數(shù),得到該虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值,既考慮了當(dāng)前主機(jī)系統(tǒng)整體的cpu使用情況,又考慮了由于各虛擬機(jī)的配置情況,能夠使虛擬機(jī)異常情況的評(píng)估更加貼近虛擬機(jī)當(dāng)前的運(yùn)行環(huán)境和虛擬機(jī)的配置,同時(shí),通過多次檢測(cè),保證了虛擬機(jī)異常判定結(jié)果的真確性和可靠性。
進(jìn)一步地,參照?qǐng)D6,圖6為本發(fā)明虛擬機(jī)cpu資源的管理裝置第二實(shí)施例的功能模塊示意圖。基于上述圖4所示的實(shí)施例,所述裝置還可以包括:
第二檢測(cè)模塊40,用于檢測(cè)所述異常虛擬機(jī)組中的虛擬機(jī)是否恢復(fù)正常;
解除模塊50,用于若所述異常虛擬機(jī)組中的虛擬機(jī)恢復(fù)正常,則解除對(duì)恢復(fù)正常的虛擬機(jī)的cpu限額,并將所述虛擬機(jī)從所述異常組中移出。
在本實(shí)施例中,在將異常的虛擬機(jī)添加到異常組之后,第二檢測(cè)模塊40繼續(xù)監(jiān)控該異常的虛擬機(jī),并檢測(cè)該虛擬機(jī)是否恢復(fù)正常,若是,則解除模塊50解除對(duì)恢復(fù)正常的虛擬機(jī)的cpu限額,并將恢復(fù)正常的虛擬機(jī)從所述異常組中移出。
具體地,所述第二檢測(cè)模塊40還用于:檢測(cè)所述異常組中的虛擬機(jī)內(nèi)部的cpu使用率和所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率;若連續(xù)檢測(cè)到所述異常組中的虛擬機(jī)內(nèi)部的cpu使用率小于所述預(yù)設(shè)閾值,且所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率小于所述虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值超過所述預(yù)設(shè)次數(shù),則判定所述虛擬機(jī)恢復(fù)正常。
第二檢測(cè)模塊40采用和異常檢測(cè)類似的檢測(cè)算法,若連續(xù)檢測(cè)到某一虛擬機(jī)內(nèi)部的cpu使用率小于預(yù)設(shè)閾值,且虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率小于虛擬機(jī)占主機(jī)系統(tǒng)的cpu使用率閾值超過預(yù)設(shè)次數(shù),則判定該虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件。
比如,預(yù)先設(shè)置虛擬機(jī)內(nèi)部的cpu使用率閾值為90%,計(jì)算cpu外的閾值為100%,若連續(xù)3次檢測(cè)到cpu內(nèi)≦90%且cpu外≦100%,則判定檢測(cè)的虛擬機(jī)的cpu消耗滿足預(yù)設(shè)的異常條件。
本實(shí)施例的應(yīng)用場(chǎng)景可以為:主機(jī)系統(tǒng)運(yùn)行兩臺(tái)虛擬機(jī)a和b,其中虛擬機(jī)a正常運(yùn)行普通應(yīng)用,另外一臺(tái)虛擬機(jī)b使用工具讓其的cpu消耗跑到100%,此時(shí)虛擬機(jī)a的資源被搶占而b的cpu高占用一直持續(xù)也沒有變化。使用了cpu資源管理之后,按照檢測(cè)機(jī)制虛擬機(jī)b的cpu使用率持續(xù)3次被檢測(cè)到過高就開始被限額,此時(shí)被搶占的虛擬機(jī)a的cpu資源被恢復(fù);當(dāng)控制b的cpu資源消耗降低到閾值以下,且連續(xù)3次檢測(cè)到b的cpu資源消耗都是正常時(shí),限額取消,此時(shí)可以讓虛擬機(jī)b正常運(yùn)行。
在本實(shí)施例中,通過對(duì)異常組內(nèi)的虛擬機(jī)進(jìn)行監(jiān)控,解除對(duì)恢復(fù)正常的虛擬機(jī)的限額,從而可以避免異常組內(nèi)的虛擬機(jī)一直處于限額狀態(tài),保證恢復(fù)正常的虛擬機(jī)繼續(xù)正常運(yùn)行,進(jìn)一步提升了使用者體驗(yàn)。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。