System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內(nèi)的位置。 參數(shù)名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術(shù)實(shí)現(xiàn)步驟摘要】
本專利技術(shù)屬于操作系統(tǒng),具體涉及一種針對(duì)numa架構(gòu)下direct?io密集型任務(wù)的調(diào)度方法及系統(tǒng)。
技術(shù)介紹
1、目前,linux系統(tǒng)大多采用cfs調(diào)度器(公平調(diào)度器)作為默認(rèn)的任務(wù)調(diào)度方式。cfs以其公平性和高效性著稱,通過引入虛擬時(shí)間的概念,確保所有任務(wù)都能獲得相對(duì)公平的系統(tǒng)資源分配。
2、然而,cfs雖然能夠滿足大部分應(yīng)用場(chǎng)景的性能需求,但在面對(duì)一些特殊場(chǎng)景時(shí),其調(diào)度策略顯得力不從心。特別是當(dāng)numa架構(gòu)下的linux系統(tǒng)中存在大量direct?io密集型任務(wù)時(shí),cfs的調(diào)度效果并不理想。該類任務(wù)通常涉及大量的數(shù)據(jù)讀寫操作,這些操作往往需要等待外部設(shè)備(如硬盤)的響應(yīng),因此會(huì)消耗大量的等待時(shí)間。在numa架構(gòu)下,由于內(nèi)存訪問的非均勻性,該類任務(wù)可能會(huì)因?yàn)榈却龜?shù)據(jù)從遠(yuǎn)程內(nèi)存節(jié)點(diǎn)傳輸?shù)奖镜睾诵亩M(jìn)一步延長執(zhí)行時(shí)間,從而降低系統(tǒng)的整體性能。
3、此外,cfs的調(diào)度策略是固定的,無法根據(jù)任務(wù)類型的不同進(jìn)行調(diào)整。這意味著,在direct?io密集型任務(wù)占主導(dǎo)的應(yīng)用場(chǎng)景中,cfs無法提供針對(duì)性的調(diào)度方法,從而無法充分發(fā)揮numa架構(gòu)的潛力。因此,需要一種針對(duì)該類應(yīng)用場(chǎng)景的高效調(diào)度方法,提高該類應(yīng)用場(chǎng)景的性能。
技術(shù)實(shí)現(xiàn)思路
1、本專利技術(shù)的目的在于提供一種針對(duì)numa架構(gòu)下direct?io密集型任務(wù)的調(diào)度方法及系統(tǒng),減少任務(wù)跨節(jié)點(diǎn)訪問磁盤,實(shí)現(xiàn)高效調(diào)度,提升該類任務(wù)的性能。
2、為了實(shí)現(xiàn)上述目的,本專利技術(shù)的技術(shù)方案是這樣的:
3、一種
4、s1、創(chuàng)建用戶態(tài)調(diào)度程序;
5、s2、掃描并記錄各磁盤設(shè)備所在numa節(jié)點(diǎn),建立調(diào)度域,初始化cpu利用率,創(chuàng)建線程池,指派線程定期更新cpu利用率;
6、s3、基于linux內(nèi)核的sched_ext可擴(kuò)展調(diào)度器實(shí)現(xiàn)bpf回調(diào)函數(shù);
7、s4、通過libbpf庫將所述bpf回調(diào)函數(shù)附加到所述sched_ext可擴(kuò)展調(diào)度器各回調(diào)點(diǎn),接管sched_ext可擴(kuò)展調(diào)度器調(diào)度策略;
8、s5、通過bpf?map與回調(diào)函數(shù)進(jìn)行交互,實(shí)現(xiàn)任務(wù)的排隊(duì)和派發(fā);
9、s6、跟蹤任務(wù)在單位時(shí)間內(nèi)的direct?io量,對(duì)io量進(jìn)行累計(jì)和衰減,根據(jù)io量是否超過io量閾值來標(biāo)記direct?io密集型任務(wù);
10、s7、檢查所述direct?io密集型任務(wù)正在訪問的磁盤設(shè)備,將任務(wù)調(diào)度在對(duì)應(yīng)的磁盤節(jié)點(diǎn)內(nèi);
11、s8、定期檢查所述direct?io密集型任務(wù)調(diào)度范圍內(nèi)cpu利用率情況,超過設(shè)定的利用率閾值則動(dòng)態(tài)調(diào)整任務(wù)調(diào)度范圍;
12、s9、定期檢查所述direct?io密集型任務(wù)的私有內(nèi)存在各numa節(jié)點(diǎn)的分布,根據(jù)設(shè)定的閾值來決定是否需要將內(nèi)存遷移到正在訪問的磁盤節(jié)點(diǎn)。
13、進(jìn)一步的,步驟s2包括:
14、打開/sys/class/block目錄,讀取其中每個(gè)文件的軟鏈接,找出其中的pci設(shè)備文件并記錄pci設(shè)備號(hào);然后讀取/sys/bus/pci/devices/pci設(shè)備號(hào)/numa_node,使用全局結(jié)構(gòu)體變量記錄每個(gè)pci?設(shè)備及所對(duì)應(yīng)的numa節(jié)點(diǎn);
15、讀取/proc/schedstat文件,文件中有關(guān)于系統(tǒng)中各cpu的調(diào)度域?qū)蛹?jí)信息,解析該文件內(nèi)容,將cpu每個(gè)調(diào)度域?qū)蛹?jí)的cpumask掩碼記錄在全局?jǐn)?shù)組變量中;
16、讀取/proc/stat文件,文件中有關(guān)于各cpu時(shí)間的信息,解析該文件內(nèi)容,將各cpu的時(shí)間記錄在全局變量中,包括每個(gè)cpu的用戶態(tài)時(shí)間、系統(tǒng)態(tài)時(shí)間、空閑時(shí)間、中斷時(shí)間;
17、調(diào)用c庫函數(shù)pthread_create()預(yù)先申請(qǐng)工作線程,每個(gè)工作線程調(diào)用pthread_cond_wait()阻塞等待任務(wù)下發(fā);調(diào)用pthread_cond_signal()喚醒一個(gè)工作線程,該工作線程每秒更新一次cpu利用率。
18、進(jìn)一步的,步驟s3包括:
19、基于linux內(nèi)核的sched_ext可擴(kuò)展調(diào)度器編寫bpf程序,實(shí)現(xiàn)相關(guān)bpf回調(diào)函數(shù),所述相關(guān)bpf回調(diào)函數(shù)包括:init回調(diào)函數(shù),init_task回調(diào)函數(shù),select_cpu回調(diào)函數(shù),enqueue回調(diào)函數(shù),dispatch回調(diào)函數(shù)。
20、進(jìn)一步的,步驟s6包括:
21、從bpf?enqueued?map中取出任務(wù)進(jìn)行排隊(duì),如果任務(wù)距離上次采樣已經(jīng)過去了設(shè)定的時(shí)間,則更新上一次采樣時(shí)間點(diǎn)和累計(jì)io量,累計(jì)io量按照加權(quán)移動(dòng)平均算法ewma進(jìn)行計(jì)算;每次比較累計(jì)io量是否超過設(shè)定的io量閾值,如果是則將任務(wù)標(biāo)記為direct?io密集型任務(wù)。
22、進(jìn)一步的,步驟s7包括:
23、檢查direct?io密集型任務(wù)正在訪問的磁盤設(shè)備及所處的numa節(jié)點(diǎn)是否已經(jīng)設(shè)置,如果沒有,則通過讀取/proc/pid/fd目錄下的文件描述符,找出其中的磁盤設(shè)備文件,與之前記錄的磁盤設(shè)備與numa節(jié)點(diǎn)進(jìn)行匹配并記錄;同時(shí),初始化任務(wù)的調(diào)度域?yàn)樽畹蛯蛹?jí),將最低層級(jí)的cpumask掩碼通過dispatched?map傳遞到bpf回調(diào)函數(shù)dispatch中。
24、進(jìn)一步的,步驟s8包括:
25、定期遍歷direct?io密集型任務(wù)當(dāng)前調(diào)度域范圍內(nèi)所有cpu的利用率,計(jì)算平均cpu利用率是否超過第一閾值,是則將調(diào)度域?qū)蛹?jí)提升,如果平均cpu利用率低于第二閾值,則降低調(diào)度域?qū)蛹?jí);direct?io密集型任務(wù)根據(jù)cpu繁忙情況動(dòng)態(tài)調(diào)整cpu運(yùn)行范圍,在調(diào)度域內(nèi)高負(fù)載情況下,提升調(diào)度域?qū)蛹?jí),降低任務(wù)排隊(duì)帶來的調(diào)度延遲,在調(diào)度域內(nèi)cpu空閑時(shí),降低調(diào)度域?qū)蛹?jí),提高direct?io密集型任務(wù)的cache命中率。
26、進(jìn)一步的,步驟s9包括:
27、設(shè)定檢查所述direct?io密集型任務(wù)的私有內(nèi)存在各numa節(jié)點(diǎn)的分布的定期時(shí)間,時(shí)間到達(dá)后,打開/proc/pid/numa_maps文件,解析文件里面的私有內(nèi)存頁,分別統(tǒng)計(jì)其在每個(gè)numa節(jié)點(diǎn)的私有頁大小;如果超過設(shè)定的閾值,則調(diào)用c庫函數(shù)migrate_pages()進(jìn)行內(nèi)存遷移,采用線程池的方式將內(nèi)存遷移任務(wù)交由各線程去處理,將內(nèi)存遷移到directio密集型任務(wù)正在訪問的磁盤節(jié)點(diǎn)。
28、本專利技術(shù)另一方面還提出了一種針對(duì)numa架構(gòu)下direct?io密集型任務(wù)的調(diào)度系統(tǒng),包括:
29、程序模塊:創(chuàng)建用戶態(tài)調(diào)度程序;
30、初始化模塊:掃描并記錄各磁盤設(shè)備所在numa節(jié)點(diǎn),建立調(diào)度域,初始化cpu利用率,創(chuàng)建線程池,指派線程定期更新cpu利用率;
31、回調(diào)函數(shù)模塊:基于linux內(nèi)核的sched_ext可擴(kuò)展調(diào)度器實(shí)現(xiàn)bpf回調(diào)函數(shù);
32、策略模塊:通過libbpf庫將所述bpf回調(diào)函數(shù)附加到所述sched_ext可擴(kuò)展調(diào)度器各回調(diào)點(diǎn),本文檔來自技高網(wǎng)...
【技術(shù)保護(hù)點(diǎn)】
1.一種針對(duì)NUMA架構(gòu)下Direct?IO密集型任務(wù)的調(diào)度方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的針對(duì)NUMA架構(gòu)下Direct?IO密集型任務(wù)的調(diào)度方法,其特征在于,步驟S2包括:
3.根據(jù)權(quán)利要求1所述的針對(duì)NUMA架構(gòu)下Direct?IO密集型任務(wù)的調(diào)度方法,其特征在于,步驟S3包括:
4.根據(jù)權(quán)利要求1所述的針對(duì)NUMA架構(gòu)下Direct?IO密集型任務(wù)的調(diào)度方法,其特征在于,步驟S6包括:
5.根據(jù)權(quán)利要求1所述的針對(duì)NUMA架構(gòu)下Direct?IO密集型任務(wù)的調(diào)度方法,其特征在于,步驟S7包括:
6.根據(jù)權(quán)利要求1所述的針對(duì)NUMA架構(gòu)下Direct?IO密集型任務(wù)的調(diào)度方法,其特征在于,步驟S8包括:
7.根據(jù)權(quán)利要求1所述的針對(duì)NUMA架構(gòu)下Direct?IO密集型任務(wù)的調(diào)度方法,其特征在于,步驟S9包括:
8.一種針對(duì)NUMA架構(gòu)下Direct?IO密集型任務(wù)的調(diào)度系統(tǒng),其特征在于,包括:
9.一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)存儲(chǔ)有計(jì)算機(jī)程序,其特征在
10.一種計(jì)算機(jī)程序產(chǎn)品,包括計(jì)算機(jī)程序,其特征在于,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如權(quán)利要求1-7任一項(xiàng)所述的針對(duì)NUMA架構(gòu)下Direct?IO密集型任務(wù)的調(diào)度方法。
...【技術(shù)特征摘要】
1.一種針對(duì)numa架構(gòu)下direct?io密集型任務(wù)的調(diào)度方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的針對(duì)numa架構(gòu)下direct?io密集型任務(wù)的調(diào)度方法,其特征在于,步驟s2包括:
3.根據(jù)權(quán)利要求1所述的針對(duì)numa架構(gòu)下direct?io密集型任務(wù)的調(diào)度方法,其特征在于,步驟s3包括:
4.根據(jù)權(quán)利要求1所述的針對(duì)numa架構(gòu)下direct?io密集型任務(wù)的調(diào)度方法,其特征在于,步驟s6包括:
5.根據(jù)權(quán)利要求1所述的針對(duì)numa架構(gòu)下direct?io密集型任務(wù)的調(diào)度方法,其特征在于,步驟s7包括:
6.根據(jù)權(quán)利要求1所述的針對(duì)numa架構(gòu)下direct?io...
【專利技術(shù)屬性】
技術(shù)研發(fā)人員:李萬伍,黃兵,劉云,王琦,孫科,
申請(qǐng)(專利權(quán))人:麒麟軟件有限公司,
類型:發(fā)明
國別省市:
還沒有人留言評(píng)論。發(fā)表了對(duì)其他瀏覽者有用的留言會(huì)獲得科技券。