一種內(nèi)存資源分配方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及云計(jì)算技術(shù)領(lǐng)域,更具體地說(shuō),設(shè)及一種內(nèi)存資源分配方法及裝置。
【背景技術(shù)】
[0002] Cgroupskontrolgroups,控制族群)是一種可W限制、記錄及隔離進(jìn)程組所 使用的物理資源的機(jī)制。具體來(lái)說(shuō),其可為系統(tǒng)中所運(yùn)行進(jìn)程的用戶定義族群分配資源, 如CPU空間、系統(tǒng)內(nèi)存資源、網(wǎng)絡(luò)帶寬等或者運(yùn)些資源的組合,還可W通過(guò)監(jiān)控配置的 Cgroups拒絕Cgroups訪問(wèn)某些資源,甚至可W在運(yùn)行的系統(tǒng)中動(dòng)態(tài)配置用戶的Cgroups 等。
[0003] Cgroups提供了W下四大功能:資源限制、優(yōu)先級(jí)分配、資源統(tǒng)計(jì)及進(jìn)程控制。然 而,在優(yōu)先級(jí)分配中,其只包含有分配CPU時(shí)間片數(shù)量W及硬盤10帶寬大小的優(yōu)先級(jí)設(shè)置, 并沒(méi)有實(shí)現(xiàn)關(guān)于內(nèi)存資源優(yōu)先分配方面的功能,即,現(xiàn)有技術(shù)中使用Cgroups無(wú)法實(shí)現(xiàn)內(nèi) 存資源的優(yōu)先分配。
[0004] 綜上所述,現(xiàn)有技術(shù)中的Cgroups存在無(wú)法實(shí)現(xiàn)內(nèi)存資源的優(yōu)先分配的問(wèn)題。
【發(fā)明內(nèi)容】
陽(yáng)0化]本發(fā)明的目的是提供一種內(nèi)存資源分配方法及裝置,W使用Cgroups實(shí)現(xiàn)內(nèi)存資 源的優(yōu)先分配。
[0006] 為了實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
[0007] 一種內(nèi)存資源分配方法,包括:
[0008] 當(dāng)出現(xiàn)內(nèi)存資源競(jìng)爭(zhēng)時(shí),獲取至少一個(gè)第一虛擬機(jī)中每個(gè)第一虛擬機(jī)占用的內(nèi)存 資源及至少一個(gè)第二虛擬機(jī)中每個(gè)第二虛擬機(jī)占用的內(nèi)存資源,其中,所述第一虛擬機(jī)為 優(yōu)先分配內(nèi)存資源的虛擬機(jī),所述第二虛擬機(jī)為不優(yōu)先分配內(nèi)存資源的虛擬機(jī);
[0009] 基于每個(gè)所述第一虛擬機(jī)占用的內(nèi)存資源及每個(gè)所述第二虛擬機(jī)占用的內(nèi)存資 源按照預(yù)設(shè)原則進(jìn)行計(jì)算,得到每個(gè)所述第二虛擬機(jī)的限制內(nèi)存;
[0010] 將Cgroups中與每個(gè)所述第二虛擬機(jī)對(duì)應(yīng)的控制該第二虛擬機(jī)占用的內(nèi)存資源 的內(nèi)存資源限制參數(shù)的值設(shè)置為該第二虛擬機(jī)的限制內(nèi)存。
[0011] 優(yōu)選的,基于每個(gè)所述第一虛擬機(jī)占用的內(nèi)存資源及每個(gè)所述第二虛擬機(jī)占用的 內(nèi)存資源按照預(yù)設(shè)原則進(jìn)行計(jì)算,得到每個(gè)所述第二虛擬機(jī)的限制內(nèi)存,包括:
[0012] 確定任一第二虛擬機(jī)為目標(biāo)虛擬機(jī);
[0013] 按照下列公式計(jì)算所述目標(biāo)虛擬機(jī)的限制內(nèi)存:
[0014]
陽(yáng)01引其中,Lvmk表示所述目標(biāo)虛擬機(jī)的限制內(nèi)存,Mvmk表示所述目標(biāo)虛擬機(jī)占用的內(nèi) 存資源,Mp表示全部虛擬機(jī)可占用的總內(nèi)存資源,
表示每個(gè)所述第一虛擬機(jī)占 用的內(nèi)存資源的總和,
表示每個(gè)所述第二虛擬機(jī)占用的內(nèi)存資源的總和。 陽(yáng)016] 優(yōu)選的,將Cgroups中與每個(gè)所述第二虛擬機(jī)對(duì)應(yīng)的控制該第二虛擬機(jī)占用的內(nèi) 存資源的內(nèi)存資源限制參數(shù)的值設(shè)置為該第二虛擬機(jī)的限制內(nèi)存,包括:
[0017] 確定所述目標(biāo)虛擬機(jī)在Cgroups中對(duì)應(yīng)的子結(jié)構(gòu)為目標(biāo)子結(jié)構(gòu);
[0018] 將所述目標(biāo)子結(jié)構(gòu)中包含的soft_limit_in_bytes參數(shù)的值設(shè)置為所述目標(biāo)虛 擬機(jī)的限制內(nèi)存。
[0019] 優(yōu)選的,還包括:
[0020] 獲取每個(gè)虛擬機(jī)的內(nèi)存壓力敏感度,并確定其內(nèi)存壓力敏感度大于或者等于預(yù)設(shè) 值的虛擬機(jī)為第一虛擬機(jī),確定其內(nèi)存壓力敏感度小于預(yù)設(shè)值的虛擬機(jī)為第二虛擬機(jī)。
[0021] 優(yōu)選的,還包括:
[0022] 實(shí)時(shí)接收外界輸入的優(yōu)先級(jí)設(shè)置指令,依據(jù)所述優(yōu)先級(jí)設(shè)置指令確定與所述優(yōu)先 級(jí)設(shè)置指令對(duì)應(yīng)的虛擬機(jī)為第一虛擬機(jī)或者第二虛擬機(jī)。
[0023] 一種內(nèi)存資源分配裝置,包括:
[0024] 獲取模塊,用于當(dāng)出現(xiàn)內(nèi)存資源競(jìng)爭(zhēng)時(shí),獲取至少一個(gè)第一虛擬機(jī)中每個(gè)第一虛 擬機(jī)占用的內(nèi)存資源及至少一個(gè)第二虛擬機(jī)中每個(gè)第二虛擬機(jī)占用的內(nèi)存資源,其中,所 述第一虛擬機(jī)為優(yōu)先分配內(nèi)存資源的虛擬機(jī),所述第二虛擬機(jī)為不優(yōu)先分配內(nèi)存資源的虛 擬機(jī);
[00巧]計(jì)算模塊,用于基于每個(gè)所述第一虛擬機(jī)占用的內(nèi)存資源及每個(gè)所述第二虛擬機(jī) 占用的內(nèi)存資源按照預(yù)設(shè)原則進(jìn)行計(jì)算,得到每個(gè)所述第二虛擬機(jī)的限制內(nèi)存; 陽(yáng)0%] 設(shè)置模塊,用于將Cgroups中與每個(gè)所述第二虛擬機(jī)對(duì)應(yīng)的控制該第二虛擬機(jī)占 用的內(nèi)存資源的內(nèi)存資源限制參數(shù)的值設(shè)置為該第二虛擬機(jī)的限制內(nèi)存。
[0027] 優(yōu)選的,所述計(jì)算模塊包括:
[0028] 第一確定單元,用于確定任一第二虛擬機(jī)為目標(biāo)虛擬機(jī);
[0029] 計(jì)算單元,用于按照下列公式計(jì)算所述目標(biāo)虛擬機(jī)的限制內(nèi)存:
[0030]
陽(yáng)03U 其中,Lvmk表示所述目標(biāo)虛擬機(jī)的限制內(nèi)存,Mvmk表示所述目標(biāo)虛擬機(jī)占用的內(nèi) 存資源,Mp表示可占用總內(nèi)存資源,
表示每個(gè)所述第一虛擬機(jī)占用的內(nèi)存資 源的總和,
表示每個(gè)所述第二虛擬機(jī)占用的內(nèi)存資源的總和。
[0032] 優(yōu)選的,所述設(shè)置模塊包括:
[0033] 第二確定單元,用于確定所述目標(biāo)虛擬機(jī)在Cgroups中對(duì)應(yīng)的子結(jié)構(gòu)為目標(biāo)子結(jié) 構(gòu);
[0034] 設(shè)置單元,用于將所述目標(biāo)子結(jié)構(gòu)中包含的soft_limit_in_^tes參數(shù)的值設(shè)置 為所述目標(biāo)虛擬機(jī)的限制內(nèi)存。 陽(yáng)03引優(yōu)選的,還包括:
[0036] 預(yù)備模塊,用于獲取每個(gè)虛擬機(jī)的內(nèi)存壓力敏感度,并確定其內(nèi)存壓力敏感度大 于或者等于預(yù)設(shè)值的虛擬機(jī)為第一虛擬機(jī),確定其內(nèi)存壓力敏感度小于預(yù)設(shè)值的虛擬機(jī)為 第二虛擬機(jī)。
[0037] 優(yōu)選的,還包括:
[0038] 優(yōu)先級(jí)設(shè)置模塊,用于實(shí)時(shí)接收外界輸入的優(yōu)先級(jí)設(shè)置指令,依據(jù)所述優(yōu)先級(jí)設(shè) 置指令確定與所述優(yōu)先級(jí)設(shè)置指令對(duì)應(yīng)的虛擬機(jī)為第一虛擬機(jī)或者第二虛擬機(jī)。
[0039] 本發(fā)明提供的一種內(nèi)存資源分配方法及裝置,該方法包括:當(dāng)出現(xiàn)內(nèi)存資源競(jìng)爭(zhēng) 時(shí),獲取至少一個(gè)第一虛擬機(jī)中每個(gè)第一虛擬機(jī)占用的內(nèi)存資源及至少一個(gè)第二虛擬機(jī)中 每個(gè)第二虛擬機(jī)占用的內(nèi)存資源,其中,所述第一虛擬機(jī)為優(yōu)先分配內(nèi)存資源的虛擬機(jī),所 述第二虛擬機(jī)為不優(yōu)先分配內(nèi)存資源的虛擬機(jī);基于每個(gè)所述第一虛擬機(jī)占用的內(nèi)存資源 及每個(gè)所述第二虛擬機(jī)占用的內(nèi)存資源按照預(yù)設(shè)原則進(jìn)行計(jì)算,得到每個(gè)所述第二虛擬機(jī) 的限制內(nèi)存;將Cgroups中與每個(gè)所述第二虛擬機(jī)對(duì)應(yīng)的控制該第二虛擬機(jī)占用的內(nèi)存資 源的內(nèi)存資源限制參數(shù)的值設(shè)置為該第二虛擬機(jī)的限制內(nèi)存。通過(guò)本申請(qǐng)公開的上述技術(shù) 方案,當(dāng)出現(xiàn)內(nèi)存資源競(jìng)爭(zhēng),即全部虛擬機(jī)可用的內(nèi)存資源小于全部虛擬機(jī)實(shí)際需占用的 內(nèi)存資源時(shí),需要基于優(yōu)先分配內(nèi)存資源的虛擬機(jī)占用的內(nèi)存資源,及不優(yōu)先分配內(nèi)存資 源的虛擬機(jī)占用的內(nèi)存資源按照預(yù)設(shè)原則計(jì)算每個(gè)不優(yōu)先分配內(nèi)存資源的虛擬機(jī)的限制 內(nèi)存,將Cgroups中對(duì)應(yīng)的內(nèi)存資源限制參數(shù)設(shè)置成對(duì)應(yīng)虛擬機(jī)的限制內(nèi)存,由此,通過(guò)限 制不優(yōu)先分配內(nèi)存資源的虛擬機(jī)所占用的內(nèi)存資源,使得全部虛擬機(jī)可用的內(nèi)存資源小于 或者等于全部虛擬機(jī)實(shí)際占用的內(nèi)存資源,從而通過(guò)Cgroups實(shí)現(xiàn)內(nèi)存資源的優(yōu)先分配。
【附圖說(shuō)明】 W40] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本 發(fā)明的實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可W根據(jù) 提供的附圖獲得其他的附圖。
[0041] 圖1為本發(fā)明實(shí)施例提供的一種內(nèi)存資源分配方法的流程圖;
[0042]圖2為本發(fā)明實(shí)施例提供的一種內(nèi)存資源分配裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0043]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。 W44] 請(qǐng)參閱圖1,其示出了本發(fā)明實(shí)施例提供的一種內(nèi)存資源分配方法的流程圖,可W 包括W下步驟:
[0045] S11 :當(dāng)出現(xiàn)內(nèi)存資源競(jìng)爭(zhēng)時(shí),獲取至少一個(gè)第一虛擬機(jī)中每個(gè)第一虛擬機(jī)占用的 內(nèi)存資源及至少一個(gè)第二虛擬機(jī)中每個(gè)第二虛擬機(jī)占用的內(nèi)存資源,其中,第一虛擬機(jī)為 優(yōu)先分配內(nèi)存資源的虛擬機(jī),第二虛擬機(jī)為不優(yōu)先分配內(nèi)存資源的虛擬機(jī)。
[0046] 出現(xiàn)內(nèi)存資源競(jìng)爭(zhēng),具體來(lái)說(shuō),即全部虛擬機(jī)所需要占用的內(nèi)存資源大于全部虛 擬機(jī)可W占用的內(nèi)存資源,此時(shí),會(huì)造成不同的虛擬機(jī)對(duì)于內(nèi)存資源的搶占,進(jìn)而出現(xiàn)內(nèi)存 資源競(jìng)爭(zhēng)。另外,第一虛擬機(jī)和第二虛擬機(jī)的數(shù)量均可根據(jù)實(shí)際需要