一種單機(jī)資源管理方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種單機(jī)資源管理方法,包括:控制中心依據(jù)預(yù)設(shè)的資源列表,在機(jī)器集群中選出滿足收到的任務(wù)請求中攜帶的資源條件和運(yùn)行起止時(shí)間的機(jī)器,并將任務(wù)運(yùn)行指令發(fā)送給選出的機(jī)器,所述任務(wù)運(yùn)行指令中包括任務(wù)的啟動腳本和運(yùn)行起止時(shí)間;機(jī)器在運(yùn)行起始時(shí)間運(yùn)行所述啟動腳本,并控制Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源;本發(fā)明還提供一種單機(jī)資源管理系統(tǒng)。根據(jù)本發(fā)明提供的技術(shù)方案,能夠提高機(jī)器中資源的利用率。
【專利說明】一種單機(jī)資源管理方法及系統(tǒng)
【【技術(shù)領(lǐng)域】】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種單機(jī)資源管理方法及系統(tǒng)。
【【背景技術(shù)】】
[0002]目前,在對機(jī)器資源進(jìn)行分配和管理時(shí),只是通過監(jiān)控查看各個(gè)機(jī)器上的資源狀況,然后將任務(wù)分配到空閑的機(jī)器上執(zhí)行。
[0003]這種對機(jī)器資源的分配和管理方法具有以下缺陷:
[0004]1、在為任務(wù)分配資源時(shí),都是以整個(gè)機(jī)器為單位進(jìn)行分配,將空閑的機(jī)器分配給任務(wù),即使該機(jī)器上的資源沒有被充分利用,也不能被分配給其他任務(wù),例如,某任務(wù)需要占用較高的I/o帶寬,但是CPU占用的較少,將該任務(wù)分配給某機(jī)器后,即使該機(jī)器的CPU占用較少,該CPU資源也不能夠再分配給其他任務(wù)使用,使得機(jī)器中資源不能夠充分利用,造成資源浪費(fèi),資源利用率較低。
[0005]2、不能主動控制機(jī)器的資源使用情況,也不能控制提供給任務(wù)的資源大小,只有當(dāng)任務(wù)運(yùn)行完畢后,資源才能被釋放,才能將該資源提供給其他任務(wù),如此,如果任務(wù)運(yùn)行到后期的數(shù)據(jù)不重要,但依然占用機(jī)器資源使得其他重要任務(wù)無法使用機(jī)器資源,將造成資源的浪費(fèi)。
【
【發(fā)明內(nèi)容】
】
[0006]本發(fā)明提供了一種單機(jī)資源管理方法及系統(tǒng),能夠提高機(jī)器中資源的利用率。
[0007]本發(fā)明的具體技術(shù)方案如下:
[0008]根據(jù)本發(fā)明一優(yōu)選實(shí)施例,一種單機(jī)資源管理方法,包括:
[0009]控制中心依據(jù)預(yù)設(shè)的資源列表,在機(jī)器集群中選出滿足收到的任務(wù)請求中攜帶的資源條件和運(yùn)行起止時(shí)間的機(jī)器,并將任務(wù)運(yùn)行指令發(fā)送給選出的機(jī)器,所述任務(wù)運(yùn)行指令中包括任務(wù)的啟動腳本和運(yùn)行起止時(shí)間;
[0010]機(jī)器在運(yùn)行起始時(shí)間運(yùn)行所述啟動腳本,并控制Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源。
[0011]上述方法中,所述資源列表中存儲控制中心所管理的機(jī)器集群中機(jī)器中的資源在各個(gè)時(shí)間段的空閑值。
[0012]上述方法中,所述在機(jī)器集群中選出滿足收到的任務(wù)請求中攜帶的資源條件和運(yùn)行起止時(shí)間的機(jī)器具體包括:在機(jī)器集群中選擇任務(wù)的資源條件和運(yùn)行起止時(shí)間都滿足的機(jī)器,或在機(jī)器集群中選擇滿足任務(wù)的資源條件但不滿足運(yùn)行起止時(shí)間的機(jī)器。
[0013]上述方法中,當(dāng)選擇滿足任務(wù)的資源條件但不滿足運(yùn)行起止時(shí)間的機(jī)器時(shí),該方法還包括:依據(jù)所述資源列表將所述機(jī)器上運(yùn)行的其他任務(wù)遷移到其他機(jī)器上運(yùn)行。 [0014]上述方法中,該方法還包括:
[0015]控制中心依據(jù)所述任務(wù)的資源條件和運(yùn)行起止時(shí)間,在所述資源列表中修改選出的機(jī)器的資源在該運(yùn)行起止時(shí)間的空閑值。[0016]上述方法中,所述機(jī)器控制Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源具體包括:
[0017]機(jī)器將啟動的任務(wù)中進(jìn)程的進(jìn)程號輸入到所述Cgroup中的tasks文件中;所述進(jìn)程號為機(jī)器啟動任務(wù)后生成的;
[0018]所述Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所述進(jìn)程號對應(yīng)進(jìn)程的資源。
[0019]上述方法中,該方法還包括:
[0020]任務(wù)的運(yùn)行終止時(shí)間到時(shí)后,機(jī)器判斷所述Cgroup中的任務(wù)是否運(yùn)行完畢;
[0021]如果任務(wù)運(yùn)行完畢,刪除所述Cgroup ;
[0022]如果任務(wù)沒有運(yùn)行完畢,刪除所述任務(wù)后刪除所述Cgroup,或?qū)]有運(yùn)行完畢的任務(wù)遷移到其他Cgroup繼續(xù)運(yùn)行后刪除所述Cgroup。
[0023]上述方法中,所述機(jī)器判斷所述Cgroup中的任務(wù)是否運(yùn)行完畢具體包括:機(jī)器依據(jù)Cgroup中tasks文件中是否還有任務(wù)中進(jìn)程的進(jìn)程號,判斷所述Cgroup中的任務(wù)是否還有進(jìn)程正在運(yùn)行。
[0024]一種單機(jī)資源管理系統(tǒng),包括:控制中心和機(jī)器集群,所述機(jī)器集群包括一個(gè)以上機(jī)器;其中,
[0025]控制中心,用于依據(jù)預(yù)設(shè)的資源列表,在機(jī)器集群中選出滿足收到的任務(wù)請求中攜帶的資源條件和運(yùn)行起止時(shí)間的機(jī)器,并將任務(wù)運(yùn)行指令發(fā)送給選出的機(jī)器,所述任務(wù)運(yùn)行指令中包括任務(wù)的啟動腳本和運(yùn)行起止時(shí)間;
[0026]機(jī)器,用于在運(yùn)行起始時(shí)間運(yùn)行所述啟動腳本,并控制Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源。
[0027]上述系統(tǒng)中,所述資源列表中存儲控制中心所管理的機(jī)器集群中機(jī)器中的資源在各個(gè)時(shí)間段的空閑值。
[0028]上述系統(tǒng)中,所述控制中心在機(jī)器集群中選出滿足收到的任務(wù)請求中攜帶的資源條件和運(yùn)行起止時(shí)間的機(jī)器具體包括:在機(jī)器集群中選擇任務(wù)的資源條件和運(yùn)行起止時(shí)間都滿足的機(jī)器,或在機(jī)器集群中選擇滿足任務(wù)的資源條件但不滿足運(yùn)行起止時(shí)間的機(jī)器。
[0029]上述系統(tǒng)中,當(dāng)選擇滿足任務(wù)的資源條件但不滿足運(yùn)行起止時(shí)間的機(jī)器時(shí),所述控制中心,還用于依據(jù)所述資源列表將所述機(jī)器上運(yùn)行的其他任務(wù)遷移到其他機(jī)器上運(yùn)行。
[0030]上述系統(tǒng)中,
[0031]所述控制中心,還用于依據(jù)所述任務(wù)的資源條件和運(yùn)行起止時(shí)間,在所述資源列表中修改選出的機(jī)器的資源在該運(yùn)行起止時(shí)間的空閑值。
[0032]上述系統(tǒng)中,所述機(jī)器控制Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源具體包括:
[0033]機(jī)器將啟動的任務(wù)中進(jìn)程的進(jìn)程號輸入到所述Cgroup中的tasks文件中;所述進(jìn)程號為機(jī)器啟動任務(wù)后生成的;
[0034]所述Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所述進(jìn)程號對應(yīng)進(jìn)程的資源。
[0035]上述系統(tǒng)中,所述機(jī)器,還用于任務(wù)的運(yùn)行終止時(shí)間到時(shí)后,判斷所述Cgroup中的任務(wù)是否運(yùn)行完畢;如果任務(wù)運(yùn)行完畢,刪除所述Cgroup ;如果任務(wù)沒有運(yùn)行完畢,刪除所述任務(wù)后刪除所述Cgroup,或?qū)]有運(yùn)行完畢的任務(wù)遷移到其他Cgroup繼續(xù)運(yùn)行后刪除所述Cgroup。
[0036]上述系統(tǒng)中,所述機(jī)器判斷所述Cgroup中的任務(wù)是否運(yùn)行完畢具體包括:依據(jù)Cgroup中tasks文件中是否還有任務(wù)中進(jìn)程的進(jìn)程號,判斷所述Cgroup中的任務(wù)是否還有進(jìn)程正在運(yùn)行。
[0037]由以上技術(shù)方案可以看出,本發(fā)明提供的具有以下有益效果:
[0038]對于機(jī)器資源進(jìn)行分配時(shí),不再是停留在是否有空閑機(jī)器,而是以資源為單位,依據(jù)任務(wù)的資源條件和運(yùn)行時(shí)間為任務(wù)分配合適的資源,并利用Cgroup對任務(wù)進(jìn)行控制和隔離,從而充分利用機(jī)器中的資源,降低了機(jī)器的資源浪費(fèi),提高資源利用率。
【【專利附圖】
【附圖說明】】
[0039]圖1是本發(fā)明實(shí)現(xiàn)單機(jī)資源管理方法的優(yōu)選實(shí)施例的流程示意圖;
[0040]圖2是本發(fā)明實(shí)現(xiàn)單機(jī)資源管理系統(tǒng)的優(yōu)選實(shí)施例的結(jié)構(gòu)示意圖。
【【具體實(shí)施方式】】
[0041]控制族群(Cgroup, control group)是Linux內(nèi)核提供的一種可以限制、記錄、隔離進(jìn)程組所使用的物理資源的機(jī)制??刂谱迦壕褪且唤M按照某種標(biāo)準(zhǔn)劃分的進(jìn)程。Cgroup中的資源管理都是以控制族群為單位實(shí)現(xiàn),一個(gè)進(jìn)程可以加入到某個(gè)控制族群,也從一個(gè)進(jìn)程組遷移到另一個(gè)控制族群。一個(gè)進(jìn)程組的進(jìn)程可以使用Cgroup以控制族群為單位分配的資源,同時(shí)受到Cgroup以控制族群為單位設(shè)定的限制?;谠揅group,本發(fā)明提供一種基于Linux操作系統(tǒng)的單機(jī)資源管理方法及系統(tǒng),其基本思想是:控制中心依據(jù)預(yù)設(shè)的資源列表,在機(jī)器集群中選出滿足收到的任務(wù)請求中攜帶的資源條件和運(yùn)行起止時(shí)間的機(jī)器,并將任務(wù)運(yùn)行指令發(fā)送給選出的機(jī)器,所述任務(wù)運(yùn)行指令中包括任務(wù)的啟動腳本和運(yùn)行起止時(shí)間;機(jī)器在運(yùn)行起始`時(shí)間運(yùn)行所述啟動腳本,并控制Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源。
[0042]為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述。
[0043]本發(fā)明提供一種單機(jī)資源管理方法,圖1是本發(fā)明實(shí)現(xiàn)單機(jī)資源管理方法的優(yōu)選實(shí)施例的流程示意圖,如圖1所示,該優(yōu)選實(shí)施例包括以下步驟:
[0044]步驟101,控制中心接收用戶的任務(wù)請求,該任務(wù)請求中攜帶任務(wù)的資源條件和運(yùn)行起止時(shí)間以及任務(wù)的啟動腳本。
[0045]具體的,控制中心對機(jī)器集群中的機(jī)器的資源進(jìn)行統(tǒng)一管理和控制,包括對運(yùn)行任務(wù)所需要的資源和時(shí)間的管理。當(dāng)用戶請求運(yùn)行任務(wù)時(shí),需要向控制中心發(fā)出任務(wù)請求,該任務(wù)請求中需要攜帶以下信息:任務(wù)的啟動腳本、任務(wù)的資源條件和運(yùn)行起止時(shí)間;其中,任務(wù)的資源條件為運(yùn)行任務(wù)時(shí)需要占用的資源及對應(yīng)的資源大小,所述資源包括內(nèi)存、CPU、I/O帶寬、網(wǎng)絡(luò)帶寬等;任務(wù)的運(yùn)行起止時(shí)間可以為一個(gè)固定的時(shí)間段,如13點(diǎn)~15點(diǎn),也可以為某段時(shí)間內(nèi)的任意的時(shí)間段,如O點(diǎn)~15點(diǎn)中的兩個(gè)小時(shí);任務(wù)的啟動腳本用于指示需要運(yùn)行的任務(wù)及任務(wù)的運(yùn)行方法,運(yùn)行的任務(wù)指的是一個(gè)以上進(jìn)程需要執(zhí)行的操作,如多個(gè)進(jìn)程同時(shí)向內(nèi)存寫入文件;控制中心可以向用戶提供交互界面,以接收用戶通過交互界面發(fā)送的任務(wù)請求。[0046]步驟102,控制中心依據(jù)預(yù)設(shè)的資源列表,在機(jī)器集群中選出滿足所述資源條件和運(yùn)行起止時(shí)間的機(jī)器。
[0047]具體的,控制中心在收到用戶提交的任務(wù)請求后,查詢本地預(yù)設(shè)的資源列表,依據(jù)資源列表中的信息,在機(jī)器集群中查找滿足任務(wù)請求中任務(wù)的資源條件和運(yùn)行起止時(shí)間的機(jī)器;所述預(yù)設(shè)的資源列表用于存儲控制中心所管理的機(jī)器集群中每個(gè)機(jī)器中每種資源在各個(gè)時(shí)間段的空閑值;時(shí)間段的長短可以依據(jù)需求進(jìn)行設(shè)置,如15分鐘、30分鐘或60分鐘等;本優(yōu)選實(shí)施例中,控制中心所管理的機(jī)器集群中有一個(gè)以上機(jī)器,每個(gè)機(jī)器都為安裝有Linux操作系統(tǒng)的計(jì)算機(jī)。
[0048]其中,控制中心在機(jī)器集群中查找機(jī)器時(shí),任務(wù)的資源條件的優(yōu)先級高于運(yùn)行起止時(shí)間的優(yōu)先級,即選出的機(jī)器必須滿足任務(wù)的資源條件;如果資源列表中存在任務(wù)的資源條件和運(yùn)行起止時(shí)間都滿足的機(jī)器,則控制中心選出該機(jī)器來運(yùn)行用戶請求的任務(wù),如果任務(wù)的資源條件和運(yùn)行起止時(shí)間都滿足的機(jī)器有兩個(gè)以上時(shí),可以任意選取一個(gè)機(jī)器;如果存在滿足任務(wù)的資源條件,但不滿足運(yùn)行起止時(shí)間的機(jī)器,則表示滿足任務(wù)的資源條件的機(jī)器上在所述運(yùn)行起止時(shí)間的時(shí)間段有其他任務(wù)需要運(yùn)行,則依據(jù)所述資源列表判斷該機(jī)器上的其他任務(wù)是否可以遷移到其他機(jī)器上繼續(xù)運(yùn)行,如果依據(jù)所述資源列表,判斷出機(jī)器集群中存在滿足該機(jī)器上其他任務(wù)的資源條件和運(yùn)行起止時(shí)間的其他機(jī)器,則可以將該機(jī)器上的其他任務(wù)遷移到其他機(jī)器上運(yùn)行,然后該機(jī)器就可以用于運(yùn)行用戶請求運(yùn)行的任務(wù);如果判斷出機(jī)器集群中不存在滿足該機(jī)器上其他任務(wù)的資源條件和運(yùn)行起止時(shí)間的其他機(jī)器,則用戶請求運(yùn)行的任務(wù)需要排隊(duì),在其他任務(wù)運(yùn)行完畢后,再在該機(jī)器上運(yùn)行用戶請求運(yùn)行的任務(wù),即仍然選擇該機(jī)器作為運(yùn)行用戶請求任務(wù)的機(jī)器,這樣,控制中心依據(jù)用戶預(yù)先的配置判斷用戶是否允許修改運(yùn)行起止時(shí)間,當(dāng)用戶允許修改運(yùn)行起止時(shí)間時(shí),可以將運(yùn)行起始時(shí)間設(shè)置為其他任務(wù)的運(yùn)行終止時(shí)間或是推遲到下一天的同一時(shí)間段運(yùn)行該任務(wù)。這里,控制中心選擇機(jī)器時(shí),不是在當(dāng)前空閑機(jī)器中選擇,而是綜合依據(jù)機(jī)器上具體的資源空閑值和空閑時(shí)間來選擇合適的機(jī)器,從而可以充分的利用資源。
[0049]控制中心在為用戶請求運(yùn)行的任務(wù)選出機(jī)器后,依據(jù)該任務(wù)的資源條件和運(yùn)行起止時(shí)間,在預(yù)設(shè)的資源列表中修改選出的機(jī)器的資源在該運(yùn)行起止時(shí)間的空閑值,用于標(biāo)注該機(jī)器在該運(yùn)行起止時(shí)間中還有哪些資源、多少空閑資源未被占用,實(shí)現(xiàn)資源列表的即時(shí)更新,以便控制中心依據(jù)更新后的資源列表為其他任務(wù)分配機(jī)器。
[0050]步驟103,控制中心將任務(wù)運(yùn)行指令發(fā)送給選出的機(jī)器,該任務(wù)運(yùn)行指令中包括任務(wù)的啟動腳本、任務(wù)的資源條件和運(yùn)行起止時(shí)間。
[0051]具體的,控制中心在為用戶請求運(yùn)行的任務(wù)選出一個(gè)機(jī)器后,向該選出的機(jī)器的操作系統(tǒng)發(fā)送一個(gè)任務(wù)運(yùn)行指令,該運(yùn)行指令中包括:任務(wù)的啟動腳本、任務(wù)的資源條件和運(yùn)行起止時(shí)間。
[0052]步驟104,機(jī)器收到任務(wù)運(yùn)行指令后,如果達(dá)到任務(wù)的運(yùn)行起始時(shí)間,則運(yùn)行收到的啟動腳本;創(chuàng)建Cgroup并依據(jù)任務(wù)運(yùn)行指令中任務(wù)的資源條件為Cgroup分配資源,并控制Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源。
[0053]具體的,機(jī)器在收到任務(wù)運(yùn)行指令后,依據(jù)其中的任務(wù)的運(yùn)行起止時(shí)間判斷出到達(dá)任務(wù)的運(yùn)行起始時(shí)間時(shí),機(jī)器的操作系統(tǒng)首先運(yùn)行任務(wù)的啟動腳本來啟動任務(wù),任務(wù)啟動后操作系統(tǒng)將自動生成任務(wù)中每個(gè)進(jìn)程的進(jìn)程號,進(jìn)程號作為任務(wù)中每個(gè)進(jìn)程的唯一標(biāo)識;然后,機(jī)器的操作系統(tǒng)調(diào)用mkdir指令,該mkdir指令會在機(jī)器上自動創(chuàng)建Cgroup,并在創(chuàng)建的Cgroup的虛擬文件中創(chuàng)建目錄,在創(chuàng)建的目錄下操作系統(tǒng)可以依據(jù)任務(wù)運(yùn)行指令中任務(wù)的資源條件,設(shè)置任務(wù)運(yùn)行時(shí)占用的資源的上限值,從而實(shí)現(xiàn)為創(chuàng)建的Cgroup分配資源;其中設(shè)置的資源的上限值也可以依據(jù)任務(wù)需求進(jìn)行動態(tài)調(diào)整,以控制每個(gè)任務(wù)占用的機(jī)器資源,充分保證任務(wù)的資源使用。
[0054]例如,如下字段為調(diào)用mkdir指令后,在機(jī)器上自動創(chuàng)建的名稱為normal的用于限制內(nèi)存資源的Cgroup:
[0055][rootitest/]#cat/cgroup/memory/normal/
[0056]cgroup, procs memory.max_usage_in_bytes memory, stat
[0057]memory.excess_mode memor.memsw.failcnt memory, swappiness
[0058]memory, failcnt memory, memsw.1imit_in_bytes memory.usage_in_bytes
[0059]memory.force_emptymemory, memsw.max_usage_in_bytesmemory.use_hierarchy
[0060]memory.kill_mode memory, memsw.usage_in_bytes notify_on_release
[0061]memory.kill_priority memory.move_charge_at_immigrate tasks
[0062]memory.limit_in_bytes memory.soft_limit_in_bytes
[0063]上述字段中,memory.limit_in_bytes表示任務(wù)運(yùn)行時(shí)占用的內(nèi)存資源的上限值。
[0064]創(chuàng)建好Cgroup后`,操作系統(tǒng)將啟動任務(wù)后自動生成的進(jìn)程的進(jìn)程號(PID,Process IDentity)輸入到創(chuàng)建的Cgroup中的tasks文件中,Cgroup就可以在所述運(yùn)行起止時(shí)間內(nèi)依據(jù)設(shè)置的任務(wù)運(yùn)行時(shí)占用的資源的上限值,控制tasks文件中進(jìn)程號對應(yīng)的進(jìn)程的資源;此外,當(dāng)任務(wù)中的進(jìn)程運(yùn)行完畢后,操作系統(tǒng)就在tasks文件中刪除該進(jìn)程的進(jìn)程號,Cgroup中的tasks文件中僅保存正在運(yùn)行或未運(yùn)行的進(jìn)程的進(jìn)程號。
[0065]步驟105,任務(wù)運(yùn)行的終止時(shí)間到時(shí)后,機(jī)器判斷創(chuàng)建的Cgroup中的任務(wù)是否運(yùn)行完畢,如果運(yùn)行完畢,直接刪除該Cgroup,如果沒有運(yùn)行完畢,刪除任務(wù)后刪除所述Cgroup或?qū)]有運(yùn)行完畢的任務(wù)遷移到其他Cgroup繼續(xù)運(yùn)行后刪除所述Cgroup。
[0066]具體的,當(dāng)任務(wù)的運(yùn)行終止時(shí)間到達(dá)后,表示任務(wù)運(yùn)行的時(shí)間段結(jié)束,機(jī)器的操作系統(tǒng)依據(jù)Cgroup中tasks文件中是否還有該任務(wù)中進(jìn)程的進(jìn)程號,判斷創(chuàng)建的Cgroup中的任務(wù)是否還有進(jìn)程正在運(yùn)行。
[0067]如果Cgroup中tasks文件中還有進(jìn)程號,表示還有Cgroup中的任務(wù)中有進(jìn)程正在運(yùn)行,然后依據(jù)用戶預(yù)先的配置,判斷運(yùn)行終止時(shí)間到時(shí)后,是否繼續(xù)運(yùn)行任務(wù),如果配置的是繼續(xù)運(yùn)行任務(wù),則將該正在運(yùn)行的進(jìn)程的進(jìn)程號添加到其他Cgroup的tasks文件中,用于將沒有運(yùn)行完畢的任務(wù)遷移到其他Cgroup中繼續(xù)運(yùn)行,遷移完畢后刪除該Cgroup ;如果配置的是不繼續(xù)運(yùn)行任務(wù),則將Cgroup中的tasks文件中的進(jìn)程號刪除后,刪除該 Cgroup。
[0068]如果Cgroup中tasks文件中沒有進(jìn)程號,表示任務(wù)中所有進(jìn)程已經(jīng)運(yùn)行完畢,則直接刪除該Cgroup。
[0069]由于在創(chuàng)建Cgroup時(shí)為任務(wù)分配了資源,當(dāng)刪除該Cgroup后,之前分配的資源將自動釋放,重回資源池;刪除Cgroup的方法為刪除該Cgroup對應(yīng)的目錄,如上述字段中的cgroup/memory/normal/即為名稱為normal的Cgroup的目錄,刪除該目錄即可在操作系統(tǒng)中刪除對應(yīng)的Cgroup。
[0070]利用上述優(yōu)選實(shí)施例,對于只需要其中某一時(shí)段的數(shù)據(jù)的任務(wù),可以將該任務(wù)添加到Cgroup中運(yùn)行,過了該時(shí)段由于任務(wù)的數(shù)據(jù)重要性降低,可以依據(jù)用戶預(yù)先的配置刪除任務(wù)或?qū)⒃撊蝿?wù)遷移到其他的Cgroup組繼續(xù)運(yùn)行,既可以保證任務(wù)的正常運(yùn)行,又可以將Cgroup的資源供其他任務(wù)使用,從而可以提高資源的利用率。
[0071]為實(shí)現(xiàn)上述方法,本發(fā)明還提供一種單機(jī)資源管理系統(tǒng),圖2是本發(fā)明實(shí)現(xiàn)單機(jī)資源管理系統(tǒng)的優(yōu)選實(shí)施例的結(jié)構(gòu)示意圖,如圖2所示,該系統(tǒng)包括:控制中心20和機(jī)器集群,所述機(jī)器集群包括機(jī)器30廣30η ;其中,
[0072]控制中心20,用于依據(jù)預(yù)設(shè)的資源列表,在機(jī)器集群30中選出滿足收到的任務(wù)請求中攜帶的資源條件和運(yùn)行起止時(shí)間的機(jī)器,并將任務(wù)運(yùn)行指令發(fā)送給選出的機(jī)器,所述任務(wù)運(yùn)行指令中包括任務(wù)的啟動腳本和運(yùn)行起止時(shí)間;
[0073]機(jī)器30f30n,用于在運(yùn)行起始時(shí)間運(yùn)行所述啟動腳本,并控制Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源。
[0074]其中,所述資源列表中存儲控制中心所管理的機(jī)器集群中機(jī)器中的資源在各個(gè)時(shí)間段的空閑值。
[0075]其中,所述控制中心20在機(jī)器集群中選出滿足收到的任務(wù)請求中攜帶的資源條件和運(yùn)行起止時(shí)間的機(jī)器具體包括:在機(jī)器集群中選擇任務(wù)的資源條件和運(yùn)行起止時(shí)間都滿足的機(jī)器,或在機(jī)器集群中選擇滿足任務(wù)的資源條件但不滿足運(yùn)行起止時(shí)間的機(jī)器。
[0076]上述系統(tǒng)中,當(dāng)選擇滿足任務(wù)的資源條件但不滿足運(yùn)行起止時(shí)間的機(jī)器時(shí),所述控制中心20,還用于依據(jù)所述資源列表將所述機(jī)器上運(yùn)行的其他任務(wù)遷移到其他機(jī)器上運(yùn)行。
[0077]上述系統(tǒng)中,所述控制中心20,還用于依據(jù)所述任務(wù)的資源條件和運(yùn)行起止時(shí)間,在所述資源列表中修改選出的機(jī)器的資源在該運(yùn)行起止時(shí)間的空閑值。
[0078]其中,所述機(jī)器控制Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源具體包括:
[0079]機(jī)器將啟動的任務(wù)中進(jìn)程的進(jìn)程號輸入到所述Cgroup中的tasks文件中;所述進(jìn)程號為機(jī)器啟動任務(wù)后生成的;
[0080]所述Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所述進(jìn)程號對應(yīng)進(jìn)程的資源。
[0081]上述系統(tǒng)中,所述機(jī)器,還用于任務(wù)的運(yùn)行終止時(shí)間到時(shí)后,判斷所述Cgroup中的任務(wù)是否運(yùn)行完畢;如果任務(wù)運(yùn)行完畢,刪除所述Cgroup ;如果任務(wù)沒有運(yùn)行完畢,刪除所述任務(wù)后刪除所述Cgroup,或?qū)]有運(yùn)行完畢的任務(wù)遷移到其他Cgroup繼續(xù)運(yùn)行后刪除所述Cgroup。
[0082]其中,所述機(jī)器判斷所述Cgroup中的任務(wù)是否運(yùn)行完畢具體包括:依據(jù)Cgroup中tasks文件中是否還有任務(wù)中進(jìn)程的進(jìn)程號,判斷所述Cgroup中的任務(wù)是否還有進(jìn)程正在運(yùn)行。
[0083]本發(fā)明的上述技術(shù)方案中,對于機(jī)器資源進(jìn)行分配時(shí),不再是停留在是否有空閑機(jī)器,而是根據(jù)單臺機(jī)器的不同資源進(jìn)行分開管理和分配,并可以調(diào)節(jié)機(jī)器資源使用的時(shí)間段,做到對資源的最大利用。例如,目前機(jī)器的I/o帶寬占用率高,但網(wǎng)絡(luò)帶寬和CPU資源較充足,控制中心就可以在該機(jī)器上部署網(wǎng)絡(luò)測試任務(wù)或計(jì)算型測試任務(wù)。同時(shí),對于特定時(shí)間段的任務(wù),可以優(yōu)先保證該任務(wù)占用的資源,降低其他任務(wù)占用的資源,可以有效提高單機(jī)的資源綜合利用率,降低了單機(jī)的資源浪費(fèi)。
[0084]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
【權(quán)利要求】
1.一種單機(jī)資源管理方法,其特征在于,該方法包括: 控制中心依據(jù)預(yù)設(shè)的資源列表,在機(jī)器集群中選出滿足收到的任務(wù)請求中攜帶的資源條件和運(yùn)行起止時(shí)間的機(jī)器,并將任務(wù)運(yùn)行指令發(fā)送給選出的機(jī)器,所述任務(wù)運(yùn)行指令中包括任務(wù)的啟動腳本和運(yùn)行起止時(shí)間; 機(jī)器在運(yùn)行起始時(shí)間運(yùn)行所述啟動腳本,并控制Cgixnip在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述資源列表中存儲控制中心所管理的機(jī)器集群中機(jī)器中的資源在各個(gè)時(shí)間段的空閑值。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在機(jī)器集群中選出滿足收到的任務(wù)請求中攜帶的資源條件和運(yùn)行起止時(shí)間的機(jī)器具體包括:在機(jī)器集群中選擇任務(wù)的資源條件和運(yùn)行起止時(shí)間都滿足的機(jī)器,或在機(jī)器集群中選擇滿足任務(wù)的資源條件但不滿足運(yùn)行起止時(shí)間的機(jī)器。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,當(dāng)選擇滿足任務(wù)的資源條件但不滿足運(yùn)行起止時(shí)間的機(jī)器時(shí),該方法還包括:依據(jù)所述資源列表將所述機(jī)器上運(yùn)行的其他任務(wù)遷移到其他機(jī)器上運(yùn)行。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括: 控制中心依據(jù)所述任務(wù)的資源條件和運(yùn)行起止時(shí)間,在所述資源列表中修改選出的機(jī)器的資源在該運(yùn)行起止時(shí)間的空閑值。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述機(jī)器控制Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源具體包括: 機(jī)器將啟動的任務(wù)中進(jìn)程的進(jìn)程號輸入到所述Cgroup中的tasks文件中;所述進(jìn)程號為機(jī)器啟動任務(wù)后生成的; 所述Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所述進(jìn)程號對應(yīng)進(jìn)程的資源。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法還包括: 任務(wù)的運(yùn)行終止時(shí)間到時(shí)后,機(jī)器判斷所述Cgroup中的任務(wù)是否運(yùn)行完畢; 如果任務(wù)運(yùn)行完畢,刪除所述Cgroup ; 如果任務(wù)沒有運(yùn)行完畢,刪除所述任務(wù)后刪除所述Cgroup,或?qū)]有運(yùn)行完畢的任務(wù)遷移到其他Cgroup繼續(xù)運(yùn)行后刪除所述Cgroup。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述機(jī)器判斷所述Cgroup中的任務(wù)是否運(yùn)行完畢具體包括:機(jī)器依據(jù)Cgroup中tasks文件中是否還有任務(wù)中進(jìn)程的進(jìn)程號,判斷所述Cgroup中的任務(wù)是否還有進(jìn)程正在運(yùn)行。
9.一種單機(jī)資源管理系統(tǒng),其特征在于,該系統(tǒng)包括:控制中心和機(jī)器集群,所述機(jī)器集群包括一個(gè)以上機(jī)器;其中, 控制中心,用于依據(jù)預(yù)設(shè)的資源列表,在機(jī)器集群中選出滿足收到的任務(wù)請求中攜帶的資源條件和運(yùn)行起止時(shí)間的機(jī)器,并將任務(wù)運(yùn)行指令發(fā)送給選出的機(jī)器,所述任務(wù)運(yùn)行指令中包括任務(wù)的啟動腳本和運(yùn)行起止時(shí)間; 機(jī)器,用于在運(yùn)行起始時(shí)間運(yùn)行所述啟動腳本,并控制Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述資源列表中存儲控制中心所管理的機(jī)器集群中機(jī)器中的資源在各個(gè)時(shí)間段的空閑值。
11.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述控制中心在機(jī)器集群中選出滿足收到的任務(wù)請求中攜帶的資源條件和運(yùn)行起止時(shí)間的機(jī)器具體包括:在機(jī)器集群中選擇任務(wù)的資源條件和運(yùn)行起止時(shí)間都滿足的機(jī)器,或在機(jī)器集群中選擇滿足任務(wù)的資源條件但不滿足運(yùn)行起止時(shí)間的機(jī)器。
12.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,當(dāng)選擇滿足任務(wù)的資源條件但不滿足運(yùn)行起止時(shí)間的機(jī)器時(shí),所述控制中心,還用于依據(jù)所述資源列表將所述機(jī)器上運(yùn)行的其他任務(wù)遷移到其他機(jī)器上運(yùn)行。
13.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于, 所述控制中心,還用于依據(jù)所述任務(wù)的資源條件和運(yùn)行起止時(shí)間,在所述資源列表中修改選出的機(jī)器的資源在該運(yùn)行起止時(shí)間的空閑值。
14.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述機(jī)器控制Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所啟動任務(wù)中進(jìn)程的資源具體包括: 機(jī)器將啟動的任務(wù)中進(jìn)程的進(jìn)程號輸入到所述Cgroup中的tasks文件中;所述進(jìn)程號為機(jī)器啟動任務(wù)后生成的; 所述Cgroup在所述運(yùn)行起止時(shí)間內(nèi)控制所述進(jìn)程號對應(yīng)進(jìn)程的資源。
15.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述機(jī)器,還用于任務(wù)的運(yùn)行終止時(shí)間到時(shí)后,判斷所述Cgroup中的任務(wù)是否運(yùn)行完畢;如果任務(wù)運(yùn)行完畢,刪除所述Cgroup ;如果任務(wù)沒有運(yùn)行完畢,刪除所述任務(wù)后刪除所述Cgroup,或?qū)]有運(yùn)行完畢的任務(wù)遷移到其他Cgroup繼續(xù)運(yùn)行后刪除所述Cgroup。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其特征在于,所述機(jī)器判斷所述Cgroup中的任務(wù)是否運(yùn)行完畢具體包括:依據(jù)Cgroup中tasks文件中是否還有任務(wù)中進(jìn)程的進(jìn)程號,判斷所述Cgroup中的任務(wù)是否還有進(jìn)程正在運(yùn)行。
【文檔編號】G06F9/50GK103810046SQ201210459271
【公開日】2014年5月21日 申請日期:2012年11月15日 優(yōu)先權(quán)日:2012年11月15日
【發(fā)明者】侯娜, 陳曦 申請人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司