一種基于slurm調(diào)度的算法集成與評(píng)測(cè)平臺(tái)及方法
【專利摘要】本發(fā)明公開了一種基于SLURM調(diào)度的算法集成與評(píng)測(cè)平臺(tái)及方法,該平臺(tái)包括封裝模塊、調(diào)度接口模塊、上傳下載模塊、編譯模塊、算法集成模塊及算法性能統(tǒng)計(jì)模塊。在SLURM中心守護(hù)進(jìn)程和監(jiān)控進(jìn)程運(yùn)行過程中,利用該平臺(tái)用戶可動(dòng)態(tài)的進(jìn)行調(diào)度方法集成。當(dāng)用戶使用該平臺(tái)的時(shí)候,只需要了解平臺(tái)封裝模塊下提供的公共變量、結(jié)構(gòu)體以及基礎(chǔ)函數(shù)庫(kù)文件,實(shí)現(xiàn)平臺(tái)對(duì)外的兩個(gè)子函數(shù)接口網(wǎng)上提交至服務(wù)器即可,無需關(guān)心該軟件其它部分的源碼以及平臺(tái)中各個(gè)模塊的協(xié)作關(guān)系,使SLURM開發(fā)人員或者高性能計(jì)算用戶更方便的集成各自的調(diào)度算法而忽略對(duì)該軟件其它模塊源碼的研究,在真實(shí)的環(huán)境下檢測(cè)算法的性能、靈活運(yùn)用各種調(diào)度算法。
【專利說明】 一種基于SLURM調(diào)度的算法集成與評(píng)測(cè)平臺(tái)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于SLURM調(diào)度的算法集成與評(píng)測(cè)平臺(tái)及方法。
【背景技術(shù)】
[0002]SLURM是一個(gè)針對(duì)不同大小Linux集群的資源管理和調(diào)度軟件。它主要提供三個(gè)方面的功能:首先,它為用戶提供了一種以獨(dú)占或者非獨(dú)占的方式使用計(jì)算資源一定時(shí)間的機(jī)制,用以在相應(yīng)的時(shí)間內(nèi)為用戶運(yùn)行作業(yè);其次,它提供了一套啟動(dòng)、執(zhí)行及監(jiān)控分配在計(jì)算節(jié)點(diǎn)上作業(yè)的框架,主要是方便用戶實(shí)時(shí)的了解提交作業(yè)的運(yùn)行情況;最后,它實(shí)現(xiàn)了對(duì)排隊(duì)作業(yè)資源競(jìng)爭(zhēng)的管理。
[0003]SLURM是非常模塊化的設(shè)計(jì),包括數(shù)十個(gè)可選的插件。它最簡(jiǎn)單的配置中,可以在幾分鐘之內(nèi)安裝完成,而更復(fù)雜的配置可以依賴于以MySQL等數(shù)據(jù)庫(kù)來對(duì)作業(yè)記錄、作業(yè)管理以及資源限制條件進(jìn)行歸檔,同時(shí),它還支持更復(fù)雜的作業(yè)優(yōu)先權(quán)調(diào)度算法。目前,世界上已經(jīng)有很多的超算機(jī)構(gòu)使用SLURM來對(duì)資源和作業(yè)進(jìn)行管理,其中著名的有Tianhe-1A、TeralOO、Dawn、Rosa、EKA等??偟膩碚f,SLURM主要包括資源管理模塊和作業(yè)調(diào)度模塊。
[0004]資源管理模塊主要負(fù)責(zé)對(duì)系統(tǒng)資源進(jìn)行管理、分配和收集,在主控制節(jié)點(diǎn)上會(huì)有中心守護(hù)進(jìn)程(slurmctld)駐留,而在計(jì)算節(jié)點(diǎn)上會(huì)有監(jiān)控進(jìn)程(slurmd)駐留。slurmd調(diào)用相應(yīng)的資源收集信息函數(shù),收集本地資源信息。初始時(shí),次節(jié)點(diǎn)守護(hù)進(jìn)程向中心守護(hù)進(jìn)程發(fā)送信息注冊(cè),之后主控進(jìn)程(slurmctld)定期的向次節(jié)點(diǎn)進(jìn)行詢問以便了解整個(gè)系統(tǒng)的情況。
[0005]作業(yè)調(diào)度模塊則根據(jù)系統(tǒng)資源的當(dāng)前狀況對(duì)作業(yè)隊(duì)列進(jìn)行調(diào)度,而調(diào)度方法主要采用插件的機(jī)制進(jìn)行集成。作業(yè)調(diào)度模塊可以動(dòng)態(tài)的根據(jù)資源管理模塊提供的當(dāng)前資源狀態(tài)信息,如License使用情況、處理器負(fù)載、應(yīng)用系統(tǒng)負(fù)載等信息,用一種或多種調(diào)度算法決定將作業(yè)分發(fā)到哪個(gè)節(jié)點(diǎn)上進(jìn)行計(jì)算。作業(yè)調(diào)度模塊主要分為兩部分,一是對(duì)作業(yè)隊(duì)列進(jìn)行調(diào)度,即如何選擇作業(yè)隊(duì)列中的作業(yè);二是將選擇的作業(yè)分發(fā)到合適的計(jì)算節(jié)點(diǎn),以便充分利用資源的同時(shí)又能提高作業(yè)的運(yùn)行效率。因此,如何使該軟件的調(diào)度模塊具有更強(qiáng)的靈活性,豐富該模塊的算法是一個(gè)很重要的問題。
[0006]現(xiàn)有的SLURM調(diào)度模塊插件機(jī)制雖然有一定的靈活性,但也有諸多不足:
[0007]一方面,軟件開發(fā)人員或者用戶在對(duì)SLURM軟件的調(diào)度模塊中集成自己的算法時(shí)需要做很多與該模塊相關(guān)的工作。如,需要剖析與該模塊相關(guān)的其它模塊的源碼、分析該模塊在SLURM總體架構(gòu)中的位置、從現(xiàn)有的SLURM軟件中提取出公共的結(jié)構(gòu)體和重要的全局變量等。對(duì)于熟悉該軟件的開發(fā)人員來說可能不是一件很難的事,然而,對(duì)于普通的應(yīng)用SLURM軟件的人員來說就不方便集成自己的算法,極大的限制了相關(guān)人員集成算法的想法。
[0008]另一方面,原有的插件機(jī)制雖然很靈活,但也需要剖析該軟件的源碼,將方法靜態(tài)的加入該軟件中。不能動(dòng)態(tài)的使用相關(guān)的其它調(diào)度算法,也不能測(cè)試算法的性能。在一定程度上難以豐富該模塊中的算法,也難以對(duì)相關(guān)的調(diào)度算法在真實(shí)的環(huán)境中的性能進(jìn)行評(píng)測(cè)和比較。
[0009]總的來說,對(duì)于只想應(yīng)用SLURM軟件的用戶來說,在模塊中集成自己的算法或在真實(shí)的環(huán)境下評(píng)測(cè)自己調(diào)度算法的性能使用不便。
【發(fā)明內(nèi)容】
[0010]本發(fā)明提供了一種基于SLURM調(diào)度的算法集成與評(píng)測(cè)平臺(tái)及方法,其目的在于克服現(xiàn)有技術(shù)中,使用采用該SLURM軟件集成算法時(shí)不方便,無法直接對(duì)算法進(jìn)行性能檢測(cè)的問題。
[0011]一種基于SLURM調(diào)度的算法集成與評(píng)測(cè)平臺(tái),包括封裝模塊、上傳下載模塊、調(diào)度接口模塊、編譯模塊、算法集成模塊及算法性能統(tǒng)計(jì)模塊;
[0012]所述的算法集成與評(píng)測(cè)平臺(tái)運(yùn)行在計(jì)算機(jī)集群環(huán)境中,所述計(jì)算機(jī)集群是指包含多臺(tái)裝有Linux操作系統(tǒng)且安裝有SLURM軟件的計(jì)算機(jī);
[0013]所述上傳下載模塊,用于將平臺(tái)使用者自行編寫的子函數(shù)接口源碼文件上傳至服務(wù)器;以及用于使用者從服務(wù)器下載封裝模塊;
[0014]所述服務(wù)器是指計(jì)算機(jī)集群中的一臺(tái)計(jì)算機(jī);
[0015]所述封裝模塊是指封裝好的頭文件或動(dòng)態(tài)鏈接庫(kù)文件;
[0016]所述調(diào)度接口模塊,包括兩部分:第一部分是該平臺(tái)設(shè)計(jì)者對(duì)調(diào)度API接口定義的編碼框架模版文件;第二部分是調(diào)度接口文件整合程序;
[0017]所述調(diào)度接口文件整合程序的作用是利用Linux的sed指令將編碼框架模板文件中的算法名稱更改為使用者指定的名稱,形成新的調(diào)度文件;以及利用Linux的cat指令將形成的新的調(diào)度文件與使用者上傳的源碼文件進(jìn)行融合,形成完整的調(diào)度API接口文件;
[0018]當(dāng)平臺(tái)使用者上傳源碼文件后,運(yùn)行調(diào)度接口文件整合程序,自動(dòng)將新的調(diào)度文件和源碼文件的內(nèi)容整合成完整的調(diào)度API接口文件;
[0019]所述編譯模塊,用于編譯上傳至服務(wù)器后經(jīng)調(diào)度接口整合程序整合后的源碼文件以生成可執(zhí)行文件并存儲(chǔ)到設(shè)定的服務(wù)器設(shè)定的文件夾下;
[0020]所述算法集成模塊,在Linux服務(wù)器上運(yùn)行一個(gè)算法集成腳本文件,該腳本文件將生成的新的可執(zhí)行文件分發(fā)到集群的各個(gè)節(jié)點(diǎn),同時(shí)在各個(gè)節(jié)點(diǎn)上重新啟動(dòng)調(diào)度進(jìn)程;
[0021]所述算法集成腳本文件的功能是:首先從SLURM集群配置文件slurm.conf中讀取集群中各個(gè)節(jié)點(diǎn)的主機(jī)名和IP信息,接著將編譯模塊生成的可執(zhí)行文件通過Linux的scp指令按照讀取的IP信息復(fù)制到集群中的各個(gè)節(jié)點(diǎn),最后利用Linux下的ssh指令重啟各個(gè)節(jié)點(diǎn)的調(diào)度進(jìn)程;
[0022]所述算法性能統(tǒng)計(jì)模塊的作用是:在中心控制進(jìn)程設(shè)置兩個(gè)計(jì)數(shù)器,分別記錄單位時(shí)間內(nèi)作業(yè)的到達(dá)數(shù)目和單位時(shí)間內(nèi)作業(yè)的完成數(shù)目;利用slurm已有的指令sacct查看各個(gè)作業(yè)的起止執(zhí)行時(shí)間,各個(gè)作業(yè)運(yùn)行分配的節(jié)點(diǎn)以及cpu的利用率,以及cpu的實(shí)時(shí)溫度,完成算法的調(diào)度性能指標(biāo)的統(tǒng)計(jì)。
[0023]所述封裝好的頭文件中包括slurm源碼中的全局變量List job_list、List part_list 及 int32_t bitstr_t ;slurm 源碼中的結(jié)構(gòu)體 struct job_record> struct job_details、struct list、struct listIterator>struct part_record及struct job_queue_rec,以及這六個(gè)結(jié)構(gòu)體的子結(jié)構(gòu)體;[0024]所述封裝好的動(dòng)態(tài)鏈接庫(kù)包括SLURM源碼中的三類函數(shù):1)函數(shù)名當(dāng)中帶有字符串list的函數(shù);2)函數(shù)的參數(shù)當(dāng)中帶有struct job_record或bitstr_t字段的函數(shù);3)函數(shù)名當(dāng)中帶有字段job_record或part_record的函數(shù)。
[0025]還包括顯示模塊,所述封裝模塊、上傳下載模塊、調(diào)度接口模塊、編譯模塊、算法集成模塊及算法性能統(tǒng)計(jì)模塊均與顯示模塊相連,用于設(shè)計(jì)者與平臺(tái)各模塊之間進(jìn)行GUI交互。
[0026]一種基于SLURM調(diào)度的算法集成與評(píng)測(cè)方法,采用上述的基于SLURM調(diào)度的算法集成與評(píng)測(cè)平臺(tái),所述方法包括以下步驟:
[0027]步驟1:平臺(tái)使用者從計(jì)算機(jī)集群中下載所需的封裝好的頭文件和動(dòng)態(tài)鏈接庫(kù)文件;
[0028]步驟2:利用步驟I獲得的頭文件和動(dòng)態(tài)鏈接庫(kù)文件完成作業(yè)排序函數(shù)sort_job_queue3()和預(yù)調(diào)度函數(shù)_try_SChedO的源碼文件的編寫,并調(diào)用上傳下載模塊將寫好的源碼文件上傳至服務(wù)器;
[0029]所述作業(yè)排序函數(shù),是對(duì)作業(yè)隊(duì)列中的作業(yè)進(jìn)行排序,即指定作業(yè)調(diào)度的次序;
[0030]所述預(yù)調(diào)度函數(shù)是獲得運(yùn)行每個(gè)作業(yè)的節(jié)點(diǎn)名,即計(jì)算機(jī)名;
[0031]步驟3:平臺(tái)的調(diào)度接口文件整合程序?qū)⑸蟼鞯脑创a和已經(jīng)存在的模版文件整合形成完整的調(diào)度API源碼文件;
[0032]步驟4:所述編譯模塊對(duì)步驟3得到的調(diào)度API源碼進(jìn)行編譯形成新的可執(zhí)行文件,并利用算法集成模塊將新的可執(zhí)行文件分發(fā)到集群的各個(gè)節(jié)點(diǎn),然后重啟調(diào)度程序;
[0033]步驟5:算法性能統(tǒng)計(jì)模塊中的測(cè)試程序統(tǒng)計(jì)算法的調(diào)度性能指標(biāo),調(diào)度性能指標(biāo)包括單位時(shí)間內(nèi)作業(yè)的到達(dá)數(shù)目和單位時(shí)間內(nèi)作業(yè)的完成數(shù)目;各個(gè)作業(yè)的起止執(zhí)行時(shí)間,各個(gè)作業(yè)運(yùn)行分配的節(jié)點(diǎn)以及CPU的實(shí)時(shí)利用率,以及cpu的實(shí)時(shí)溫度。
[0034]有益效果
[0035]與傳統(tǒng)僅有的插件機(jī)制相比,集成平臺(tái)及評(píng)測(cè)方法增強(qiáng)了調(diào)度方法集成的靈活性。在該平臺(tái)下,不僅SLURM軟件的開發(fā)人員可以方便的集成算法,而且對(duì)于只想使用SLURM而不想剖析該軟件其它模塊源碼的普通用戶也很方便。另一方面,該平臺(tái)包括在線編譯模塊,用戶將調(diào)度算法API實(shí)現(xiàn)后只需提交源碼,系統(tǒng)將自動(dòng)的對(duì)源碼進(jìn)行評(píng)測(cè)、編譯、生成可執(zhí)行文件。通過平臺(tái)的集成模塊將生成的可執(zhí)行文件發(fā)送到Linux集群的各個(gè)計(jì)算節(jié)點(diǎn),在真實(shí)的環(huán)境下運(yùn)用新增的調(diào)度算法。與此同時(shí),還可對(duì)算法的性能進(jìn)行評(píng)測(cè),在豐富調(diào)度模塊的同時(shí)又可對(duì)相關(guān)的算法進(jìn)行對(duì)比。
[0036]該平臺(tái)提供的封裝模塊,封裝有全局變量、結(jié)構(gòu)體以及3類函數(shù),以庫(kù)的形式提供給使用者。這些庫(kù)的提供,一方面能方便使用者了解SLURM軟件現(xiàn)有的基礎(chǔ);另一方面也為使用者實(shí)現(xiàn)調(diào)度算法API時(shí)提供了一定的幫助。
[0037]平臺(tái)提供的用戶需要實(shí)現(xiàn)的調(diào)度算法API接口的兩個(gè)子函數(shù)接口,使用者可以在只了解封裝模塊的基礎(chǔ)上實(shí)現(xiàn)這兩個(gè)子函數(shù),而不需要剖析其它SLURM源碼(如,資源管理模塊的源碼)。子函數(shù)接口部分就是使用者自己的算法思想實(shí)現(xiàn)部分,在實(shí)現(xiàn)過程中使用者可以使用封裝模塊中已有的全局變量,如全局任務(wù)隊(duì)列指針、全局分區(qū)隊(duì)列指針、全局節(jié)點(diǎn)隊(duì)列指針等,也可使用封裝模塊中的函數(shù)如List的創(chuàng)建、List迭代器使用等等。
[0038]平臺(tái)提供的在線評(píng)測(cè)模塊,可以及時(shí)方便的對(duì)用戶的調(diào)度方法進(jìn)行集成。在用戶初始提交的源碼檢測(cè)通過后,平臺(tái)對(duì)源碼進(jìn)行編譯生成可執(zhí)行文件,然后,通過該平臺(tái)的集成模塊將生成的可執(zhí)行文件分發(fā)到集群的各個(gè)節(jié)點(diǎn)。在真實(shí)的環(huán)境下運(yùn)用用戶新增的調(diào)度算法,同時(shí)檢測(cè)算法的調(diào)度性能。
[0039]通過上述的算法集成與評(píng)測(cè)平臺(tái),可以極大的簡(jiǎn)化集成調(diào)度算法的難度,同時(shí)又可豐富調(diào)度模塊的性能。
【專利附圖】
【附圖說明】
[0040]圖1為算法集成評(píng)測(cè)平臺(tái)架構(gòu)圖;
[0041]圖2為SLURM現(xiàn)有功能圖;
[0042]圖3為修改的調(diào)度模塊對(duì)比圖;
[0043]圖4為SLURM集群及Web服務(wù)器圖;
[0044]圖5為使用者具體交互展示圖;
[0045]圖6為上傳下載流程圖。
【具體實(shí)施方式】
[0046]下面將結(jié)合附圖和實(shí)施例對(duì)本發(fā)明做進(jìn)一步的說明。
[0047]一種基于SLURM調(diào)度的算法集成與評(píng)測(cè)平臺(tái),包括封裝模塊、上傳下載模塊、調(diào)度接口模塊、編譯模塊、算法集成模塊及算法性能統(tǒng)計(jì)模塊;如圖1所示:
[0048]所述的算法集成與評(píng)測(cè)平臺(tái)運(yùn)行在計(jì)算機(jī)集群環(huán)境中,所述計(jì)算機(jī)集群是指包含多臺(tái)裝有Linux操作系統(tǒng)且安裝有SLURM軟件的計(jì)算機(jī);
[0049]所述封裝模塊,用于該平臺(tái)使用者編寫調(diào)度API接口時(shí)從SLURM源碼中選用的全局變量及結(jié)構(gòu)體封裝成頭文件,而將部分函數(shù)封裝成動(dòng)態(tài)鏈接庫(kù);
[0050](I)封裝模塊中的頭文件,包括SLURM源碼中的全局變量List job_list、Listpart_list 及 int32_t bitstr_t ;slurm源石馬中的結(jié)構(gòu)體 struct job_record>struct job_details、struct list、struct listIterator>struct part_record及struct job_queue_rec,以及這六個(gè)結(jié)構(gòu)體的子結(jié)構(gòu)體;
[0051](2)封裝模塊中的動(dòng)態(tài)鏈接庫(kù)文件,包括SLURM源碼中的三類函數(shù):1)函數(shù)名當(dāng)中帶有字符串list的函數(shù);2)函數(shù)的參數(shù)當(dāng)中帶有struct job_record或bitstr_t字段的函數(shù);3)函數(shù)名當(dāng)中帶有字段job_record或part_record的函數(shù)。
[0052]如圖2所示,SLURM主要包括調(diào)度模塊和資源管理模塊,在使用者實(shí)現(xiàn)自己的調(diào)度算法時(shí)不需要看資源管理模塊(如,節(jié)點(diǎn)管理、作業(yè)管理、分區(qū)管理)的源碼,也不需要看調(diào)度模塊與資源管理模塊銜接部分的源碼,而只需要了解平臺(tái)的封裝模塊,從而極大的簡(jiǎn)化了使用者集成算法時(shí)所要看的源碼量,也減少了使用者集成算法時(shí)要編寫的源碼量。
[0053]所述調(diào)度接口模塊,包括兩部分:第一部分是該平臺(tái)設(shè)計(jì)者對(duì)調(diào)度API接口定義的編碼框架模版文件;第二部分是調(diào)度接口文件整合程序;
[0054](I)調(diào)度API接口的固有編碼框架部分,定義的調(diào)度API接口編碼框架模版文件包括template, h、template, c,這兩個(gè)文件存放在服務(wù)器目錄/TemplateSource/下:
[0055]template, h 包含三個(gè)函數(shù) extern void氺template—agent (void氺args) ;externvoid stop_template_agent (void) ;extern void template_reconfig (void)的聲明,其中最關(guān)鍵的是template_agent()函數(shù),它周期性的調(diào)用template, c中實(shí)現(xiàn)的具體調(diào)度函數(shù)_attempt_algorithm(void),用來將作業(yè)分派到某些具體的計(jì)算節(jié)點(diǎn)并執(zhí)行。該模版文件的代碼如下template, h所示。
[0056]temp_agent ():中文名稱:調(diào)度算法代理函數(shù),里面主要是包括一個(gè)while循環(huán),用來周期性的調(diào)用調(diào)度算法。stop_template_agent():中文名稱:終止調(diào)度算法代理函數(shù),里面只有一條語句stop_template=true,即如果要終止調(diào)度算法則將stop_template的值設(shè)為真。template_reconfig():中文名稱:重配置函數(shù),里面只有一條語句config_flag=true,即如果發(fā)現(xiàn)配置文件slurm.conf已經(jīng)修改,則調(diào)用該函數(shù),即將config_flag值設(shè)為真。
[0057]template_reconfig()(中文名稱:重配置函數(shù))函數(shù)主要是用來重置監(jiān)控配置文件修改變量的值。里面只有一句代碼config_flag=true;如果進(jìn)程發(fā)現(xiàn)配置文件slurm.conf已經(jīng)修改,則調(diào)用該函數(shù),即設(shè)置變量conf ig_f lag值為真;
[0058]stop_template_agent O (中文名稱:終止調(diào)度算法代理函數(shù)),該函數(shù)功能與template_reconf ig 類似,也是重新設(shè)置變量 stop_template 的值(stop_template=true),在設(shè)置該值之前需要申請(qǐng)資源鎖。它主要是用來終止template_agent()函數(shù)。
[0059]template_agent()函數(shù)(中文名稱:調(diào)度算法代理函數(shù))主要是周期性的調(diào)用即將介紹的調(diào)度算法函數(shù)_attempt_algorithm(void),該函數(shù)首先會(huì)重讀配置文件slurm.conf,然后檢查當(dāng)前的時(shí)間now與上一次調(diào)度時(shí)的時(shí)間last_template_time的差值wait_time (wait_time=difftime (now, last_template_time))是否小于 template_interval (可以理解成調(diào)度區(qū)間)。如果小于這個(gè)值則該函數(shù)調(diào)用休眠函數(shù)sleepO等待一定的時(shí)間,否則,調(diào)用調(diào)度算法函數(shù)int_attempt_algorithm(void)。其中,關(guān)鍵性的代碼就是一個(gè)while循環(huán),即while (_attempt_algorithm());調(diào)用該函數(shù)直到調(diào)度算法函數(shù)_attempt_algorithm O返回成功為止。如此周期性的循環(huán)就構(gòu)成了該調(diào)度算法代理函數(shù)框架。
[0060]template, c文件包含了 template, h中三個(gè)函數(shù)的實(shí)現(xiàn),這三個(gè)函數(shù)都有固定的編碼模式。除此之外,template, c文件中還包括一個(gè)函數(shù)的實(shí)現(xiàn)調(diào)度算法函數(shù)int_attempt_algorithm(void),如上所述這個(gè)函數(shù)被調(diào)度算法代理函數(shù)template—agent (void*args)周期性的調(diào)用。實(shí)現(xiàn)的int_attempt_algorithm(void)是設(shè)計(jì)者根據(jù)多個(gè)現(xiàn)有的SLURM調(diào)度方法總結(jié)抽象出的通用編碼部分的編碼模式,其關(guān)鍵性的代碼編寫框架如下所示:
[0061]
【權(quán)利要求】
1.一種基于SLURM調(diào)度的算法集成與評(píng)測(cè)平臺(tái),其特征在于,包括封裝模塊、上傳下載模塊、調(diào)度接口模塊、編譯模塊、算法集成模塊及算法性能統(tǒng)計(jì)模塊; 所述的算法集成與評(píng)測(cè)平臺(tái)運(yùn)行在計(jì)算機(jī)集群環(huán)境中,所述計(jì)算機(jī)集群是指包含多臺(tái)裝有Linux操作系統(tǒng)且安裝有SLURM軟件的計(jì)算機(jī); 所述上傳下載模塊,用于將平臺(tái)使用者自行編寫的子函數(shù)接口源碼文件上傳至服務(wù)器;以及用于使用者從服務(wù)器下載封裝模塊; 所述服務(wù)器是指計(jì)算機(jī)集群中的一臺(tái)計(jì)算機(jī); 所述封裝模塊是指封裝好的頭文件或動(dòng)態(tài)鏈接庫(kù)文件; 所述調(diào)度接口模塊,包括兩部分:第一部分是該平臺(tái)設(shè)計(jì)者對(duì)調(diào)度API接口定義的編碼框架模版文件;第二部分是調(diào)度接口文件整合程序; 所述調(diào)度接口文件整合程序的作用是利用Linux的sed指令將編碼框架模板文件中的算法名稱更改為使用者指定的名稱,形成新的調(diào)度文件;以及利用Linux的cat指令將形成的新的調(diào)度文件與使用者上傳的源碼文件進(jìn)行融合,形成完整的調(diào)度API接口文件; 當(dāng)平臺(tái)使用者上傳源碼文件后,運(yùn)行調(diào)度接口文件整合程序,自動(dòng)將新的調(diào)度文件和源碼文件的內(nèi)容整合成完整的調(diào)度API接口文件; 所述編譯模塊,用于編譯上傳至服務(wù)器后經(jīng)調(diào)度接口整合程序整合后的源碼文件以生成可執(zhí)行文件并存儲(chǔ)到設(shè)定的服務(wù)器設(shè)定的文件夾下; 所述算法集成模塊,在Linux服務(wù)器上運(yùn)行一個(gè)算法集成腳本文件,該腳本文件將生成的新的可執(zhí)行文件分發(fā)到集群的各個(gè)節(jié)點(diǎn),同時(shí)在各個(gè)節(jié)點(diǎn)上重新啟動(dòng)調(diào)度進(jìn)程; 所述算法集成腳本文件的功能是:首先從SLURM集群配置文件slurm.conf中讀取集群中各個(gè)節(jié)點(diǎn)的主機(jī)名和IP信息,接著將編譯模塊生成的可執(zhí)行文件通過Linux的scp指令按照讀取的IP信息復(fù)制到集群中的各個(gè)節(jié)點(diǎn),最后利用Linux下的ssh指令重啟各個(gè)節(jié)點(diǎn)的調(diào)度進(jìn)程; 所述算法性能統(tǒng)計(jì)模塊的作用是:在中心控制進(jìn)程設(shè)置兩個(gè)計(jì)數(shù)器,分別記錄單位時(shí)間內(nèi)作業(yè)的到達(dá)數(shù)目和單位時(shí)間內(nèi)作業(yè)的完成數(shù)目;利用slurm已有的指令sacct查看各個(gè)作業(yè)的起止執(zhí)行時(shí)間,各個(gè)作業(yè)運(yùn)行分配的節(jié)點(diǎn)以及cpu的利用率,以及cpu的實(shí)時(shí)溫度,完成算法的調(diào)度性能指標(biāo)的統(tǒng)計(jì)。
2.根據(jù)權(quán)利要求1所述的基于SLURM調(diào)度的算法集成與評(píng)測(cè)平臺(tái),其特征在于,所述封裝好的頭文件中包括slurm源碼中的全局變量List job_list、List part_list及int32_tbitstr_t ;slurm源石馬中的結(jié)構(gòu)體struct job_record>struct job_details>struct list、struct listIterator、struct part_record及struct job_queue_rec,以及這六個(gè)結(jié)構(gòu)體的子結(jié)構(gòu)體; 所述封裝好的動(dòng)態(tài)鏈接庫(kù)包括SLURM源碼中的三類函數(shù):1)函數(shù)名當(dāng)中帶有字符串list的函數(shù);2)函數(shù)的參數(shù)當(dāng)中帶有struct job_record或bitstr_t字段的函數(shù);3)函數(shù)名當(dāng)中帶有字段job_record或part_record的函數(shù)。
3.根據(jù)權(quán)利要求1所述的基 于SLURM軟件調(diào)度模塊的算法集成與評(píng)測(cè)平臺(tái),其特征在于,還包括顯示模塊,所述封裝模塊、上傳下載模塊、調(diào)度接口模塊、編譯模塊、算法集成模塊及算法性能統(tǒng)計(jì)模塊均與顯示模塊相連,用于設(shè)計(jì)者與平臺(tái)各模塊之間進(jìn)行GUI交互。
4.一種基于SLURM調(diào)度的算法集成與評(píng)測(cè)方法,其特征在于,采用權(quán)利要求1-3所述的基于SLURM調(diào)度的算法集成與評(píng)測(cè)平臺(tái),所述方法包括以下步驟: 步驟1:平臺(tái)使用者從計(jì)算機(jī)集群中下載所需的封裝好的頭文件和動(dòng)態(tài)鏈接庫(kù)文件;步驟2:利用步驟I獲得的頭文件和動(dòng)態(tài)鏈接庫(kù)文件完成作業(yè)排序函數(shù)sort_job_queue3()和預(yù)調(diào)度函數(shù)_try_SChedO的源碼文件的編寫,并調(diào)用上傳下載模塊將寫好的源碼文件上傳至服務(wù)器; 步驟3:平臺(tái)的調(diào)度接口文件整合程序?qū)⑸蟼鞯脑创a和已經(jīng)存在的模版文件整合形成完整的調(diào)度API源碼文件; 步驟4:所述編譯模塊對(duì)步驟3得到的調(diào)度API源碼進(jìn)行編譯形成新的可執(zhí)行文件,并利用算法集成模塊將新的可執(zhí)行文件分發(fā)到集群的各個(gè)節(jié)點(diǎn),然后重啟調(diào)度程序; 步驟5:算法性能統(tǒng)計(jì)模塊中的測(cè)試程序統(tǒng)計(jì)算法的調(diào)度性能指標(biāo),調(diào)度性能指標(biāo)包括單位時(shí)間內(nèi)作業(yè)的到達(dá)數(shù)目和單位時(shí)間內(nèi)作業(yè)的完成數(shù)目;各個(gè)作業(yè)的起止執(zhí)行時(shí)間,各個(gè)作業(yè)運(yùn)行分配的節(jié) 點(diǎn)以及cpu的實(shí)時(shí)利用率,以及cpu的實(shí)時(shí)溫度。
【文檔編號(hào)】G06F9/44GK103593192SQ201310585227
【公開日】2014年2月19日 申請(qǐng)日期:2013年11月19日 優(yōu)先權(quán)日:2013年11月19日
【發(fā)明者】李肯立, 劉楚波, 徐雨明 申請(qǐng)人:湖南大學(xué)