大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法及優(yōu)化系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開(kāi)了大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法及優(yōu)化系統(tǒng),包括任務(wù)的集中管理、分布式執(zhí)行、并發(fā)時(shí)的平滑控制、執(zhí)行時(shí)限控制、優(yōu)先級(jí)定義、運(yùn)行監(jiān)控、自我診斷等,為任務(wù)調(diào)度提供一個(gè)友好高效的操作界面。仿照類UNIX系統(tǒng)中的crond程序?qū)崿F(xiàn),增強(qiáng)精細(xì)控制功能,并支持主機(jī)之間的協(xié)作以實(shí)現(xiàn)任務(wù)的分布式執(zhí)行與集中監(jiān)控。采用數(shù)據(jù)庫(kù)集中管理多個(gè)主機(jī)管轄的任務(wù)定義以簡(jiǎn)化配置操作,為減輕數(shù)據(jù)庫(kù)負(fù)擔(dān),任務(wù)定義完畢導(dǎo)入共享內(nèi)存中,后續(xù)調(diào)度不再訪問(wèn)數(shù)據(jù)庫(kù)。調(diào)度平臺(tái)具有自我診斷能力,確保調(diào)度工作持續(xù)穩(wěn)定運(yùn)行。
【專利說(shuō)明】大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法及優(yōu)化系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法及優(yōu)化系統(tǒng)。
【背景技術(shù)】
[0002]虛擬化環(huán)境中存在大量的需要周期性執(zhí)行的管理任務(wù),如虛擬機(jī)的啟動(dòng)停止、配置參數(shù)的變更檢測(cè)、主機(jī)及應(yīng)用系統(tǒng)的異常檢測(cè)、性能指標(biāo)采集與分析、數(shù)據(jù)備份及超期數(shù)據(jù)的清理等。
[0003]類咖IX系統(tǒng)中的程序可以實(shí)現(xiàn)任務(wù)的定時(shí)執(zhí)行,但是采用純文本方式定義管理,不便于任務(wù)的定義、檢索、及運(yùn)行監(jiān)控,對(duì)于任務(wù)的執(zhí)行缺乏精細(xì)控制。
[0004]對(duì)于任務(wù)的并發(fā)執(zhí)行沒(méi)有額外控制,大批量任務(wù)并發(fā)時(shí)對(duì)系統(tǒng)資源沖擊很大,可能造成系統(tǒng)短時(shí)沒(méi)有響應(yīng)。
[0005]對(duì)于任務(wù)的執(zhí)行時(shí)限沒(méi)有控制,可能會(huì)出現(xiàn)任務(wù)進(jìn)程的無(wú)限期掛起,持續(xù)耗費(fèi)系統(tǒng)資源而失去控制。
[0006]任務(wù)沒(méi)有優(yōu)先級(jí)的概念,所有任務(wù)優(yōu)先級(jí)相同,不能區(qū)分任務(wù)的權(quán)重。
[0007]所有任務(wù)的日志信息混雜在一起,難以跟蹤。
[0008]不便于實(shí)時(shí)直觀監(jiān)控任務(wù)的運(yùn)行狀態(tài),可以通過(guò)命令查看進(jìn)程的運(yùn)行狀態(tài),但是不能與任務(wù)定義時(shí)的描述信息關(guān)聯(lián)。
[0009]對(duì)于分散在多個(gè)主機(jī)執(zhí)行的任務(wù),不能集中監(jiān)控與跟蹤。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的目的就是為了解決上述問(wèn)題,提供大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法及優(yōu)化系統(tǒng),它具有實(shí)現(xiàn)任務(wù)的集中管理與分布式執(zhí)行,實(shí)現(xiàn)虛擬化環(huán)境中相關(guān)任務(wù)的管理優(yōu)化,包括任務(wù)的集中管理、并發(fā)時(shí)的平滑控制、執(zhí)行時(shí)限控制、優(yōu)先級(jí)定義、運(yùn)行監(jiān)控、自我診斷等,為任務(wù)管理提供一個(gè)友好高效的操作界面的優(yōu)點(diǎn)。
[0011]為了實(shí)現(xiàn)上述目的,本發(fā)明采用如下技術(shù)方案:
[0012]大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法,包括如下步驟:
[0013]步驟(1):任務(wù)信息在數(shù)據(jù)庫(kù)中定義:在數(shù)據(jù)庫(kù)中集中定義虛擬化環(huán)境中的多個(gè)主機(jī)管轄的任務(wù)信息,所述任務(wù)信息包括任務(wù)的歸屬主機(jī)和任務(wù)的優(yōu)先級(jí)屬性;
[0014]步驟(2):數(shù)據(jù)庫(kù)任務(wù)信息裝載:按需執(zhí)行,從數(shù)據(jù)庫(kù)中提取任務(wù)信息并將提取出的任務(wù)信息裝入任務(wù)信息共享內(nèi)存;
[0015]步驟(3):基礎(chǔ)框架運(yùn)行:創(chuàng)建進(jìn)程管理共享內(nèi)存,搭建基礎(chǔ)平臺(tái)支撐上層調(diào)度進(jìn)程及任務(wù)進(jìn)程的運(yùn)行;調(diào)度進(jìn)程執(zhí)行任務(wù)時(shí),通知平臺(tái)進(jìn)程,由平臺(tái)進(jìn)程從進(jìn)程管理共享內(nèi)存中查找空閑的槽位,并創(chuàng)建一個(gè)子進(jìn)程作為任務(wù)進(jìn)程;
[0016]步驟(4):任務(wù)調(diào)度:負(fù)責(zé)調(diào)度各個(gè)任務(wù)的周期性運(yùn)行;定期從任務(wù)信息共享內(nèi)存中讀取任務(wù)的配置信息,檢測(cè)各個(gè)任務(wù)的調(diào)度周期,對(duì)于需要調(diào)度執(zhí)行的任務(wù),綁定任務(wù)指定的優(yōu)先級(jí)放入調(diào)度隊(duì)列;全部任務(wù)檢查完畢后,按照任務(wù)優(yōu)先級(jí)由高到低依次讀取隊(duì)列中需要執(zhí)行的任務(wù),通知平臺(tái)進(jìn)程增加一個(gè)相應(yīng)的任務(wù)進(jìn)程,觸發(fā)任務(wù)對(duì)應(yīng)的執(zhí)行程序的運(yùn)行,任務(wù)進(jìn)程執(zhí)行時(shí)記錄起止時(shí)間與執(zhí)行結(jié)果,調(diào)度進(jìn)程并不等待任務(wù)進(jìn)程執(zhí)行結(jié)束;
[0017]步驟(5):任務(wù)匯總:每臺(tái)執(zhí)行任務(wù)調(diào)度的主機(jī)運(yùn)行一個(gè)代理進(jìn)程;任務(wù)匯總進(jìn)程定期執(zhí)行,逐一向每臺(tái)主機(jī)上的代理進(jìn)程索要每臺(tái)主機(jī)的任務(wù)信息共享內(nèi)存的全部數(shù)據(jù),放入本地緩存;全部信息索要完畢后一并裝入任務(wù)信息匯總共享內(nèi)存中,最后釋放本地緩存;
[0018]步驟¢):運(yùn)行監(jiān)控:從任務(wù)信息匯總共享內(nèi)存中提取任務(wù)配置數(shù)據(jù)及運(yùn)行信息,能夠?qū)崟r(shí)查看任務(wù)調(diào)度整體運(yùn)行信息以及每個(gè)任務(wù)的配置及運(yùn)行信息。
[0019]所述優(yōu)化方法還包括自我診斷步驟:后臺(tái)常駐執(zhí)行,實(shí)時(shí)檢測(cè)各個(gè)進(jìn)程的運(yùn)行狀態(tài),對(duì)于執(zhí)行持續(xù)時(shí)間超過(guò)設(shè)定時(shí)限的任務(wù)進(jìn)程,強(qiáng)行殺死,避免任務(wù)進(jìn)程的無(wú)限期掛起,確保任務(wù)的執(zhí)行可控。根據(jù)進(jìn)程管理共享內(nèi)存中記錄的每個(gè)任務(wù)進(jìn)程的進(jìn)程10,判斷調(diào)度進(jìn)程存活與否,如果調(diào)度進(jìn)程異常終止則予以重新啟動(dòng),確保整個(gè)調(diào)度工作持續(xù)穩(wěn)定運(yùn)行。
[0020]所述步驟(1)的虛擬化環(huán)境中的每臺(tái)主機(jī)都能夠加載自己的任務(wù)信息共享內(nèi)存,裝載自己管轄的任務(wù),并啟動(dòng)任務(wù)調(diào)度周期執(zhí)行,從而實(shí)現(xiàn)任務(wù)調(diào)度的分布式執(zhí)行。
[0021]所述步驟⑶中:
[0022]所述平臺(tái)進(jìn)程通過(guò)耶?通信機(jī)制等待用戶操作指令、調(diào)度進(jìn)程或診斷進(jìn)程的通知,作為調(diào)度進(jìn)程及每個(gè)任務(wù)進(jìn)程的父進(jìn)程山0?是一種通信協(xié)議,^0?是0社叫以111?1~0^0001的簡(jiǎn)稱,中文名是用戶數(shù)據(jù)報(bào)協(xié)議;
[0023]所述進(jìn)程管理共享內(nèi)存劃分為多個(gè)槽位,基礎(chǔ)框架之上運(yùn)行的每個(gè)進(jìn)程占用其中一個(gè)槽位,所述槽位用于存放任務(wù)編號(hào)、進(jìn)程10、用戶10、組10、執(zhí)行時(shí)間和執(zhí)行時(shí)限信息,調(diào)度進(jìn)程固定占用第一個(gè)槽位。
[0024]所述步驟(4)的步驟為:
[0025]步驟(4-1):任務(wù)調(diào)度開(kāi)始,獲取當(dāng)前時(shí)間;對(duì)任務(wù)信息共享內(nèi)存加鎖,連接任務(wù)信息共享內(nèi)存;讀取任務(wù)信息共享內(nèi)存中全部數(shù)據(jù),放入本地緩存;對(duì)任務(wù)信息共享內(nèi)存解鎖,斷連任務(wù)信息共享內(nèi)存;
[0026]步驟(4-2):調(diào)度進(jìn)程循環(huán)處理本地緩存中的每個(gè)任務(wù):檢查每個(gè)任務(wù)的調(diào)度周期,對(duì)于需要調(diào)度執(zhí)行的任務(wù),綁定任務(wù)指定的優(yōu)先級(jí)之后,加入調(diào)度隊(duì)列;
[0027]步驟(4-3):判斷調(diào)度隊(duì)列中是否有任務(wù),如果是就進(jìn)入步驟(4-4);否則就睡眠一個(gè)設(shè)定周期后返回步驟(4-1);
[0028]步驟(4-4):判斷是否存在空閑槽位,如果存在空閑槽位,按照任務(wù)優(yōu)先級(jí)由高到低依次讀取隊(duì)列中需要執(zhí)行的任務(wù),通知平臺(tái)進(jìn)程增加一個(gè)相應(yīng)的任務(wù)子進(jìn)程,任務(wù)子進(jìn)程執(zhí)行時(shí),占用前面分配的管理槽位,記錄相關(guān)的運(yùn)行信息;所述運(yùn)行信息包括任務(wù)編號(hào)、進(jìn)程10、用戶10、組10、執(zhí)行時(shí)間和執(zhí)行時(shí)限;調(diào)度隊(duì)列中的任務(wù)全部處理完畢之后,返回步驟(4-3);如果不存在空閑槽位,就暫停設(shè)定時(shí)間后返回步驟(4-4)。
[0029]所述步驟⑷中:
[0030]任務(wù)進(jìn)程啟動(dòng)后需要連接任務(wù)信息共享內(nèi)存,讀取額外配置參數(shù),運(yùn)行時(shí)需要修改任務(wù)的執(zhí)行狀態(tài)信息,所述任務(wù)的執(zhí)行狀態(tài)信息包括當(dāng)前狀態(tài)、開(kāi)始時(shí)間、結(jié)束時(shí)間和執(zhí)行結(jié)果。
[0031]為了避免修改每個(gè)任務(wù)的原有執(zhí)行程序,引入一個(gè)封裝程序,調(diào)度進(jìn)程直接調(diào)度執(zhí)行封裝程序,然后由封裝程序?qū)崿F(xiàn)共享內(nèi)存的訪問(wèn)并調(diào)用任務(wù)原有的執(zhí)行程序。封裝程序同時(shí)在文件中記錄任務(wù)運(yùn)行結(jié)果信息,后續(xù)批量導(dǎo)入數(shù)據(jù)庫(kù)中,以便制作運(yùn)維分析報(bào)表提供決策支持。
[0032]每個(gè)任務(wù)進(jìn)程在日志文件中記錄自己的運(yùn)行信息,日志文件根據(jù)任務(wù)編號(hào)命名,方便跟蹤定位。
[0033]所述自我診斷步驟為:
[0034]步驟(3-1):自我診斷進(jìn)程讀取配置文件,對(duì)鎖文件加鎖,并記錄進(jìn)程10 ;
[0035]步驟(3-2):判斷加鎖是否失敗,如果是就結(jié)束,否則就進(jìn)入步驟(3-3);
[0036]步驟(3-3):自我診斷進(jìn)程連接進(jìn)程管理共享內(nèi)存;
[0037]步驟(3-4):判斷所有子進(jìn)程檢查是否完畢,如果是就斷連進(jìn)程管理共享內(nèi)存,睡眠一個(gè)周期后返回步驟(3-3);否則就對(duì)信號(hào)燈加鎖,讀取一個(gè)子進(jìn)程的相關(guān)信息,解鎖信號(hào)燈;進(jìn)入步驟(3-5);
[0038]步驟(3-5):判斷是否進(jìn)行異常終止檢測(cè),如果是就進(jìn)入步驟(3-6);否則就進(jìn)入步驟(£1-7);
[0039]步驟(3-6):判斷子進(jìn)程是否異常終止,如果是就通知平臺(tái)進(jìn)程進(jìn)入步驟(3-4);否則就進(jìn)入步驟(3-7);
[0040]步驟(3-7):判斷是否進(jìn)行執(zhí)行時(shí)限檢測(cè),如果是就獲取當(dāng)前時(shí)間,計(jì)算子進(jìn)程運(yùn)行的持續(xù)時(shí)間,進(jìn)入步驟^-8);否則就進(jìn)入步驟(8-4);
[0041]步驟(3-8):判斷持續(xù)時(shí)間是否超過(guò)設(shè)定時(shí)限,如果是就強(qiáng)行殺死子進(jìn)程,然后進(jìn)入步驟(3-4);否則就進(jìn)入步驟仏-4)。
[0042]所述步驟¢)的整體運(yùn)行信息包含任務(wù)總數(shù)、正在運(yùn)行的任務(wù)數(shù)目、成功執(zhí)行的任務(wù)累計(jì)數(shù)目、運(yùn)行失敗的任務(wù)累計(jì)數(shù)目和平臺(tái)累計(jì)運(yùn)行時(shí)間。
[0043]大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化系統(tǒng),包括:
[0044]任務(wù)信息在數(shù)據(jù)庫(kù)中定義模塊:在數(shù)據(jù)庫(kù)中集中定義虛擬化環(huán)境中的多個(gè)主機(jī)管轄的任務(wù)信息,所述任務(wù)信息包括任務(wù)的歸屬主機(jī)和任務(wù)的優(yōu)先級(jí)屬性;
[0045]數(shù)據(jù)庫(kù)任務(wù)信息裝載模塊:按需執(zhí)行,從數(shù)據(jù)庫(kù)中提取任務(wù)信息并將提取出的任務(wù)信息裝入任務(wù)信息共享內(nèi)存;
[0046]基礎(chǔ)框架運(yùn)行模塊:創(chuàng)建進(jìn)程管理共享內(nèi)存,搭建基礎(chǔ)平臺(tái)支撐上層調(diào)度進(jìn)程及任務(wù)進(jìn)程的運(yùn)行;調(diào)度進(jìn)程執(zhí)行任務(wù)時(shí),通知平臺(tái)進(jìn)程,由平臺(tái)進(jìn)程從進(jìn)程管理共享內(nèi)存中查找空閑的槽位,并創(chuàng)建一個(gè)子進(jìn)程作為任務(wù)進(jìn)程;
[0047]任務(wù)調(diào)度模塊:負(fù)責(zé)調(diào)度各個(gè)任務(wù)的周期性運(yùn)行;定期從任務(wù)信息共享內(nèi)存中讀取任務(wù)的配置信息,檢測(cè)各個(gè)任務(wù)的調(diào)度周期,對(duì)于需要調(diào)度執(zhí)行的任務(wù),綁定任務(wù)指定的優(yōu)先級(jí)放入調(diào)度隊(duì)列;全部任務(wù)檢查完畢后,按照任務(wù)優(yōu)先級(jí)由高到低依次讀取隊(duì)列中需要執(zhí)行的任務(wù),通知平臺(tái)進(jìn)程增加一個(gè)相應(yīng)的任務(wù)進(jìn)程,觸發(fā)任務(wù)對(duì)應(yīng)的執(zhí)行程序的運(yùn)行,任務(wù)進(jìn)程執(zhí)行時(shí)記錄起止時(shí)間與執(zhí)行結(jié)果,調(diào)度進(jìn)程并不等待任務(wù)進(jìn)程執(zhí)行結(jié)束;
[0048]任務(wù)匯總模塊:每臺(tái)執(zhí)行任務(wù)調(diào)度的主機(jī)運(yùn)行一個(gè)代理進(jìn)程;任務(wù)匯總進(jìn)程定期執(zhí)行,逐一向每臺(tái)主機(jī)上的代理進(jìn)程索要每臺(tái)主機(jī)的任務(wù)信息共享內(nèi)存的全部數(shù)據(jù),放入本地緩存;全部信息索要完畢后一并裝入任務(wù)信息匯總共享內(nèi)存中,最后釋放本地緩存;
[0049]運(yùn)行監(jiān)控模塊:從任務(wù)信息匯總共享內(nèi)存中提取任務(wù)配置數(shù)據(jù)及運(yùn)行信息,能夠?qū)崟r(shí)查看任務(wù)調(diào)度整體運(yùn)行信息以及每個(gè)任務(wù)的配置及運(yùn)行信息。
[0050]所述優(yōu)化系統(tǒng)還包括自我診斷模塊:后臺(tái)常駐執(zhí)行,實(shí)時(shí)檢測(cè)各個(gè)進(jìn)程的運(yùn)行狀態(tài),對(duì)于執(zhí)行持續(xù)時(shí)間超過(guò)設(shè)定時(shí)限的任務(wù)進(jìn)程,強(qiáng)行殺死,避免任務(wù)進(jìn)程的無(wú)限期掛起,確保任務(wù)的執(zhí)行可控。根據(jù)進(jìn)程管理共享內(nèi)存中記錄的每個(gè)任務(wù)進(jìn)程的進(jìn)程10,判斷調(diào)度進(jìn)程存活與否,如果調(diào)度進(jìn)程異常終止則予以重新啟動(dòng),確保整個(gè)調(diào)度工作持續(xù)穩(wěn)定運(yùn)行。
[0051]所述任務(wù)信息在數(shù)據(jù)庫(kù)中定義模塊的虛擬化環(huán)境中的每臺(tái)主機(jī)都能夠加載自己的任務(wù)信息共享內(nèi)存,裝載自己管轄的任務(wù),并啟動(dòng)任務(wù)調(diào)度周期執(zhí)行,從而實(shí)現(xiàn)任務(wù)調(diào)度的分布式執(zhí)行。
[0052]所述基礎(chǔ)框架運(yùn)行模塊中:
[0053]所述平臺(tái)進(jìn)程通過(guò)耶?通信機(jī)制等待用戶操作指令、調(diào)度進(jìn)程或診斷進(jìn)程的通知,作為調(diào)度進(jìn)程及每個(gè)任務(wù)進(jìn)程的父進(jìn)程;
[0054]所述進(jìn)程管理共享內(nèi)存劃分為多個(gè)槽位,基礎(chǔ)框架之上運(yùn)行的每個(gè)進(jìn)程占用其中一個(gè)槽位,所述槽位用于存放任務(wù)編號(hào)、進(jìn)程10、用戶10、組10、執(zhí)行時(shí)間和執(zhí)行時(shí)限信息,調(diào)度進(jìn)程固定占用第一個(gè)槽位。
[0055]所述任務(wù)調(diào)度模塊中:
[0056]任務(wù)進(jìn)程啟動(dòng)后需要連接任務(wù)信息共享內(nèi)存,讀取額外配置參數(shù),運(yùn)行時(shí)需要修改任務(wù)的執(zhí)行狀態(tài)信息,所述任務(wù)的執(zhí)行狀態(tài)信息包括當(dāng)前狀態(tài)、開(kāi)始時(shí)間、結(jié)束時(shí)間和執(zhí)行結(jié)果。
[0057]為了避免修改每個(gè)任務(wù)的原有執(zhí)行程序,引入一個(gè)封裝程序,調(diào)度進(jìn)程直接調(diào)度執(zhí)行封裝程序,然后由封裝程序?qū)崿F(xiàn)共享內(nèi)存的訪問(wèn)并調(diào)用任務(wù)原有的執(zhí)行程序。封裝程序同時(shí)在文件中記錄任務(wù)運(yùn)行結(jié)果信息,后續(xù)批量導(dǎo)入數(shù)據(jù)庫(kù)中,以便制作運(yùn)維分析報(bào)表提供決策支持。
[0058]每個(gè)任務(wù)進(jìn)程在日志文件中記錄自己的運(yùn)行信息,日志文件根據(jù)任務(wù)編號(hào)命名,方便跟蹤定位。
[0059]所述運(yùn)行監(jiān)控模塊的整體運(yùn)行信息包含任務(wù)總數(shù)、正在運(yùn)行的任務(wù)數(shù)目、成功執(zhí)行的任務(wù)累計(jì)數(shù)目、運(yùn)行失敗的任務(wù)累計(jì)數(shù)目和平臺(tái)累計(jì)運(yùn)行時(shí)間。
[0060]本發(fā)明的有益效果是:
[0061]1簡(jiǎn)化任務(wù)的配置管理,實(shí)現(xiàn)任務(wù)的集中配置與分布式執(zhí)行,平滑控制任務(wù)的并發(fā)執(zhí)行,支持任務(wù)優(yōu)先級(jí)定義,控制任務(wù)的執(zhí)行時(shí)限,支持分布式執(zhí)行的任務(wù)運(yùn)行信息的定期匯總,支持自我診斷,自動(dòng)重新啟動(dòng)異常終止的調(diào)度工作,并集中實(shí)時(shí)直觀監(jiān)控任務(wù)的運(yùn)行狀態(tài),還可以定期制作運(yùn)維分析報(bào)表提供決策支持。
[0062]2采用共享內(nèi)存存儲(chǔ)的另外一個(gè)好處是可以讓外部程序方便的查看調(diào)度平臺(tái)內(nèi)部的數(shù)據(jù)信息,了解平臺(tái)自身及被調(diào)度任務(wù)的運(yùn)行情況。
[0063]3任務(wù)信息載入任務(wù)信息共享內(nèi)存后,后續(xù)調(diào)度時(shí)不再訪問(wèn)數(shù)據(jù)庫(kù)從而減輕數(shù)據(jù)庫(kù)負(fù)擔(dān)。
【專利附圖】
【附圖說(shuō)明】
[0064]圖1為整體功能架構(gòu)示意圖。
[0065]圖2為任務(wù)調(diào)度流程圖。
[0066]圖3為自我診斷流程圖。
[0067]圖4為任務(wù)匯總示意圖。
【具體實(shí)施方式】
[0068]下面結(jié)合附圖與實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
[0069]數(shù)據(jù)庫(kù)產(chǎn)品采用亂,共享內(nèi)存機(jī)制采用類冊(cè)IX系統(tǒng)內(nèi)置支持的378仏III V標(biāo)準(zhǔn)的111611101*7。為協(xié)調(diào)多個(gè)進(jìn)程對(duì)共享內(nèi)存的同步訪問(wèn),采用$781:6111 V標(biāo)準(zhǔn)的信號(hào)燈86111叩1101~6作為加鎖同步機(jī)制。調(diào)度隊(duì)列采用3781:6111 V標(biāo)準(zhǔn)的消息隊(duì)列,支持消息優(yōu)先級(jí)。
[0070]為提高任務(wù)信息共享內(nèi)存訪問(wèn)的并發(fā)能力,采用兩個(gè)信號(hào)燈控制內(nèi)存同步訪問(wèn):一個(gè)“刷新燈”,一個(gè)“讀燈”。目標(biāo)效果有三點(diǎn):多個(gè)進(jìn)程可以同時(shí)讀取共享內(nèi)存、內(nèi)存刷新時(shí)禁止其他進(jìn)程訪問(wèn)、其他進(jìn)程正在訪問(wèn)共享內(nèi)存時(shí)禁止刷新操作。
[0071]進(jìn)程管理共享內(nèi)存同樣需要加鎖保護(hù),以協(xié)調(diào)多個(gè)進(jìn)程的同步訪問(wèn)。與上面提及的任務(wù)信息共享內(nèi)存使用的“刷新燈”、“讀燈”無(wú)關(guān),進(jìn)程管理共享內(nèi)存使用一個(gè)獨(dú)立的信號(hào)燈作為互斥鎖。
[0072]按照實(shí)際需要簡(jiǎn)化任務(wù)的調(diào)度周期定義,仿照的定義格式,簡(jiǎn)化為三個(gè)域,分別表示分鐘、小時(shí)、天。每個(gè)定義域支持填寫固定值(如1),或者填寫一個(gè)間隔時(shí)間(如 ^/5)。
[0073]首先通過(guò)配置界面添加或調(diào)整任務(wù)信息,任務(wù)定義時(shí)包含歸屬主機(jī)及優(yōu)先級(jí)屬性,在數(shù)據(jù)庫(kù)中集中存儲(chǔ),之后執(zhí)行任務(wù)信息裝載模塊裝入共享內(nèi)存。共享內(nèi)存數(shù)據(jù)準(zhǔn)備完畢,啟動(dòng)基礎(chǔ)框架、任務(wù)調(diào)度模塊、自我診斷、任務(wù)匯總,此后整個(gè)平臺(tái)進(jìn)入自我管理的運(yùn)行狀態(tài),周期性調(diào)度任務(wù)執(zhí)行。此時(shí)可以通過(guò)運(yùn)行監(jiān)控界面實(shí)時(shí)查看調(diào)度平臺(tái)運(yùn)行狀態(tài)。
[0074]后續(xù)如果需要調(diào)整任務(wù)配置參數(shù),可以聯(lián)機(jī)刷新任務(wù)信息共享內(nèi)存,無(wú)需重新啟動(dòng)整個(gè)調(diào)度平臺(tái)。
[0075]基礎(chǔ)框架模塊運(yùn)行時(shí)讀取命令行指定的配置文件,獲取管理參數(shù)(如共享內(nèi)存10、并發(fā)任務(wù)數(shù)目等),創(chuàng)建進(jìn)程管理共享內(nèi)存,搭建基礎(chǔ)平臺(tái)支撐上層調(diào)度進(jìn)程及任務(wù)進(jìn)程的運(yùn)行。進(jìn)程管理共享內(nèi)存劃分為多個(gè)槽位,基礎(chǔ)框架之上運(yùn)行的每個(gè)進(jìn)程占用其中一個(gè)槽位,存放任務(wù)編號(hào)、進(jìn)程10、用戶10、組10、執(zhí)行時(shí)間、執(zhí)行時(shí)限等管理信息。調(diào)度進(jìn)程固定占用第一個(gè)槽位。
[0076]平臺(tái)進(jìn)程通過(guò)耶?通信機(jī)制等待用戶操作指令與調(diào)度進(jìn)程或診斷進(jìn)程的通知,作為調(diào)度進(jìn)程及每個(gè)任務(wù)進(jìn)程的父進(jìn)程。調(diào)度進(jìn)程執(zhí)行任務(wù)時(shí),自身并不創(chuàng)建子進(jìn)程,而是通知平臺(tái)進(jìn)程,由后者查找空閑槽位,并創(chuàng)建一個(gè)子進(jìn)程作為任務(wù)進(jìn)程。
[0077]調(diào)度進(jìn)程后臺(tái)常駐執(zhí)行,間隔設(shè)定的睡眠周期持續(xù)運(yùn)行,每次執(zhí)行時(shí)一次性讀取任務(wù)信息共享內(nèi)存的全部?jī)?nèi)容,檢查每個(gè)任務(wù)的調(diào)度周期,對(duì)于需要調(diào)度執(zhí)行的任務(wù),綁定任務(wù)指定的優(yōu)先級(jí)放入調(diào)度隊(duì)列。全部任務(wù)檢查完畢后,按照任務(wù)優(yōu)先級(jí)由高到低依次讀取隊(duì)列中需要執(zhí)行的任務(wù),通知平臺(tái)進(jìn)程增加一個(gè)相應(yīng)的任務(wù)進(jìn)程,調(diào)度進(jìn)程并不等待任務(wù)進(jìn)程執(zhí)行結(jié)束。如果管理槽位不足,暫停調(diào)度。從而實(shí)現(xiàn)任務(wù)并發(fā)的平滑控制及優(yōu)先級(jí)管理。
[0078]任務(wù)進(jìn)程啟動(dòng)后需要連接任務(wù)信息共享內(nèi)存,讀取額外配置參數(shù),運(yùn)行時(shí)需要修改任務(wù)的執(zhí)行狀態(tài)信息(如當(dāng)前狀態(tài)、開(kāi)始時(shí)間、結(jié)束時(shí)間、執(zhí)行結(jié)果等為了避免修改每個(gè)任務(wù)的原有執(zhí)行程序,引入一個(gè)封裝程序,調(diào)度進(jìn)程直接調(diào)度執(zhí)行封裝程序,然后由封裝程序?qū)崿F(xiàn)共享內(nèi)存的訪問(wèn)并調(diào)用任務(wù)原有的執(zhí)行程序。封裝程序同時(shí)在文件中記錄任務(wù)運(yùn)行結(jié)果信息,后續(xù)批量導(dǎo)入數(shù)據(jù)庫(kù)中,以便制作運(yùn)維分析報(bào)表提供決策支持。
[0079]每個(gè)任務(wù)進(jìn)程在日志文件中記錄自己的運(yùn)行信息,日志文件根據(jù)任務(wù)編號(hào)命名,方便跟蹤定位。
[0080]自我診斷模塊運(yùn)行時(shí)讀取命令行指定的配置文件,獲取管理參數(shù)(如共享內(nèi)存10、睡眠間隔等),之后后臺(tái)常駐執(zhí)行,定期檢測(cè)各個(gè)進(jìn)程的運(yùn)行狀態(tài),因?yàn)檫M(jìn)程管理共享內(nèi)存中記錄著每個(gè)進(jìn)程的執(zhí)行開(kāi)始時(shí)間、執(zhí)行時(shí)限信息,自我診斷模塊可以據(jù)以計(jì)算任務(wù)進(jìn)程的執(zhí)行持續(xù)時(shí)間,對(duì)于超過(guò)設(shè)定時(shí)限的任務(wù)進(jìn)程,強(qiáng)行殺死,避免任務(wù)進(jìn)程的無(wú)限期掛起,確保任務(wù)的執(zhí)行可控。
[0081]因?yàn)檫M(jìn)程管理共享內(nèi)存中記錄著每個(gè)進(jìn)程的進(jìn)程10,自我診斷模塊可以據(jù)以判斷調(diào)度進(jìn)程存活與否,如果調(diào)度進(jìn)程異常終止則予以重新啟動(dòng),確保整個(gè)調(diào)度工作持續(xù)穩(wěn)定運(yùn)行。
[0082]任務(wù)定義時(shí)添加主機(jī)信息,指定任務(wù)的歸屬主機(jī)。虛擬化環(huán)境中的每臺(tái)主機(jī)都可以加載自己的任務(wù)信息共享內(nèi)存,裝載自己管轄的任務(wù),并啟動(dòng)任務(wù)調(diào)度平臺(tái)調(diào)度任務(wù)周期執(zhí)行。為簡(jiǎn)化運(yùn)行監(jiān)控,各個(gè)主機(jī)的任務(wù)狀態(tài)信息定期匯總以便集中查看任務(wù)的運(yùn)行狀態(tài)。
[0083]每臺(tái)執(zhí)行任務(wù)調(diào)度的主機(jī)運(yùn)行一個(gè)代理進(jìn)程,接受匯總進(jìn)程的請(qǐng)求并回復(fù)自己的任務(wù)信息共享內(nèi)存的全部數(shù)據(jù)。任務(wù)匯總進(jìn)程定期執(zhí)行,逐一向每臺(tái)主機(jī)上的代理進(jìn)程索要各自的任務(wù)信息共享內(nèi)存數(shù)據(jù),放入本地緩存。全部信息索要完畢,一并裝入任務(wù)信息匯總共享內(nèi)存中,供運(yùn)行監(jiān)控界面查看使用,最后釋放本地緩存。
[0084]運(yùn)行監(jiān)控界面從任務(wù)信息匯總共享內(nèi)存中獲取任務(wù)的配置及運(yùn)行信息,并展現(xiàn),支持定期刷新。監(jiān)控頁(yè)面分為上下兩個(gè)部分,上面顯示調(diào)度平臺(tái)整體運(yùn)行信息,下面以表格方式顯示各個(gè)運(yùn)行的任務(wù)信息。整體運(yùn)行信息包含任務(wù)總數(shù)、正在運(yùn)行的任務(wù)數(shù)目、成功執(zhí)行的任務(wù)累計(jì)數(shù)目、運(yùn)行失敗的任務(wù)累計(jì)數(shù)目、平臺(tái)累計(jì)運(yùn)行時(shí)間等。
[0085]任務(wù)調(diào)度模塊:仿照類冊(cè)IX系統(tǒng)中的程序?qū)崿F(xiàn),增強(qiáng)精細(xì)控制功能(如并發(fā)時(shí)的平滑控制、優(yōu)先級(jí)定義)。
[0086]下面結(jié)合附圖對(duì)本發(fā)明進(jìn)一步說(shuō)明。
[0087]如圖1所示,以單臺(tái)主機(jī)為例描述任務(wù)調(diào)度系統(tǒng)的整體功能框架,整個(gè)任務(wù)調(diào)度系統(tǒng)主要包含:任務(wù)信息裝載、基礎(chǔ)框架、任務(wù)調(diào)度、自我診斷、運(yùn)行監(jiān)控,各個(gè)組成部分作為一個(gè)有機(jī)整體協(xié)同工作。
[0088]首先通過(guò)配置界面添加或調(diào)整任務(wù)信息,在數(shù)據(jù)庫(kù)中存儲(chǔ),之后執(zhí)行任務(wù)信息裝載模塊裝入共享內(nèi)存。共享內(nèi)存數(shù)據(jù)準(zhǔn)備完畢,啟動(dòng)基礎(chǔ)框架、任務(wù)調(diào)度模塊、自我診斷,此后整個(gè)平臺(tái)進(jìn)入自我管理的運(yùn)行狀態(tài),周期性調(diào)度任務(wù)執(zhí)行。此時(shí)可以通過(guò)運(yùn)行監(jiān)控界面實(shí)時(shí)查看調(diào)度平臺(tái)運(yùn)行狀態(tài)。
[0089]圖中包含了三段共享內(nèi)存,一段是任務(wù)信息共享內(nèi)存,存放任務(wù)的配置及運(yùn)行信息,第二段是進(jìn)程管理共享內(nèi)存,用以存放進(jìn)程運(yùn)行時(shí)的管理信息,第三段是任務(wù)信息匯總共享內(nèi)存,存放匯總后的任務(wù)的配置及運(yùn)行信息。進(jìn)程管理共享內(nèi)存劃分為多個(gè)槽位,用以存放進(jìn)程的運(yùn)行信息,其中調(diào)度進(jìn)程自身占用一個(gè)槽位,每個(gè)被調(diào)度的任務(wù)占用一個(gè)槽位(任務(wù)結(jié)束后槽位釋放)。
[0090]平臺(tái)進(jìn)程啟動(dòng)時(shí)創(chuàng)建進(jìn)程管理共享內(nèi)存,之后通過(guò)口0?通信機(jī)制等待用戶操作指令、調(diào)度進(jìn)程或診斷進(jìn)程的通知。
[0091]所述用戶操作指令控制調(diào)度進(jìn)程的執(zhí)行與終止,或者查看整個(gè)平臺(tái)的運(yùn)行狀態(tài),聯(lián)機(jī)更新平臺(tái)的運(yùn)行參數(shù),也可以控制整個(gè)平臺(tái)的終止;
[0092]所述調(diào)度進(jìn)程的通知用以觸發(fā)任務(wù)進(jìn)程的執(zhí)行;
[0093]所述診斷進(jìn)程的通知用以觸發(fā)調(diào)度進(jìn)程重新啟動(dòng)。
[0094]平臺(tái)進(jìn)程作為調(diào)度進(jìn)程及每個(gè)任務(wù)進(jìn)程的父進(jìn)程。調(diào)度進(jìn)程執(zhí)行任務(wù)時(shí),自身并不創(chuàng)建子進(jìn)程,而是通知平臺(tái)進(jìn)程,由后者查找空閑槽位,并創(chuàng)建一個(gè)子進(jìn)程作為任務(wù)進(jìn)程。
[0095]自我診斷進(jìn)程作為一個(gè)增強(qiáng)模塊,用以監(jiān)控調(diào)度進(jìn)程及各個(gè)任務(wù)進(jìn)程的運(yùn)行狀態(tài),控制任務(wù)進(jìn)程的執(zhí)行時(shí)限,并重新啟動(dòng)異常終止的調(diào)度進(jìn)程。
[0096]如圖2所示,調(diào)度進(jìn)程后臺(tái)常駐執(zhí)行,間隔設(shè)定的睡眠周期持續(xù)運(yùn)行,每次執(zhí)行時(shí)一次性讀取任務(wù)信息共享內(nèi)存的全部?jī)?nèi)容,放入本地緩存。
[0097]然后循環(huán)處理本地緩存中的每個(gè)任務(wù):檢查每個(gè)任務(wù)的調(diào)度周期,判斷是否與當(dāng)前時(shí)間點(diǎn)吻合,對(duì)于需要調(diào)度執(zhí)行的任務(wù),綁定任務(wù)指定的優(yōu)先級(jí)之后放入調(diào)度隊(duì)列。
[0098]所有需要運(yùn)行的任務(wù)放入調(diào)度隊(duì)列之后,檢查是否存在空閑的管理槽位,如果管理槽位不足,暫停調(diào)度,短暫睡眠之后再次檢查空閑的管理槽位。管理槽位空閑時(shí),按照任務(wù)優(yōu)先級(jí)由高到低依次讀取隊(duì)列中需要執(zhí)行的任務(wù),通知平臺(tái)進(jìn)程增加一個(gè)相應(yīng)的任務(wù)子進(jìn)程,從而調(diào)動(dòng)任務(wù)執(zhí)行,調(diào)度進(jìn)程并不等待任務(wù)進(jìn)程執(zhí)行結(jié)束。實(shí)現(xiàn)任務(wù)并發(fā)的平滑控制及優(yōu)先級(jí)管理。
[0099]任務(wù)子進(jìn)程執(zhí)行時(shí),占用前面分配的管理槽位,記錄相關(guān)的運(yùn)行信息(任務(wù)編號(hào)、進(jìn)程10、用戶10、組10、執(zhí)行時(shí)間、執(zhí)行時(shí)限等)。
[0100]調(diào)度隊(duì)列中的任務(wù)全部處理完畢之后,調(diào)度進(jìn)程睡眠一個(gè)設(shè)定的時(shí)間周期,周而復(fù)始。
[0101]如圖3所示,自我診斷模塊運(yùn)行時(shí)讀取命令行指定的配置文件,獲取管理參數(shù)(如共享內(nèi)存10、睡眠間隔等),之后后臺(tái)常駐執(zhí)行,定期檢測(cè)各個(gè)進(jìn)程的運(yùn)行狀態(tài)。
[0102]為避免自我診斷模塊重復(fù)啟動(dòng)造成的混亂,程序啟動(dòng)后在一個(gè)文件(通常放置在八虹八皿目錄下)中記錄當(dāng)前進(jìn)程的進(jìn)程10,并對(duì)文件本身加鎖。重復(fù)啟動(dòng)的自我診斷模塊再次對(duì)同一個(gè)文件加鎖時(shí),因失敗退出。自我診斷模塊退出(無(wú)論正常或異常退出)時(shí),文件鎖自動(dòng)釋放。
[0103]因?yàn)檫M(jìn)程管理共享內(nèi)存的第一個(gè)槽位中記錄調(diào)度進(jìn)程的進(jìn)程10,自我診斷模塊可以據(jù)以判斷調(diào)度進(jìn)程存活與否,如果調(diào)度進(jìn)程異常終止,則予以重新啟動(dòng),確保整個(gè)調(diào)度工作持續(xù)穩(wěn)定運(yùn)行。
[0104]對(duì)于任務(wù)進(jìn)程,通常不檢查其存活與否,如果任務(wù)進(jìn)程異常終止,等待下一個(gè)調(diào)度周期再次調(diào)度執(zhí)行。避免因?yàn)槿蝿?wù)進(jìn)程的邏輯錯(cuò)誤而無(wú)休止的重復(fù)啟動(dòng)。
[0105]因?yàn)檫M(jìn)程管理共享內(nèi)存中記錄著每個(gè)進(jìn)程的執(zhí)行開(kāi)始時(shí)間、執(zhí)行時(shí)限信息,自我診斷模塊可以據(jù)以計(jì)算任務(wù)進(jìn)程的執(zhí)行持續(xù)時(shí)間,對(duì)于超過(guò)設(shè)定時(shí)限的任務(wù)進(jìn)程,強(qiáng)行殺死,避免任務(wù)進(jìn)程的無(wú)限期掛起,確保任務(wù)的執(zhí)行可控。
[0106]因?yàn)檎{(diào)度進(jìn)程需要持續(xù)不間斷運(yùn)行,不檢查其執(zhí)行時(shí)限。
[0107]如圖4所示,任務(wù)定義時(shí)添加主機(jī)信息,指定任務(wù)的歸屬主機(jī)。虛擬化環(huán)境中的每臺(tái)主機(jī)都可以加載自己的任務(wù)信息共享內(nèi)存,裝載自己管轄的任務(wù),并啟動(dòng)任務(wù)調(diào)度平臺(tái)調(diào)度任務(wù)周期執(zhí)行。
[0108]為簡(jiǎn)化運(yùn)行監(jiān)控,各個(gè)主機(jī)的任務(wù)狀態(tài)信息定期匯總以便集中查看任務(wù)的運(yùn)行狀態(tài)。
[0109]每臺(tái)執(zhí)行任務(wù)調(diào)度的主機(jī)運(yùn)行一個(gè)代理進(jìn)程,接受匯總進(jìn)程的請(qǐng)求并回復(fù)自己的任務(wù)信息共享內(nèi)存的全部數(shù)據(jù)。
[0110]任務(wù)匯總進(jìn)程定期執(zhí)行,逐一向每臺(tái)主機(jī)上的代理進(jìn)程索要各自的任務(wù)信息共享內(nèi)存數(shù)據(jù),放入本地緩存。全部信息索要完畢,一并裝入任務(wù)信息匯總共享內(nèi)存中,供運(yùn)行監(jiān)控界面查看使用,最后釋放本地緩存。
[0111]上述雖然結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】進(jìn)行了描述,但并非對(duì)本發(fā)明保護(hù)范圍的限制,所屬領(lǐng)域技術(shù)人員應(yīng)該明白,在本發(fā)明的技術(shù)方案的基礎(chǔ)上,本領(lǐng)域技術(shù)人員不需要付出創(chuàng)造性勞動(dòng)即可做出的各種修改或變形仍在本發(fā)明的保護(hù)范圍以內(nèi)。
【權(quán)利要求】
1.大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法,其特征是,包括如下步驟: 步驟(I):任務(wù)信息在數(shù)據(jù)庫(kù)中定義:在數(shù)據(jù)庫(kù)中集中定義虛擬化環(huán)境中的多個(gè)主機(jī)管轄的任務(wù)信息,所述任務(wù)信息包括任務(wù)的歸屬主機(jī)和任務(wù)的優(yōu)先級(jí)屬性; 步驟(2):數(shù)據(jù)庫(kù)任務(wù)信息裝載:按需執(zhí)行,從數(shù)據(jù)庫(kù)中提取任務(wù)信息并將提取出的任務(wù)信息裝入任務(wù)信息共享內(nèi)存; 步驟(3):基礎(chǔ)框架運(yùn)行:創(chuàng)建進(jìn)程管理共享內(nèi)存,搭建基礎(chǔ)平臺(tái)支撐上層調(diào)度進(jìn)程及任務(wù)進(jìn)程的運(yùn)行;調(diào)度進(jìn)程執(zhí)行任務(wù)時(shí),通知平臺(tái)進(jìn)程,由平臺(tái)進(jìn)程從進(jìn)程管理共享內(nèi)存中查找空閑的槽位,并創(chuàng)建一個(gè)子進(jìn)程作為任務(wù)進(jìn)程; 步驟(4):任務(wù)調(diào)度:負(fù)責(zé)調(diào)度各個(gè)任務(wù)的周期性運(yùn)行;定期從任務(wù)信息共享內(nèi)存中讀取任務(wù)的配置信息,檢測(cè)各個(gè)任務(wù)的調(diào)度周期,對(duì)于需要調(diào)度執(zhí)行的任務(wù),綁定任務(wù)指定的優(yōu)先級(jí)放入調(diào)度隊(duì)列;全部任務(wù)檢查完畢后,按照任務(wù)優(yōu)先級(jí)由高到低依次讀取隊(duì)列中需要執(zhí)行的任務(wù),通知平臺(tái)進(jìn)程增加一個(gè)相應(yīng)的任務(wù)進(jìn)程,觸發(fā)任務(wù)對(duì)應(yīng)的執(zhí)行程序的運(yùn)行,任務(wù)進(jìn)程執(zhí)行時(shí)記錄起止時(shí)間與執(zhí)行結(jié)果,調(diào)度進(jìn)程并不等待任務(wù)進(jìn)程執(zhí)行結(jié)束; 步驟(5):任務(wù)匯總:每臺(tái)執(zhí)行任務(wù)調(diào)度的主機(jī)運(yùn)行一個(gè)代理進(jìn)程;任務(wù)匯總進(jìn)程定期執(zhí)行,逐一向每臺(tái)主機(jī)上的代理進(jìn)程索要每臺(tái)主機(jī)的任務(wù)信息共享內(nèi)存的全部數(shù)據(jù),放入本地緩存;全部信息索要完畢后一并裝入任務(wù)信息匯總共享內(nèi)存中,最后釋放本地緩存;步驟¢):運(yùn)行監(jiān)控:從任務(wù)信息匯總共享內(nèi)存中提取任務(wù)配置數(shù)據(jù)及運(yùn)行信息,能夠?qū)崟r(shí)查看任務(wù)調(diào)度整體運(yùn)行信息以及每個(gè)任務(wù)的配置及運(yùn)行信息。
2.如權(quán)利要求1所述的大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法,其特征是,所述優(yōu)化方法還包括自我診斷步驟:后臺(tái)常駐執(zhí)行,實(shí)時(shí)檢測(cè)各個(gè)進(jìn)程的運(yùn)行狀態(tài),對(duì)于執(zhí)行持續(xù)時(shí)間超過(guò)設(shè)定時(shí)限的任務(wù)進(jìn)程,強(qiáng)行殺死,避免任務(wù)進(jìn)程的無(wú)限期掛起,確保任務(wù)的執(zhí)行可控;根據(jù)進(jìn)程管理共享內(nèi)存中記錄的每個(gè)任務(wù)進(jìn)程的進(jìn)程ID,判斷調(diào)度進(jìn)程存活與否,如果調(diào)度進(jìn)程異常終止則予以重新啟動(dòng),確保整個(gè)調(diào)度工作持續(xù)穩(wěn)定運(yùn)行。
3.如權(quán)利要求1所述的大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法,其特征是,所述步驟(I)的虛擬化環(huán)境中的每臺(tái)主機(jī)都能夠加載自己的任務(wù)信息共享內(nèi)存,裝載自己管轄的任務(wù),并啟動(dòng)任務(wù)調(diào)度周期執(zhí)行,從而實(shí)現(xiàn)任務(wù)調(diào)度的分布式執(zhí)行。
4.如權(quán)利要求1所述的大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法,其特征是,所述步驟⑶中: 所述平臺(tái)進(jìn)程通過(guò)UDP通信機(jī)制等待用戶操作指令、調(diào)度進(jìn)程或診斷進(jìn)程的通知,作為調(diào)度進(jìn)程及每個(gè)任務(wù)進(jìn)程的父進(jìn)程; 所述進(jìn)程管理共享內(nèi)存劃分為多個(gè)槽位,基礎(chǔ)框架之上運(yùn)行的每個(gè)進(jìn)程占用其中一個(gè)槽位,所述槽位用于存放任務(wù)編號(hào)、進(jìn)程ID、用戶ID、組ID、執(zhí)行時(shí)間和執(zhí)行時(shí)限信息,調(diào)度進(jìn)程固定占用第一個(gè)槽位。
5.如權(quán)利要求1所述的大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法,其特征是,所述步驟⑷的步驟為: 步驟(4-1):任務(wù)調(diào)度開(kāi)始,獲取當(dāng)前時(shí)間;對(duì)任務(wù)信息共享內(nèi)存加鎖,連接任務(wù)信息共享內(nèi)存;讀取任務(wù)信息共享內(nèi)存中全部數(shù)據(jù),放入本地緩存;對(duì)任務(wù)信息共享內(nèi)存解鎖,斷連任務(wù)信息共享內(nèi)存; 步驟(4-2):調(diào)度進(jìn)程循環(huán)處理本地緩存中的每個(gè)任務(wù):檢查每個(gè)任務(wù)的調(diào)度周期,對(duì)于需要調(diào)度執(zhí)行的任務(wù),綁定任務(wù)指定的優(yōu)先級(jí)之后,加入調(diào)度隊(duì)列; 步驟(4-3):判斷調(diào)度隊(duì)列中是否有任務(wù),如果是就進(jìn)入步驟(4-4);否則就睡眠一個(gè)設(shè)定周期后返回步驟(4-1); 步驟(4-4):判斷是否存在空閑槽位,如果存在空閑槽位,按照任務(wù)優(yōu)先級(jí)由高到低依次讀取隊(duì)列中需要執(zhí)行的任務(wù),通知平臺(tái)進(jìn)程增加一個(gè)相應(yīng)的任務(wù)子進(jìn)程,任務(wù)子進(jìn)程執(zhí)行時(shí),占用前面分配的管理槽位,記錄相關(guān)的運(yùn)行信息;所述運(yùn)行信息包括任務(wù)編號(hào)、進(jìn)程ID、用戶ID、組ID、執(zhí)行時(shí)間和執(zhí)行時(shí)限;調(diào)度隊(duì)列中的任務(wù)全部處理完畢之后,返回步驟(4-3);如果不存在空閑槽位,就暫停設(shè)定時(shí)間后返回步驟(4-4)。
6.如權(quán)利要求1所述的大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法,其特征是,所述步驟⑷中: 任務(wù)進(jìn)程啟動(dòng)后需要連接任務(wù)信息共享內(nèi)存,讀取額外配置參數(shù),運(yùn)行時(shí)需要修改任務(wù)的執(zhí)行狀態(tài)信息,所述任務(wù)的執(zhí)行狀態(tài)信息包括當(dāng)前狀態(tài)、開(kāi)始時(shí)間、結(jié)束時(shí)間和執(zhí)行結(jié)果O
7.如權(quán)利要求2所述的大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化方法,其特征是,所述自我診斷步驟為: 步驟(a-Ι):自我診斷進(jìn)程讀取配置文件,對(duì)鎖文件加鎖,并記錄進(jìn)程ID; 步驟(a-2):判斷加鎖是否失敗,如果是就結(jié)束,否則就進(jìn)入步驟(a-3); 步驟(a-3):自我診斷進(jìn)程連接進(jìn)程管理共享內(nèi)存; 步驟(a-4):判斷所有子進(jìn)程檢查是否完畢,如果是就斷連進(jìn)程管理共享內(nèi)存,睡眠一個(gè)周期后返回步驟(a-3);否則就對(duì)信號(hào)燈加鎖,讀取一個(gè)子進(jìn)程的相關(guān)信息,解鎖信號(hào)燈;進(jìn)入步驟(a-5); 步驟(a-5):判斷是否進(jìn)行異常終止檢測(cè),如果是就進(jìn)入步驟(a-6);否則就進(jìn)入步驟(a_7); 步驟(a-6):判斷子進(jìn)程是否異常終止,如果是就通知平臺(tái)進(jìn)程進(jìn)入步驟(a-4);否則就進(jìn)入步驟(a-7); 步驟(a-7):判斷是否進(jìn)行執(zhí)行時(shí)限檢測(cè),如果是就獲取當(dāng)前時(shí)間,計(jì)算子進(jìn)程運(yùn)行的持續(xù)時(shí)間,進(jìn)入步驟(a_8);否則就進(jìn)入步驟(a-4); 步驟(a-8):判斷持續(xù)時(shí)間是否超過(guò)設(shè)定時(shí)限,如果是就強(qiáng)行殺死子進(jìn)程,然后進(jìn)入步驟(a-4);否則就進(jìn)入步驟(a-4)。
8.大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化系統(tǒng),其特征是,包括: 任務(wù)信息在數(shù)據(jù)庫(kù)中定義模塊:在數(shù)據(jù)庫(kù)中集中定義虛擬化環(huán)境中的多個(gè)主機(jī)管轄的任務(wù)信息,所述任務(wù)信息包括任務(wù)的歸屬主機(jī)和任務(wù)的優(yōu)先級(jí)屬性; 數(shù)據(jù)庫(kù)任務(wù)信息裝載模塊:按需執(zhí)行,從數(shù)據(jù)庫(kù)中提取任務(wù)信息并將提取出的任務(wù)信息裝入任務(wù)信息共享內(nèi)存; 基礎(chǔ)框架運(yùn)行模塊:創(chuàng)建進(jìn)程管理共享內(nèi)存,搭建基礎(chǔ)平臺(tái)支撐上層調(diào)度進(jìn)程及任務(wù)進(jìn)程的運(yùn)行;調(diào)度進(jìn)程執(zhí)行任務(wù)時(shí),通知平臺(tái)進(jìn)程,由平臺(tái)進(jìn)程從進(jìn)程管理共享內(nèi)存中查找空閑的槽位,并創(chuàng)建一個(gè)子進(jìn)程作為任務(wù)進(jìn)程; 任務(wù)調(diào)度模塊:負(fù)責(zé)調(diào)度各個(gè)任務(wù)的周期性運(yùn)行;定期從任務(wù)信息共享內(nèi)存中讀取任務(wù)的配置信息,檢測(cè)各個(gè)任務(wù)的調(diào)度周期,對(duì)于需要調(diào)度執(zhí)行的任務(wù),綁定任務(wù)指定的優(yōu)先級(jí)放入調(diào)度隊(duì)列;全部任務(wù)檢查完畢后,按照任務(wù)優(yōu)先級(jí)由高到低依次讀取隊(duì)列中需要執(zhí)行的任務(wù),通知平臺(tái)進(jìn)程增加一個(gè)相應(yīng)的任務(wù)進(jìn)程,觸發(fā)任務(wù)對(duì)應(yīng)的執(zhí)行程序的運(yùn)行,任務(wù)進(jìn)程執(zhí)行時(shí)記錄起止時(shí)間與執(zhí)行結(jié)果,調(diào)度進(jìn)程并不等待任務(wù)進(jìn)程執(zhí)行結(jié)束; 任務(wù)匯總模塊:每臺(tái)執(zhí)行任務(wù)調(diào)度的主機(jī)運(yùn)行一個(gè)代理進(jìn)程;任務(wù)匯總進(jìn)程定期執(zhí)行,逐一向每臺(tái)主機(jī)上的代理進(jìn)程索要每臺(tái)主機(jī)的任務(wù)信息共享內(nèi)存的全部數(shù)據(jù),放入本地緩存;全部信息索要完畢后一并裝入任務(wù)信息匯總共享內(nèi)存中,最后釋放本地緩存;運(yùn)行監(jiān)控模塊:從任務(wù)信息匯總共享內(nèi)存中提取任務(wù)配置數(shù)據(jù)及運(yùn)行信息,能夠?qū)崟r(shí)查看任務(wù)調(diào)度整體運(yùn)行信息以及每個(gè)任務(wù)的配置及運(yùn)行信息。
9.如權(quán)利要求8所述大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化系統(tǒng),其特征是,所述優(yōu)化系統(tǒng)還包括自我診斷模塊:后臺(tái)常駐執(zhí)行,實(shí)時(shí)檢測(cè)各個(gè)進(jìn)程的運(yùn)行狀態(tài),對(duì)于執(zhí)行持續(xù)時(shí)間超過(guò)設(shè)定時(shí)限的任務(wù)進(jìn)程,強(qiáng)行殺死,避免任務(wù)進(jìn)程的無(wú)限期掛起,確保任務(wù)的執(zhí)行可控;根據(jù)進(jìn)程管理共享內(nèi)存中記錄的每個(gè)任務(wù)進(jìn)程的進(jìn)程ID,判斷調(diào)度進(jìn)程存活與否,如果調(diào)度進(jìn)程異常終止則予以重新啟動(dòng),確保整個(gè)調(diào)度工作持續(xù)穩(wěn)定運(yùn)行。
10.如權(quán)利要求8所述大規(guī)模虛擬化環(huán)境中任務(wù)調(diào)度的優(yōu)化系統(tǒng),其特征是,所述基礎(chǔ)框架運(yùn)行模塊中: 所述平臺(tái)進(jìn)程通過(guò)UDP通信機(jī)制等待用戶操作指令、調(diào)度進(jìn)程或診斷進(jìn)程的通知,作為調(diào)度進(jìn)程及每個(gè)任務(wù)進(jìn)程的父進(jìn)程; 所述進(jìn)程管理共享內(nèi)存劃分為多個(gè)槽位,基礎(chǔ)框架之上運(yùn)行的每個(gè)進(jìn)程占用其中一個(gè)槽位,所述槽位用于存放任務(wù)編號(hào)、進(jìn)程ID、用戶ID、組ID、執(zhí)行時(shí)間和執(zhí)行時(shí)限信息,調(diào)度進(jìn)程固定占用第一個(gè)槽位。
【文檔編號(hào)】G06F9/48GK104331327SQ201410722428
【公開(kāi)日】2015年2月4日 申請(qǐng)日期:2014年12月2日 優(yōu)先權(quán)日:2014年12月2日
【發(fā)明者】張從國(guó), 石磊, 王進(jìn), 程棟, 劉毅峰 申請(qǐng)人:山東乾云啟創(chuàng)信息科技有限公司