本發(fā)明涉及虛擬機(jī)技術(shù)領(lǐng)域,尤其涉及一種虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法及裝置。
背景技術(shù):
在虛擬化技術(shù)領(lǐng)域,一個(gè)服務(wù)器上面可以運(yùn)行多個(gè)虛擬機(jī),為了能夠充分利用服務(wù)器的硬件資源,對(duì)虛擬機(jī)的硬件資源配置通常都會(huì)進(jìn)行超配,即所有的配置在一臺(tái)服務(wù)器上的所有虛擬機(jī)的硬件資源的綜合大于所在的服務(wù)器的硬件資源,比如,所有虛擬機(jī)的CPU總數(shù)可以超過服務(wù)器的物理CPU數(shù)量;虛擬機(jī)的總內(nèi)存可以大于服務(wù)器的物理內(nèi)存,通過這種超配特性,使得在單個(gè)服務(wù)器機(jī)上能夠運(yùn)行更多的虛擬機(jī),幫助用戶減少硬件投入成本。
上述超配特性能夠正常工作的前提是:假定在同一時(shí)刻,不是所有的虛擬機(jī)都滿負(fù)荷運(yùn)行。因?yàn)?,如果每個(gè)虛擬機(jī)都很忙,虛擬機(jī)之間會(huì)不斷的進(jìn)行硬件資源的爭(zhēng)搶,導(dǎo)致每個(gè)虛擬機(jī)都很慢,都無(wú)法正常工作,反而會(huì)影響整體性能。
對(duì)于超配后虛擬機(jī)都滿負(fù)荷運(yùn)行而導(dǎo)致所有虛擬機(jī)都運(yùn)行慢的情況,目前的解決方法是對(duì)虛擬機(jī)劃分優(yōu)先級(jí),比如將一部分虛擬機(jī)設(shè)為高優(yōu)先級(jí),當(dāng)服務(wù)器剩余硬件資源不足時(shí),優(yōu)先保證這類高優(yōu)先級(jí)虛擬機(jī)的硬件資源使用,但是,這種方案只能夠解決特定場(chǎng)景下的問題,對(duì)虛擬機(jī)優(yōu)先級(jí)劃分是固定的,不能根據(jù)虛擬機(jī)的具體使用情況對(duì)其優(yōu)先級(jí)進(jìn)行動(dòng)態(tài)調(diào)整,缺乏靈活性,無(wú)法滿足更復(fù)雜的用戶場(chǎng)景。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法及裝置,其主要目的在于解決現(xiàn)有技術(shù)中,無(wú)法根據(jù)虛擬機(jī)的實(shí)際運(yùn)行情況確定虛擬機(jī)的優(yōu)先級(jí),進(jìn)而根據(jù)確定的優(yōu)先級(jí)對(duì)資源進(jìn)行動(dòng)態(tài)調(diào)配的技術(shù)問題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法,該虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法包括:
服務(wù)器獲取當(dāng)前運(yùn)行的虛擬機(jī)的運(yùn)行狀態(tài)信息,并根據(jù)獲取到的運(yùn)行狀態(tài)信息,以及預(yù)置的優(yōu)先級(jí)規(guī)則確定所述虛擬機(jī)當(dāng)前的優(yōu)先級(jí);
所述服務(wù)器根據(jù)確定的所述虛擬機(jī)當(dāng)前的優(yōu)先級(jí)對(duì)所述虛擬機(jī)的資源進(jìn)行調(diào)配。
可選地,所述服務(wù)器獲取當(dāng)前運(yùn)行的虛擬機(jī)的運(yùn)行狀態(tài)信息的步驟包括:
所述服務(wù)器在檢測(cè)到剩余資源量低于預(yù)設(shè)閾值時(shí),向所述服務(wù)器上運(yùn)行的所述虛擬機(jī)發(fā)送信息獲取指令,以供所述虛擬機(jī)基于接收到的信息獲取指令獲取所述運(yùn)行狀態(tài)信息;
接收所述虛擬機(jī)根據(jù)所述信息獲取指令發(fā)送的運(yùn)行狀態(tài)信息。
可選地,所述服務(wù)器獲取當(dāng)前運(yùn)行的虛擬機(jī)的運(yùn)行狀態(tài)信息的步驟之前,所述虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法還包括步驟:
所述服務(wù)器接收并存儲(chǔ)所述虛擬機(jī)發(fā)送的運(yùn)行狀態(tài)信息;
當(dāng)所述服務(wù)器在檢測(cè)到剩余資源量低于預(yù)設(shè)閾值時(shí),執(zhí)行獲取所述服務(wù)器上運(yùn)行的虛擬機(jī)當(dāng)前的運(yùn)行狀態(tài)信息的步驟;
所述獲取所述服務(wù)器上運(yùn)行的虛擬機(jī)當(dāng)前的運(yùn)行狀態(tài)信息的步驟包括:
獲取最近一次存儲(chǔ)的所述虛擬機(jī)的發(fā)送的運(yùn)行狀態(tài)信息。
可選地,所述預(yù)置的優(yōu)先級(jí)規(guī)則包括權(quán)重分配規(guī)則和優(yōu)先級(jí)權(quán)值算法;所述服務(wù)器根據(jù)獲取到的運(yùn)行狀態(tài)信息,以及預(yù)置的優(yōu)先級(jí)規(guī)則確定所述虛擬機(jī)當(dāng)前的優(yōu)先級(jí)的步驟包括:
所述服務(wù)器根據(jù)獲取到所述虛擬機(jī)的運(yùn)行狀態(tài)信息,以及預(yù)置的權(quán)重分配規(guī)則和優(yōu)先級(jí)權(quán)值算法,分別計(jì)算所述虛擬機(jī)的優(yōu)先級(jí)權(quán)值,根據(jù)計(jì)算得到的所述優(yōu)先級(jí)權(quán)值確定所述虛擬機(jī)的優(yōu)先級(jí)。
可選地,所述虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法還包括步驟:
所述服務(wù)器在接收到基于所述預(yù)置的優(yōu)先級(jí)規(guī)則發(fā)送的規(guī)則修改信息時(shí),根據(jù)接收到的所述規(guī)則修改信息對(duì)所述優(yōu)先級(jí)規(guī)則進(jìn)行修改。
可選地,所述服務(wù)器根據(jù)確定的所述虛擬機(jī)當(dāng)前的優(yōu)先級(jí)對(duì)所述虛擬機(jī)的資源進(jìn)行調(diào)配的步驟包括:
所述服務(wù)器根據(jù)計(jì)算得到的所述虛擬機(jī)的優(yōu)先級(jí)權(quán)值,回收優(yōu)先級(jí)權(quán)值小于預(yù)設(shè)權(quán)值的虛擬機(jī)的資源,將回收的資源分配至優(yōu)先級(jí)權(quán)值大于所述預(yù)設(shè)權(quán)值的虛擬機(jī)。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種虛擬機(jī)資源的動(dòng)態(tài)調(diào)配裝置,該虛擬機(jī)資源的動(dòng)態(tài)調(diào)配裝置包括:
所述虛擬機(jī)資源的動(dòng)態(tài)調(diào)配裝置包括:
信息獲取模塊,用于服務(wù)器獲取當(dāng)前運(yùn)行的虛擬機(jī)的運(yùn)行狀態(tài)信息;
優(yōu)先級(jí)確定模塊,用于根據(jù)獲取到的運(yùn)行狀態(tài)信息,以及預(yù)置的優(yōu)先級(jí)規(guī)則確定所述虛擬機(jī)當(dāng)前的優(yōu)先級(jí);
資源調(diào)配模塊,用于根據(jù)確定的所述虛擬機(jī)當(dāng)前的優(yōu)先級(jí)對(duì)所述虛擬機(jī)的資源進(jìn)行調(diào)配。
可選地,所述信息獲取模塊包括:
指令發(fā)送單元,用于在檢測(cè)到剩余資源量低于預(yù)設(shè)閾值時(shí),向所述服務(wù)器上運(yùn)行的所述虛擬機(jī)發(fā)送信息獲取指令,以供所述虛擬機(jī)基于接收到的信息獲取指令獲取所述運(yùn)行狀態(tài)信息;
信息接收單元,用于接收所述虛擬機(jī)根據(jù)所述信息獲取指令發(fā)送的運(yùn)行狀態(tài)信息。
可選地,所述虛擬機(jī)資源的動(dòng)態(tài)調(diào)配裝置還包括:
信息存儲(chǔ)模塊,用于服務(wù)器接收并存儲(chǔ)所述虛擬機(jī)發(fā)送的運(yùn)行狀態(tài)信息;
所述信息獲取還模塊用于:在檢測(cè)到剩余資源量低于預(yù)設(shè)閾值時(shí),獲取最近一次存儲(chǔ)的所述虛擬機(jī)的發(fā)送的運(yùn)行狀態(tài)信息。
可選地,所述優(yōu)先級(jí)規(guī)則包括權(quán)重分配規(guī)則和優(yōu)先級(jí)權(quán)重算法,所述優(yōu)先級(jí)確定模塊還用于:根據(jù)獲取到所述虛擬機(jī)的運(yùn)行狀態(tài)信息,以及預(yù)置的權(quán)重分配規(guī)則和優(yōu)先級(jí)權(quán)值算法,分別計(jì)算所述虛擬機(jī)的優(yōu)先級(jí)權(quán)值,根據(jù)計(jì)算得到的所述優(yōu)先級(jí)權(quán)值確定所述虛擬機(jī)的優(yōu)先級(jí)。
本發(fā)明提出的虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法及裝置,服務(wù)器獲取當(dāng)前運(yùn)行的虛擬機(jī)的運(yùn)行狀態(tài)信息,并根據(jù)獲取到的運(yùn)行狀態(tài)信息,以及預(yù)置的優(yōu)先級(jí)規(guī)則確定虛擬機(jī)當(dāng)前的優(yōu)先級(jí),根據(jù)確定的優(yōu)先級(jí)對(duì)虛擬機(jī)的資源進(jìn)行動(dòng)態(tài)調(diào)配,也就是說,即使在虛擬機(jī)開啟時(shí),服務(wù)器為虛擬機(jī)配置的初始資源量超出了服務(wù)器本身的總硬件資源量,在虛擬機(jī)的運(yùn)行過程中,仍然可以根據(jù)虛擬機(jī)的運(yùn)行狀態(tài)信息確定虛擬機(jī)當(dāng)前的優(yōu)先級(jí),并根據(jù)確定的優(yōu)先級(jí)對(duì)虛擬機(jī)的資源進(jìn)行動(dòng)態(tài)的配置,根據(jù)服務(wù)器上配置的調(diào)整規(guī)則,通過減少優(yōu)先級(jí)低的虛擬機(jī)的資源配額,來(lái)優(yōu)先保證優(yōu)先級(jí)高的虛擬機(jī)的正常運(yùn)行。
附圖說明
圖1為本發(fā)明虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法第一實(shí)施例的流程圖;
圖2為本發(fā)明虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法第一實(shí)施例中的進(jìn)程列表的示意圖;
圖3為本發(fā)明虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法第一實(shí)施例中獲取運(yùn)行狀態(tài)信息步驟的喜歡流程示意圖;
圖4為本發(fā)明虛擬機(jī)資源的動(dòng)態(tài)調(diào)配裝置第一實(shí)施例的功能模塊示意圖;
圖5為本發(fā)明虛擬機(jī)資源的動(dòng)態(tài)調(diào)配裝置第一實(shí)施例中的一實(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ī)資源的動(dòng)態(tài)調(diào)配方法。參照?qǐng)D1所示,為本發(fā)明虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法第一實(shí)施例的流程圖。
在本實(shí)施例中,該虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法包括:
步驟S10,服務(wù)器獲取當(dāng)前運(yùn)行的虛擬機(jī)的運(yùn)行狀態(tài)信息,并根據(jù)獲取到的運(yùn)行狀態(tài)信息,以及預(yù)置的優(yōu)先級(jí)規(guī)則確定所述虛擬機(jī)當(dāng)前的優(yōu)先級(jí);
需要說明的是,本發(fā)明實(shí)施例中,一臺(tái)服務(wù)器上可以同時(shí)運(yùn)行一臺(tái)或者多臺(tái)虛擬機(jī),服務(wù)器將硬件資源合理的配置給一臺(tái)或者多臺(tái)虛擬機(jī),在虛擬機(jī)開啟時(shí),服務(wù)器會(huì)根據(jù)當(dāng)前的剩余資源為該虛擬機(jī)分配合適的資源,服務(wù)器分配給所有虛擬機(jī)的資源之和可能為大于服務(wù)器本身的硬件資源,對(duì)于虛擬機(jī)來(lái)說,當(dāng)大部分虛擬機(jī)都滿負(fù)荷運(yùn)行時(shí),由于資源超配,會(huì)發(fā)生硬件資源的爭(zhēng)搶,導(dǎo)致每個(gè)虛擬機(jī)都很慢,影響用戶的使用;或者是一些虛擬機(jī)在運(yùn)行的程序或者應(yīng)用需要的資源較多,而實(shí)際分配的資源不足夠其使用,此時(shí)可能有一些虛擬機(jī)處于停止使用狀態(tài)或者該虛擬機(jī)當(dāng)前執(zhí)行的應(yīng)用需要的資源較少,但是為其分配的資源量較大,就會(huì)造成資源閑置。因此,對(duì)于服務(wù)器來(lái)說,需要獲取運(yùn)行的虛擬機(jī)的運(yùn)行狀態(tài)信息,并根據(jù)獲取到的運(yùn)行狀態(tài)信息確定出虛擬機(jī)的優(yōu)先級(jí),進(jìn)而對(duì)其資源進(jìn)行動(dòng)態(tài)的調(diào)配。
可選地,作為一種實(shí)施方式,服務(wù)器可以定時(shí)的獲取虛擬機(jī)的運(yùn)行狀態(tài)信息以確定其優(yōu)先級(jí),在其他實(shí)施方式中,也可以在檢測(cè)到服務(wù)器的剩余硬件資源不足的時(shí)候,獲取虛擬機(jī)的運(yùn)行狀態(tài)信息,可以理解的是,當(dāng)虛擬機(jī)有多臺(tái)時(shí),需要獲取每一臺(tái)虛擬機(jī)的運(yùn)行狀態(tài)信息。
需要說明的是,上述運(yùn)行狀態(tài)信息包括但不限于以下各個(gè)信息項(xiàng):虛擬機(jī)分組、當(dāng)前運(yùn)行的應(yīng)用的類型、當(dāng)前時(shí)段、CPU占用率、內(nèi)存占用率、磁盤IO占用率、用戶接入方式以及虛擬機(jī)的是否處于使用狀態(tài)等。其中,虛擬機(jī)分組由用戶根據(jù)需要設(shè)置,該信息項(xiàng)可以記錄在虛擬機(jī)中,也可以記錄在服務(wù)器中,若記錄在服務(wù)器中,則可以直接讀取服務(wù)器中記錄的分組信息;當(dāng)前時(shí)段包括上班時(shí)段、下班時(shí)段兩個(gè)值,當(dāng)前運(yùn)行的應(yīng)用的類型為當(dāng)前虛擬機(jī)上CPU占用率最高的進(jìn)程對(duì)應(yīng)的應(yīng)用,在判斷虛擬機(jī)當(dāng)前的應(yīng)用的類型時(shí),獲取虛擬機(jī)系統(tǒng)的進(jìn)程列表,參照?qǐng)D2所示,按照CPU占用率由高到低的順序排列各個(gè)進(jìn)程,將CPU占用率最高的進(jìn)程的類型作為該虛擬機(jī)當(dāng)前的應(yīng)用的類型,由于此時(shí)虛擬機(jī)上可能開啟了多個(gè)進(jìn)程,但是用戶主要使用的可能只有一個(gè),因此根據(jù)CPU占用率來(lái)判斷當(dāng)前主要使用的進(jìn)程的類型,例如,如果CPU占用率最高的進(jìn)程為游戲進(jìn)程,則判定其應(yīng)用類型為娛樂類型,如果CPU占用率最高的進(jìn)程為辦公應(yīng)用的進(jìn)程,則判定其應(yīng)用類型為辦公類型;上述接入方式可能是遠(yuǎn)程桌面、VNC(Virtual NetworkComputer,虛擬網(wǎng)絡(luò)計(jì)算機(jī))客戶端、SSH(secure shell,安全外殼協(xié)議)客戶端、云桌面客戶端等。
關(guān)于服務(wù)器獲取運(yùn)行狀態(tài)信息,可以有多種實(shí)施方式,以下列舉其中的兩種進(jìn)行說明。
作為一種實(shí)施方式,參照?qǐng)D3所示,步驟S10包括以下細(xì)化步驟:
步驟S11,所述服務(wù)器在檢測(cè)到剩余資源量低于預(yù)設(shè)閾值時(shí),向所述服務(wù)器上運(yùn)行的所述虛擬機(jī)發(fā)送信息獲取指令,以供所述虛擬機(jī)基于接收到的信息獲取指令獲取所述運(yùn)行狀態(tài)信息;
步驟S12,接收所述虛擬機(jī)根據(jù)所述信息獲取指令發(fā)送的運(yùn)行狀態(tài)信息。
服務(wù)器實(shí)時(shí)監(jiān)測(cè)剩余資源量,在剩余資源量低于預(yù)設(shè)閾值時(shí),向服務(wù)器上運(yùn)行的各個(gè)虛擬機(jī)發(fā)送信息獲取指令,在虛擬機(jī)上設(shè)置一個(gè)插件,該插件在接收到該信息獲取指令后,獲取該虛擬機(jī)的運(yùn)行狀態(tài)信息,即上述各個(gè)信息項(xiàng)。將這些信息發(fā)送至服務(wù)器,服務(wù)器接收這些信息后可以依據(jù)這些信息確定虛擬機(jī)的優(yōu)先級(jí)。
作為另一種實(shí)施方式,步驟S10之前,該虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法還包括步驟:
服務(wù)器接收并存儲(chǔ)所述虛擬機(jī)發(fā)送的運(yùn)行狀態(tài)信息;
當(dāng)所述服務(wù)器在檢測(cè)到剩余資源量低于預(yù)設(shè)閾值時(shí),執(zhí)行步驟S10;
步驟S10包括:獲取最近一次存儲(chǔ)的所述虛擬機(jī)的發(fā)送的運(yùn)行狀態(tài)信息。
在該實(shí)施方式中,在虛擬機(jī)中安裝一插件,該插件定時(shí)獲取運(yùn)行狀態(tài)信息,并將獲取到的運(yùn)行狀態(tài)信息發(fā)送給服務(wù)器,例如,每間隔一分鐘發(fā)送一次。
服務(wù)器在接收到這些信息后將這些運(yùn)行狀態(tài)信息存儲(chǔ)起來(lái),然后在檢測(cè)到剩余資源量低于預(yù)設(shè)閾值時(shí),從存儲(chǔ)的信息中獲取最近一次接收到的運(yùn)行狀態(tài)信息,根據(jù)這些信息確定虛擬機(jī)的優(yōu)先級(jí)。虛擬機(jī)的優(yōu)先級(jí)高就意味著需要更多的資源,而優(yōu)先級(jí)低就意味著不需要為其分配較多資源。
上述預(yù)設(shè)閾值可以由用戶根據(jù)需要設(shè)置,例如,該預(yù)設(shè)閾值可以設(shè)置為服務(wù)器總資源量的10%~20%。
步驟S20,所述服務(wù)器根據(jù)確定的所述虛擬機(jī)當(dāng)前的優(yōu)先級(jí)對(duì)所述虛擬機(jī)的資源進(jìn)行調(diào)配。
關(guān)于優(yōu)先級(jí),作為一種實(shí)施方式,可以根據(jù)預(yù)設(shè)的優(yōu)先級(jí)算法,例如加權(quán)算法,計(jì)算虛擬機(jī)的優(yōu)先級(jí)權(quán)值,根據(jù)計(jì)算的優(yōu)先級(jí)權(quán)值確定虛擬機(jī)的優(yōu)先級(jí),權(quán)值高的則優(yōu)先級(jí)高,權(quán)值低的則優(yōu)先級(jí)低,將優(yōu)先權(quán)值較低的虛擬機(jī)的資源回收,分配給優(yōu)先級(jí)權(quán)值較高的虛擬機(jī),其中,回收的資源量根據(jù)被回收的虛擬機(jī)的運(yùn)行狀態(tài)信息確定,具體地,服務(wù)器根據(jù)計(jì)算得到的所述虛擬機(jī)的優(yōu)先級(jí)權(quán)值,回收優(yōu)先級(jí)權(quán)值小于預(yù)設(shè)權(quán)值的虛擬機(jī)的資源,將回收的資源分配至優(yōu)先級(jí)權(quán)值大于所述預(yù)設(shè)權(quán)值的虛擬機(jī)。在其他的實(shí)施方式中,可以綜合評(píng)價(jià)運(yùn)行狀態(tài)信息中各個(gè)信息項(xiàng)的值,以確定出優(yōu)先級(jí)的級(jí)別,例如,應(yīng)用類型為辦公,當(dāng)前時(shí)間屬于上班時(shí)間,CPU占用率、內(nèi)存占用率高于60%,該虛擬機(jī)當(dāng)前處于使用狀態(tài),則級(jí)別為高。可以理解的是,用戶預(yù)先設(shè)置級(jí)別評(píng)測(cè)的標(biāo)準(zhǔn),服務(wù)器根據(jù)獲取到的信息確定每一個(gè)信息項(xiàng)的級(jí)別,然后綜合評(píng)價(jià)出虛擬機(jī)的優(yōu)先級(jí)的級(jí)別。將低優(yōu)先級(jí)的虛擬機(jī)的資源回收,分配至高優(yōu)先級(jí)的虛擬機(jī)。
本實(shí)施例提出的虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法,服務(wù)器獲取當(dāng)前運(yùn)行的虛擬機(jī)的運(yùn)行狀態(tài)信息,并根據(jù)獲取到的運(yùn)行狀態(tài)信息,以及預(yù)置的優(yōu)先級(jí)規(guī)則確定所述虛擬機(jī)當(dāng)前的優(yōu)先級(jí),根據(jù)確定的優(yōu)先級(jí)對(duì)虛擬機(jī)的資源進(jìn)行動(dòng)態(tài)調(diào)配,也就是說,即使在虛擬機(jī)開啟時(shí),服務(wù)器為多個(gè)虛擬機(jī)配置的初始資源量超出了服務(wù)器本身的總硬件資源量,在虛擬機(jī)的運(yùn)行過程中,仍然可以根據(jù)虛擬機(jī)的運(yùn)行狀態(tài)信息確定虛擬機(jī)當(dāng)前的優(yōu)先級(jí),并根據(jù)確定的優(yōu)先級(jí)對(duì)虛擬機(jī)的資源進(jìn)行動(dòng)態(tài)的配置,根據(jù)服務(wù)器上配置的調(diào)整規(guī)則,通過減少優(yōu)先級(jí)低的虛擬機(jī)的資源配額,來(lái)優(yōu)先保證優(yōu)先級(jí)高的虛擬機(jī)的正常運(yùn)行。
可以理解的是,虛擬機(jī)的運(yùn)行狀態(tài)信息是根據(jù)用戶的使用情況在動(dòng)態(tài)變化的,因此,當(dāng)前優(yōu)先級(jí)高的虛擬機(jī)在使用一段時(shí)間后,可能優(yōu)先級(jí)會(huì)降低,而當(dāng)前優(yōu)先級(jí)低。當(dāng)前優(yōu)先級(jí)低的虛擬機(jī)在使用一段時(shí)間后,可能優(yōu)先級(jí)會(huì)升高,也就是說,隨著虛擬機(jī)的運(yùn)行狀態(tài)的動(dòng)態(tài)變化,其優(yōu)先級(jí)的高低也是在動(dòng)態(tài)變化的,隨著優(yōu)先級(jí)的動(dòng)態(tài)變化,動(dòng)態(tài)的調(diào)整虛擬機(jī)的資源量。
基于第一實(shí)施例提出本發(fā)明虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法的第二實(shí)施例。參照?qǐng)D2所示,在本實(shí)施例中,優(yōu)先級(jí)規(guī)則包括權(quán)重分配規(guī)則和優(yōu)先級(jí)權(quán)重算法,步驟S20包括以下細(xì)化步驟:
根據(jù)獲取到所述虛擬機(jī)的運(yùn)行狀態(tài)信息,以及預(yù)置的權(quán)重分配規(guī)則和優(yōu)先級(jí)權(quán)值算法,分別計(jì)算所述虛擬機(jī)的優(yōu)先級(jí)權(quán)值,根據(jù)計(jì)算得到的所述優(yōu)先級(jí)權(quán)值確定所述虛擬機(jī)的優(yōu)先級(jí)。
在本實(shí)施例中,采用加權(quán)算法,為運(yùn)行狀態(tài)信息中的各個(gè)信息項(xiàng)設(shè)置權(quán)重,所有信息項(xiàng)的權(quán)重之和為1,然后根據(jù)獲取的各個(gè)信息項(xiàng)的值以及優(yōu)先級(jí)規(guī)則計(jì)算每一個(gè)信息項(xiàng)的分?jǐn)?shù),根據(jù)加權(quán)算法計(jì)算出所有信息項(xiàng)的加權(quán)平均值,即為該虛擬機(jī)的優(yōu)先級(jí)權(quán)值。例如,采用百分制,每一項(xiàng)信息項(xiàng)的總分為一百分,用戶預(yù)先設(shè)置每一個(gè)信息項(xiàng)下不同的參數(shù)對(duì)應(yīng)的分?jǐn)?shù),以應(yīng)用類型為例,辦公應(yīng)用為100分,視頻應(yīng)用為60分,游戲應(yīng)用為20分。這樣在獲取到每一個(gè)信息項(xiàng)后,可以獲取該信息項(xiàng)的分?jǐn)?shù),再結(jié)合權(quán)重,計(jì)算出所有信息項(xiàng)的加權(quán)平均值。
本發(fā)明還提出一種虛擬機(jī)資源的動(dòng)態(tài)調(diào)配裝置。
參照?qǐng)D4所示,為本發(fā)明虛擬機(jī)資源的動(dòng)態(tài)調(diào)配裝置第一實(shí)施例的功能模塊示意圖。
在該實(shí)施例中,該虛擬機(jī)資源的動(dòng)態(tài)調(diào)配裝置包括:
信息獲取模塊10,用于獲取當(dāng)前運(yùn)行的虛擬機(jī)的運(yùn)行狀態(tài)信息;
優(yōu)先級(jí)確定模塊20,用于根據(jù)獲取到的運(yùn)行狀態(tài)信息,以及預(yù)置的優(yōu)先級(jí)規(guī)則確定所述虛擬機(jī)當(dāng)前的優(yōu)先級(jí);
資源調(diào)配模塊30,用于根據(jù)確定的所述虛擬機(jī)當(dāng)前的優(yōu)先級(jí)對(duì)所述虛擬機(jī)的資源進(jìn)行調(diào)配。
需要說明的是,所述服務(wù)器可以作為所述虛擬機(jī)資源的動(dòng)態(tài)調(diào)配方法。本發(fā)明實(shí)施例中,一臺(tái)服務(wù)器上可以同時(shí)運(yùn)行一臺(tái)或者多臺(tái)虛擬機(jī),服務(wù)器將硬件資源合理的配置給多臺(tái)虛擬機(jī),在虛擬機(jī)開啟時(shí),服務(wù)器會(huì)根據(jù)當(dāng)前的剩余資源為該虛擬機(jī)分配合適的資源,服務(wù)器分配給所有虛擬機(jī)的資源之和可能為大于服務(wù)器本身的硬件資源,對(duì)于虛擬機(jī)來(lái)說,當(dāng)大部分虛擬機(jī)都滿負(fù)荷運(yùn)行時(shí),由于資源超配,會(huì)發(fā)生硬件資源的爭(zhēng)搶,導(dǎo)致每個(gè)虛擬機(jī)都很慢,影響用戶的使用;或者是一些虛擬機(jī)在運(yùn)行的程序或者應(yīng)用需要的資源較多,而實(shí)際分配的資源不足夠其使用,此時(shí)可能有一些虛擬機(jī)處于停止使用狀態(tài)或者該虛擬機(jī)當(dāng)前執(zhí)行的應(yīng)用需要的資源較少,但是為其分配的資源量較大,就會(huì)造成資源閑置。因此,對(duì)于服務(wù)器來(lái)說,需要獲取運(yùn)行的各個(gè)虛擬機(jī)的運(yùn)行狀態(tài)信息,并根據(jù)獲取到的運(yùn)行狀態(tài)信息確定出虛擬機(jī)的優(yōu)先級(jí),進(jìn)而對(duì)其資源進(jìn)行動(dòng)態(tài)的調(diào)配。
可選地,作為一種實(shí)施方式,服務(wù)器的信息獲取模塊10可以定時(shí)的獲取虛擬機(jī)的運(yùn)行狀態(tài)信息以確定其優(yōu)先級(jí),在其他實(shí)施方式中,也可以在檢測(cè)到服務(wù)器的剩余硬件資源不足的時(shí)候,獲取虛擬機(jī)的運(yùn)行狀態(tài)信息。
需要說明的是,上述運(yùn)行狀態(tài)信息包括但不限于以下各個(gè)信息項(xiàng):虛擬機(jī)分組、當(dāng)前運(yùn)行的應(yīng)用的類型、當(dāng)前時(shí)段、CPU占用率、內(nèi)存占用率、磁盤IO占用率、用戶接入方式以及虛擬機(jī)的是否處于使用狀態(tài)等。其中,虛擬機(jī)分組由用戶根據(jù)需要設(shè)置,該信息項(xiàng)可以記錄在虛擬機(jī)中,也可以記錄在服務(wù)器中,若記錄在服務(wù)器中,則可以直接讀取服務(wù)器中記錄的分組信息;當(dāng)前時(shí)段包括上班時(shí)段、下班時(shí)段兩個(gè)值,當(dāng)前運(yùn)行的應(yīng)用的類型為當(dāng)前虛擬機(jī)上CPU占用率最高的進(jìn)程對(duì)應(yīng)的應(yīng)用,在判斷虛擬機(jī)當(dāng)前的應(yīng)用的類型時(shí),獲取虛擬機(jī)系統(tǒng)的進(jìn)程列表,參照?qǐng)D2所示,按照CPU占用率由高到低的順序排列各個(gè)進(jìn)程,將CPU占用率最高的進(jìn)程的類型作為該虛擬機(jī)當(dāng)前的應(yīng)用的類型,由于此時(shí)虛擬機(jī)上可能開啟了多個(gè)進(jìn)程,但是用戶主要使用的可能只有一個(gè),因此根據(jù)CPU占用率來(lái)判斷當(dāng)前主要使用的進(jìn)程的類型,例如,如果CPU占用率最高的進(jìn)程為游戲進(jìn)程,則判定其應(yīng)用類型為娛樂類型,如果CPU占用率最高的進(jìn)程為辦公應(yīng)用的進(jìn)程,則判定其應(yīng)用類型為辦公類型;上述接入方式可能是遠(yuǎn)程桌面、VNC(Virtual NetworkComputer,虛擬網(wǎng)絡(luò)計(jì)算機(jī))客戶端、SSH(secure shell,安全外殼協(xié)議)客戶端、云桌面客戶端等。
關(guān)于服務(wù)器獲取運(yùn)行狀態(tài)信息,可以有多種實(shí)施方式,以下列舉其中的兩種進(jìn)行說明。
作為一種實(shí)施方式,信息獲取模塊10包括:
指令發(fā)送單元,用于在檢測(cè)到剩余資源量低于預(yù)設(shè)閾值時(shí),向所述服務(wù)器上運(yùn)行的所述虛擬機(jī)發(fā)送信息獲取指令,以供所述虛擬機(jī)基于接收到的信息獲取指令獲取所述運(yùn)行狀態(tài)信息;
信息接收單元,用于接收所述虛擬機(jī)根據(jù)所述信息獲取指令發(fā)送的運(yùn)行狀態(tài)信息。
服務(wù)器實(shí)時(shí)監(jiān)測(cè)剩余資源量,在剩余資源量低于預(yù)設(shè)閾值時(shí),指令發(fā)送單元向服務(wù)器上運(yùn)行的虛擬機(jī)發(fā)送信息獲取指令,在虛擬機(jī)上設(shè)置一個(gè)插件,該插件在接收到該信息獲取指令后,獲取該虛擬機(jī)的運(yùn)行狀態(tài)信息,即上述各個(gè)信息項(xiàng)。將這些信息發(fā)送至服務(wù)器,信息接收單元接收這些信息后,優(yōu)先級(jí)確定模塊20可以依據(jù)這些信息確定虛擬機(jī)的優(yōu)先級(jí)。
作為另一種實(shí)施方式,參照?qǐng)D5所示,該虛擬機(jī)資源的動(dòng)態(tài)調(diào)配裝置還包括:
信息存儲(chǔ)模塊40,用于服務(wù)器接收并存儲(chǔ)所述虛擬機(jī)發(fā)送的運(yùn)行狀態(tài)信息;
信息獲取模塊10還用于:在檢測(cè)到剩余資源量低于預(yù)設(shè)閾值時(shí),獲取最近一次存儲(chǔ)的所述虛擬機(jī)的發(fā)送的運(yùn)行狀態(tài)信息。
在該實(shí)施方式中,在虛擬機(jī)中安裝一插件,該插件定時(shí)獲取運(yùn)行狀態(tài)信息,并將獲取到的運(yùn)行狀態(tài)信息發(fā)送給服務(wù)器,例如,每間隔一分鐘發(fā)送一次。
服務(wù)器在接收到這些信息后,信息存儲(chǔ)模塊40將這些運(yùn)行狀態(tài)信息存儲(chǔ)起來(lái),然后在檢測(cè)到剩余資源量低于預(yù)設(shè)閾值時(shí),從存儲(chǔ)的信息中獲取最近一次接收到的運(yùn)行狀態(tài)信息,根據(jù)這些信息確定虛擬機(jī)的優(yōu)先級(jí)。虛擬機(jī)的優(yōu)先級(jí)高就意味著需要更多的資源,而優(yōu)先級(jí)低就意味著不需要為其分配較多資源。
上述預(yù)設(shè)閾值可以由用戶根據(jù)需要設(shè)置,例如,該預(yù)設(shè)閾值可以設(shè)置為服務(wù)器總資源量的10%~20%。
關(guān)于優(yōu)先級(jí),作為一種實(shí)施方式,可以根據(jù)預(yù)設(shè)的優(yōu)先級(jí)算法,例如加權(quán)算法,計(jì)算虛擬機(jī)的優(yōu)先級(jí)權(quán)值,優(yōu)先級(jí)確定模塊20根據(jù)計(jì)算的優(yōu)先級(jí)權(quán)值確定虛擬機(jī)的優(yōu)先級(jí),權(quán)值高的則優(yōu)先級(jí)高,權(quán)值低的則優(yōu)先級(jí)低,資源調(diào)配模塊30將優(yōu)先權(quán)值較低的虛擬機(jī)的資源回收,分配給優(yōu)先級(jí)權(quán)值較高的虛擬機(jī),其中,回收的資源量根據(jù)被回收的虛擬機(jī)的運(yùn)行狀態(tài)信息確定,具體地,資源調(diào)配模塊30根據(jù)計(jì)算得到的所述虛擬機(jī)的優(yōu)先級(jí)權(quán)值,回收優(yōu)先級(jí)權(quán)值小于預(yù)設(shè)權(quán)值的虛擬機(jī)的資源,將回收的資源分配至優(yōu)先級(jí)權(quán)值大于所述預(yù)設(shè)權(quán)值的虛擬機(jī)。在其他的實(shí)施方式中,優(yōu)先級(jí)確定模塊20可以綜合評(píng)價(jià)運(yùn)行狀態(tài)信息中各個(gè)信息項(xiàng)的值,以確定出優(yōu)先級(jí)的級(jí)別,例如,應(yīng)用類型為辦公,當(dāng)前時(shí)間屬于上班時(shí)間,CPU占用率、內(nèi)存占用率高于60%,該虛擬機(jī)當(dāng)前處于使用狀態(tài),則級(jí)別為高??梢岳斫獾氖?,用戶預(yù)先設(shè)置級(jí)別評(píng)測(cè)的標(biāo)準(zhǔn),服務(wù)器根據(jù)獲取到的信息確定每一個(gè)信息項(xiàng)的級(jí)別,然后綜合評(píng)價(jià)出虛擬機(jī)的優(yōu)先級(jí)的級(jí)別。資源調(diào)配模塊30將低優(yōu)先級(jí)的虛擬機(jī)的資源回收,分配至高優(yōu)先級(jí)的虛擬機(jī)。
本實(shí)施例提出的虛擬機(jī)資源的動(dòng)態(tài)調(diào)配裝置,服務(wù)器獲取當(dāng)前運(yùn)行的虛擬機(jī)的運(yùn)行狀態(tài)信息,并根據(jù)獲取到的運(yùn)行狀態(tài)信息,以及預(yù)置的優(yōu)先級(jí)規(guī)則確定所述虛擬機(jī)當(dāng)前的優(yōu)先級(jí),根據(jù)確定的優(yōu)先級(jí)對(duì)虛擬機(jī)的資源進(jìn)行動(dòng)態(tài)調(diào)配,也就是說,即使在虛擬機(jī)開啟時(shí),服務(wù)器為虛擬機(jī)配置的初始資源量超出了服務(wù)器本身的總硬件資源量,在虛擬機(jī)的運(yùn)行過程中,仍然可以根據(jù)虛擬機(jī)的運(yùn)行狀態(tài)信息確定虛擬機(jī)當(dāng)前的優(yōu)先級(jí),并根據(jù)確定的優(yōu)先級(jí)對(duì)虛擬機(jī)的資源進(jìn)行動(dòng)態(tài)的配置,根據(jù)服務(wù)器上配置的調(diào)整規(guī)則,通過減少優(yōu)先級(jí)低的虛擬機(jī)的資源配額,來(lái)優(yōu)先保證優(yōu)先級(jí)高的虛擬機(jī)的正常運(yùn)行。
可以理解的是,虛擬機(jī)的運(yùn)行狀態(tài)信息是根據(jù)用戶的使用情況在動(dòng)態(tài)變化的,因此,當(dāng)前優(yōu)先級(jí)高的虛擬機(jī)在使用一段時(shí)間后,可能優(yōu)先級(jí)會(huì)降低,而當(dāng)前優(yōu)先級(jí)低。虛擬機(jī)在使用一段時(shí)間后,可能優(yōu)先級(jí)會(huì)升高,也就是說,隨著虛擬機(jī)的運(yùn)行狀態(tài)的動(dòng)態(tài)變化,其優(yōu)先級(jí)的高低也是在動(dòng)態(tài)變化的,隨著優(yōu)先級(jí)的動(dòng)態(tài)變化,資源調(diào)配模塊30動(dòng)態(tài)的調(diào)整虛擬機(jī)的資源量。
基于第一實(shí)施例提出本發(fā)明虛擬機(jī)資源的動(dòng)態(tài)調(diào)配裝置的第二實(shí)施例。在本實(shí)施例中,優(yōu)先級(jí)規(guī)則包括權(quán)重分配規(guī)則和優(yōu)先級(jí)權(quán)重算法,優(yōu)先級(jí)確定模塊20還用于:根據(jù)獲取到所述虛擬機(jī)的運(yùn)行狀態(tài)信息,以及預(yù)置的權(quán)重分配規(guī)則和優(yōu)先級(jí)權(quán)值算法,分別計(jì)算所述虛擬機(jī)的優(yōu)先級(jí)權(quán)值,根據(jù)計(jì)算得到的所述優(yōu)先級(jí)權(quán)值確定所述虛擬機(jī)的優(yōu)先級(jí)。
在本實(shí)施例中,采用加權(quán)算法,為運(yùn)行狀態(tài)信息中的各個(gè)信息項(xiàng)設(shè)置權(quán)重,所有信息項(xiàng)的權(quán)重之和為1,然后根據(jù)獲取的各個(gè)信息項(xiàng)的值以及優(yōu)先級(jí)規(guī)則計(jì)算每一個(gè)信息項(xiàng)的分?jǐn)?shù),優(yōu)先級(jí)確定模塊20根據(jù)加權(quán)算法計(jì)算出所有信息項(xiàng)的加權(quán)平均值,即為該虛擬機(jī)的優(yōu)先級(jí)權(quán)值。例如,采用百分制,每一項(xiàng)信息項(xiàng)的總分為一百分,用戶預(yù)先設(shè)置每一個(gè)信息項(xiàng)下不同的參數(shù)對(duì)應(yīng)的分?jǐn)?shù),以應(yīng)用類型為例,辦公應(yīng)用為100分,視頻應(yīng)用為60分,游戲應(yīng)用為20分。這樣在獲取到每一個(gè)信息項(xiàng)后,可以獲取該信息項(xiàng)的分?jǐn)?shù),再結(jié)合權(quán)重,優(yōu)先級(jí)確定模塊20計(jì)算出所有信息項(xiàng)的加權(quán)平均值。
需要說明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
另外,在發(fā)明中涉及“第一”、“第二”等等的描述僅描述目的,而不能理解為指示或暗示其相對(duì)重要性或者隱含指明所指示的技術(shù)特征的數(shù)量。由此,限定有“第一”、“第二”的特征可以明示或者隱含地包括至少一個(gè)該特征。另外,各個(gè)實(shí)施例之間的技術(shù)方案可以相互結(jié)合,但是必須是以本領(lǐng)域普通技術(shù)人員能夠?qū)崿F(xiàn)為基礎(chǔ),當(dāng)技術(shù)方案的結(jié)合出現(xiàn)相互矛盾或無(wú)法實(shí)現(xiàn)時(shí)應(yīng)當(dāng)人認(rèn)為這種技術(shù)方案的結(jié)合不存在,也不在本發(fā)明要求的保護(hù)范圍之內(nèi)。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。