本發(fā)明涉及操作系統(tǒng)性能優(yōu)化技術(shù)領(lǐng)域,更具體地說,涉及一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度方法及裝置。
背景技術(shù):
NUMA(Non Uniform Memory Access Architecture,非統(tǒng)一內(nèi)存訪問架構(gòu))架構(gòu)是目前中大型操作系統(tǒng)中所廣泛采用的一種解決方案,主要是針對多處理器的操作系統(tǒng)。
在NUMA架構(gòu)中包含有多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)包含一定數(shù)量的CPU;而對于操作系統(tǒng)上層應(yīng)用而言,IO(輸入輸出)任務(wù)運(yùn)行在哪一個(gè)節(jié)點(diǎn)上要服從系統(tǒng)的統(tǒng)一調(diào)度策略。但是發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)中上述的統(tǒng)一調(diào)度策略往往需要在不同節(jié)點(diǎn)之間進(jìn)行任務(wù)的遷移,如現(xiàn)有機(jī)器1和機(jī)器2,機(jī)器1中包含有3個(gè)結(jié)點(diǎn),但是僅有一個(gè)節(jié)點(diǎn)與網(wǎng)卡設(shè)備連接;當(dāng)機(jī)器1的IO任務(wù)需要與機(jī)器2實(shí)現(xiàn)網(wǎng)絡(luò)通信時(shí)(即該IO任務(wù)為網(wǎng)絡(luò)IO任務(wù)),處理該IO任務(wù)的節(jié)點(diǎn)需要通過網(wǎng)卡設(shè)備實(shí)現(xiàn)與機(jī)器2的網(wǎng)絡(luò)通信,因此,只有與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)可以直接通過網(wǎng)卡設(shè)備實(shí)現(xiàn)與機(jī)器2的網(wǎng)絡(luò)通信,而其他兩個(gè)節(jié)點(diǎn)則需要將IO任務(wù)轉(zhuǎn)移至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn),以通過該節(jié)點(diǎn)連接的網(wǎng)卡設(shè)備實(shí)現(xiàn)與機(jī)器2的網(wǎng)絡(luò)通信。而在不同節(jié)點(diǎn)之間進(jìn)行任務(wù)的遷移會造成系統(tǒng)性能損失,以及增加系統(tǒng)的整體運(yùn)行壓力。
綜上所述,現(xiàn)有技術(shù)中實(shí)現(xiàn)對于網(wǎng)絡(luò)IO任務(wù)的調(diào)度的技術(shù)方案存在系統(tǒng)性能損失較嚴(yán)重,且系統(tǒng)整體運(yùn)行壓力較大的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度方法及裝置,以解決現(xiàn)有技術(shù)中實(shí)現(xiàn)對于網(wǎng)絡(luò)IO任務(wù)的調(diào)度的技術(shù)方案存在的系統(tǒng)性能損失較嚴(yán)重,且系統(tǒng)整體運(yùn)行壓力較大的問題。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度方法,包括:
查找當(dāng)前操作系統(tǒng)中IO使用率高于預(yù)設(shè)值的任務(wù),并從中篩選出需利用網(wǎng)絡(luò)連接實(shí)現(xiàn)的網(wǎng)絡(luò)IO密集型任務(wù);
將所述網(wǎng)絡(luò)IO密集型任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU上。
優(yōu)選的,還包括:
將與所述網(wǎng)絡(luò)IO密集型任務(wù)對應(yīng)的數(shù)據(jù)遷移至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的內(nèi)存上。
優(yōu)選的,將所述網(wǎng)絡(luò)IO密集型任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU上,包括:
將與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU設(shè)置為與所述網(wǎng)絡(luò)IO密集型任務(wù)親和的CPU。
優(yōu)選的,確定與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn),包括:
查看當(dāng)前操作系統(tǒng)中的PCI總線以及連接至該P(yáng)CI總線的硬件設(shè)備,確定出所述網(wǎng)卡設(shè)備以及與所述網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)。
優(yōu)選的,查看當(dāng)前操作系統(tǒng)中的PCI總線以及連接至該P(yáng)CI總線的硬件設(shè)備,包括:
利用lscpi命令查看當(dāng)前操作系統(tǒng)中的PCI總線以及連接至該P(yáng)CI總線的硬件設(shè)備。
一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度裝置,包括:
任務(wù)篩選模塊,用于查找當(dāng)前操作系統(tǒng)中IO使用率高于預(yù)設(shè)值的任務(wù),并從中篩選出需利用網(wǎng)絡(luò)連接實(shí)現(xiàn)的網(wǎng)絡(luò)IO密集型任務(wù);
任務(wù)分配模塊,用于將所述網(wǎng)絡(luò)IO密集型任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU上。
優(yōu)選的,還包括:
數(shù)據(jù)遷移模塊,用于將與所述網(wǎng)絡(luò)IO密集型任務(wù)對應(yīng)的數(shù)據(jù)遷移至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的內(nèi)存上。
優(yōu)選的,任務(wù)分配模塊包括:
任務(wù)分配單元,用于將與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU設(shè)置為與所述網(wǎng)絡(luò)IO密集型任務(wù)親和的CPU。
優(yōu)選的,還包括:
節(jié)點(diǎn)確定模塊,用于查看當(dāng)前操作系統(tǒng)中的PCI總線以及連接至該P(yáng)CI總線的硬件設(shè)備,確定出所述網(wǎng)卡設(shè)備以及與所述網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)。
優(yōu)選的,節(jié)點(diǎn)確定模塊包括:
節(jié)點(diǎn)確定單元,用于利用lscpi命令查看當(dāng)前操作系統(tǒng)中的PCI總線以及連接至該P(yáng)CI總線的硬件設(shè)備。
本發(fā)明提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度方法及裝置,其中,該方法包括:查找當(dāng)前操作系統(tǒng)中IO使用率高于預(yù)設(shè)值的任務(wù),并從中篩選出需利用網(wǎng)絡(luò)連接實(shí)現(xiàn)的網(wǎng)絡(luò)IO密集型任務(wù);將所述網(wǎng)絡(luò)IO密集型任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU上。通過本申請公開的上述技術(shù)方案,首先確定出當(dāng)前操作系統(tǒng)中存在的網(wǎng)絡(luò)IO密集型任務(wù),進(jìn)而將該任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU上,由該CPU實(shí)現(xiàn)對該任務(wù)的處理。其中,網(wǎng)絡(luò)IO密集型任務(wù)為IO使用率高于預(yù)設(shè)值且需通過網(wǎng)卡設(shè)備實(shí)現(xiàn)網(wǎng)絡(luò)連接的任務(wù),因此,將這類任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU上,避免了其被分配至不與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)上,從而還需要通過與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)實(shí)現(xiàn)任務(wù)的處理,也就避免了任務(wù)在不同節(jié)點(diǎn)之間的遷移,從而降低了系統(tǒng)性能損失,減少了系統(tǒng)的整體運(yùn)行壓力。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度方法的流程圖;
圖2為本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請參閱圖1,其示出了本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度方法的流程圖,可以包括以下步驟:
S11:查找當(dāng)前操作系統(tǒng)中IO使用率高于預(yù)設(shè)值的任務(wù),并從中篩選出需利用網(wǎng)絡(luò)連接實(shí)現(xiàn)的網(wǎng)絡(luò)IO密集型任務(wù)。
需要說明的是,本發(fā)明實(shí)施例中涉及的操作系統(tǒng)可以為Linux操作系統(tǒng),預(yù)設(shè)值可以根據(jù)實(shí)際需要進(jìn)行確定,對當(dāng)前操作系統(tǒng)中的所有任務(wù)的IO使用情況進(jìn)行統(tǒng)計(jì),其中,IO使用率高于預(yù)設(shè)值的任務(wù)為IO使用率較高的任務(wù),即為IO密集型任務(wù),而需利用網(wǎng)絡(luò)連接實(shí)現(xiàn)的IO密集型任務(wù)即為網(wǎng)絡(luò)IO密集型任務(wù)。
具體來說,可以通過操作系統(tǒng)提供的IO監(jiān)測命令實(shí)現(xiàn)所有任務(wù)IO使用情況的監(jiān)測,進(jìn)而確定出IO密集型任務(wù),而這些任務(wù)主要包括通過對磁盤進(jìn)行操作實(shí)現(xiàn)的任務(wù)及需利用網(wǎng)絡(luò)連接實(shí)現(xiàn)的任務(wù),其中,需利用網(wǎng)絡(luò)連接實(shí)現(xiàn)的任務(wù)即需要與其他設(shè)備之間進(jìn)行網(wǎng)絡(luò)通信的任務(wù);然后利用lsof系統(tǒng)工具對所有IO密集型任務(wù)進(jìn)行分類和篩選,查找出其中需利用網(wǎng)絡(luò)連接實(shí)現(xiàn)的任務(wù),即為網(wǎng)絡(luò)IO密集型任務(wù),并將這些任務(wù)進(jìn)行記錄,以在該任務(wù)出現(xiàn)時(shí),均對其進(jìn)行步驟S12的處理。
S12:將網(wǎng)絡(luò)IO密集型任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU上。
將上述網(wǎng)絡(luò)IO密集型任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU上,具體可以是平均分配至該結(jié)點(diǎn)的各個(gè)CPU上,也可以根據(jù)實(shí)際需要確定其他分配原則,從而由于網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU實(shí)現(xiàn)對網(wǎng)絡(luò)IO密集型任務(wù)的處理。
通過本申請公開的上述技術(shù)方案,首先確定出當(dāng)前操作系統(tǒng)中存在的網(wǎng)絡(luò)IO密集型任務(wù),進(jìn)而將該任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU上,由該CPU實(shí)現(xiàn)對該任務(wù)的處理。其中,網(wǎng)絡(luò)IO密集型任務(wù)為IO使用率高于預(yù)設(shè)值且需通過網(wǎng)卡設(shè)備實(shí)現(xiàn)網(wǎng)絡(luò)連接的任務(wù),因此,將這類任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU上,避免了其被分配至不與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)上,從而還需要通過與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)實(shí)現(xiàn)任務(wù)的處理,也就避免了任務(wù)在不同節(jié)點(diǎn)之間的遷移,從而降低了系統(tǒng)性能損失,減少了系統(tǒng)的整體運(yùn)行壓力。
本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度方法,還可以包括:
將與網(wǎng)絡(luò)IO密集型任務(wù)對應(yīng)的數(shù)據(jù)遷移至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的內(nèi)存上。
需要說明的是,將網(wǎng)絡(luò)IO密集型任務(wù)對應(yīng)的數(shù)據(jù)遷移至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的內(nèi)存上,由此,在處理網(wǎng)絡(luò)IO密集型任務(wù)并且需要獲取對應(yīng)數(shù)據(jù)時(shí)可以直接利用遷移過來的數(shù)據(jù),無需再由其他節(jié)點(diǎn)獲取對應(yīng)數(shù)據(jù),由此,進(jìn)一步減少了系統(tǒng)性能損耗。
另外,將網(wǎng)絡(luò)IO密集型任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)并將與網(wǎng)絡(luò)IO密集型任務(wù)對應(yīng)的數(shù)據(jù)遷移至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)后,還可以對網(wǎng)絡(luò)IO密集型任務(wù)及其對應(yīng)的數(shù)據(jù),即其使用的內(nèi)存進(jìn)行綁定,從而需要使用對應(yīng)數(shù)據(jù)時(shí)在物理上縮短了數(shù)據(jù)傳輸距離,減少了網(wǎng)絡(luò)IO密集型任務(wù)和對應(yīng)數(shù)據(jù)在不同節(jié)點(diǎn)之間的遷移,減少了系統(tǒng)性能損耗,提升了系統(tǒng)性能。
本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度方法,將網(wǎng)絡(luò)IO密集型任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU上,可以包括:
將與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU設(shè)置為與網(wǎng)絡(luò)IO密集型任務(wù)親和的CPU。
將與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU設(shè)置為與網(wǎng)絡(luò)IO密集型任務(wù)親和的CPU后,網(wǎng)絡(luò)IO密集型任務(wù)會自動被分配至與其親和的CPU上實(shí)現(xiàn);簡單地說,CPU的親和性就是任務(wù)要在某個(gè)給定的CPU上盡量長時(shí)間地運(yùn)行而不被遷移到其他CPU上的傾向性。因此,利用CPU的親和性,使用調(diào)度器使網(wǎng)絡(luò)IO密集型任務(wù)盡可能的在同一個(gè)節(jié)點(diǎn)上運(yùn)行,由此,有效減少了跨節(jié)點(diǎn)的數(shù)據(jù)傳輸。具體來說,可以利用taskset命令設(shè)定這些任務(wù)的CPU親和性,以使這些任務(wù)能夠運(yùn)行在網(wǎng)卡設(shè)備所連接的節(jié)點(diǎn)的CPU上。
本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度方法,確定與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn),可以包括:
查看當(dāng)前操作系統(tǒng)中的PCI總線以及連接至該P(yáng)CI總線的硬件設(shè)備,確定出網(wǎng)卡設(shè)備以及與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)。
需要說明的是,監(jiān)測當(dāng)前操作系統(tǒng)對應(yīng)的物理設(shè)備分布情況,進(jìn)而確定出PCI總線及連接至PCI總線的硬件設(shè)備,確定出硬件設(shè)備中包含的網(wǎng)卡設(shè)備及與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn),具體可以是確定出節(jié)點(diǎn)在操作系統(tǒng)中的編號,以方便對節(jié)點(diǎn)進(jìn)行定位。
具體來說,查看當(dāng)前操作系統(tǒng)中的PCI總線以及連接至該P(yáng)CI總線的硬件設(shè)備,可以包括:
利用lscpi命令查看當(dāng)前操作系統(tǒng)中的PCI總線以及連接至該P(yáng)CI總線的硬件設(shè)備。
當(dāng)然,還可以根據(jù)實(shí)際需要及當(dāng)前操作系統(tǒng)的不同進(jìn)行其他設(shè)置,均在本發(fā)明的保護(hù)范圍之內(nèi)。
與上述實(shí)施例相對應(yīng),本發(fā)明實(shí)施例還提供了一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度裝置,如圖2所示,包括:
任務(wù)篩選模塊11,用于查找當(dāng)前操作系統(tǒng)中IO使用率高于預(yù)設(shè)值的任務(wù),并從中篩選出需利用網(wǎng)絡(luò)連接實(shí)現(xiàn)的網(wǎng)絡(luò)IO密集型任務(wù);
任務(wù)分配模塊12,用于將網(wǎng)絡(luò)IO密集型任務(wù)分配至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU上。
本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度裝置,還可以包括:
數(shù)據(jù)遷移模塊,用于將與網(wǎng)絡(luò)IO密集型任務(wù)對應(yīng)的數(shù)據(jù)遷移至與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的內(nèi)存上。
本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度裝置,任務(wù)分配模塊可以包括:
任務(wù)分配單元,用于將與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)包含的CPU設(shè)置為與網(wǎng)絡(luò)IO密集型任務(wù)親和的CPU。
本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度裝置,還可以包括:
節(jié)點(diǎn)確定模塊,用于查看當(dāng)前操作系統(tǒng)中的PCI總線以及連接至該P(yáng)CI總線的硬件設(shè)備,確定出網(wǎng)卡設(shè)備以及與網(wǎng)卡設(shè)備連接的節(jié)點(diǎn)。
本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度裝置,節(jié)點(diǎn)確定模塊可以包括:
節(jié)點(diǎn)確定單元,用于利用lscpi命令查看當(dāng)前操作系統(tǒng)中的PCI總線以及連接至該P(yáng)CI總線的硬件設(shè)備。
本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度裝置中相關(guān)部分的說明請參見本發(fā)明實(shí)施例提供的一種網(wǎng)絡(luò)IO密集型任務(wù)的調(diào)度方法中對應(yīng)部分的詳細(xì)說明,在此不再贅述。
對所公開的實(shí)施例的上述說明,使本領(lǐng)域技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對這些實(shí)施例的多種修改對本領(lǐng)域技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。