本發(fā)明涉及數(shù)據(jù)存儲(chǔ)的,具體涉及一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法。
背景技術(shù):
1、量子經(jīng)典算網(wǎng)融合力求更加高效精準(zhǔn)地將算力需求調(diào)度到相應(yīng)的資源節(jié)點(diǎn)。融合算力內(nèi)核的網(wǎng)絡(luò)數(shù)據(jù)傳輸主要弊端有中斷處理、內(nèi)存拷貝、上下文切換、局部性失效和內(nèi)存管理;在內(nèi)核進(jìn)行多任務(wù)操作,多任務(wù)間需要經(jīng)過(guò)內(nèi)核調(diào)度系統(tǒng)周期獲取cpu的資源而執(zhí)行,所以宏觀上任務(wù)仍然是串行工作,這樣反而會(huì)增加系統(tǒng)調(diào)度的開銷。
2、目前對(duì)接收到的海量網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行存儲(chǔ)主要存在以下缺點(diǎn):
3、1、單個(gè)網(wǎng)絡(luò)數(shù)據(jù)包的有效數(shù)據(jù)一般不大于1500字節(jié),大大降低了硬盤的讀寫速度,導(dǎo)致數(shù)據(jù)存儲(chǔ)速度慢;
4、2、單核對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)前需要進(jìn)行解析處理操作,導(dǎo)致單位時(shí)間內(nèi)有效的數(shù)據(jù)存儲(chǔ)時(shí)間短;
5、3、采用隊(duì)列數(shù)據(jù)結(jié)構(gòu)來(lái)緩沖海量的有序數(shù)據(jù)包,無(wú)法實(shí)現(xiàn)多個(gè)專核并行進(jìn)行數(shù)據(jù)存儲(chǔ)操作。
6、因此,需要對(duì)現(xiàn)有的網(wǎng)絡(luò)數(shù)據(jù)存儲(chǔ)技術(shù)進(jìn)行改進(jìn),提出一種能夠多核并行對(duì)海量的網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行高速存儲(chǔ)的方法。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明為了解決目前融合算力網(wǎng)采用隊(duì)列數(shù)據(jù)結(jié)構(gòu)來(lái)緩沖海量的有序數(shù)據(jù)包,無(wú)法實(shí)現(xiàn)多個(gè)專核并行進(jìn)行數(shù)據(jù)存儲(chǔ)的問(wèn)題,提供一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法。
2、為實(shí)現(xiàn)上述目的,本發(fā)明采取的技術(shù)方案如下:
3、一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法,基于dpdk啟動(dòng)多個(gè)用于存儲(chǔ)數(shù)據(jù)包的專核任務(wù),每個(gè)專核任務(wù)包括以下步驟:
4、s1:獲取當(dāng)前物理專核號(hào)idx和緩沖海量有序數(shù)據(jù)包的指針數(shù)組parray;
5、s2:記錄指針數(shù)組針對(duì)當(dāng)前物理專核號(hào)idx的索引ind;
6、s3:根據(jù)當(dāng)前的索引ind獲取指針數(shù)組的值pval;
7、s4:獲取pval地址對(duì)應(yīng)數(shù)據(jù)包的幀頭信息;
8、s5:讀取當(dāng)前數(shù)據(jù)包的主序列號(hào)major_id,根據(jù)主序列號(hào)判斷當(dāng)前數(shù)據(jù)包是否由當(dāng)前專核任務(wù)進(jìn)行處理;
9、若是,則執(zhí)行步驟s6;若否,則返回步驟s2;
10、s6:獲取當(dāng)前數(shù)據(jù)包的次序列號(hào),判斷次序列號(hào)是否為0;
11、若是,則創(chuàng)建新文件后再執(zhí)行步驟s7;若否,則直接執(zhí)行步驟s7;
12、s7:將當(dāng)前數(shù)據(jù)包的有效數(shù)據(jù)進(jìn)行數(shù)據(jù)存儲(chǔ)操作。
13、上述方案中,基于dpdk啟動(dòng)多個(gè)用于存儲(chǔ)數(shù)據(jù)包的專核任務(wù),可以很好地對(duì)接收到的海量網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行高速的存儲(chǔ);同時(shí),由于網(wǎng)絡(luò)數(shù)據(jù)包大小一般不大于1500字節(jié),通過(guò)使用多個(gè)物理專核進(jìn)行解析和存儲(chǔ)操作,極大地增加了寫硬盤的有效時(shí)間,提高了硬盤的吞吐量。
14、優(yōu)選的,根據(jù)主序列號(hào)判斷當(dāng)前數(shù)據(jù)包是否由當(dāng)前專核任務(wù)進(jìn)行處理的具體步驟為:
15、s5.1:計(jì)算物理專核總數(shù)inum=?imax-imin+1;
16、其中,imin為最小的物理專核號(hào),imax為最大的物理專核號(hào);
17、s5.2:計(jì)算變量mod_val?=?major_id?%?inum;
18、s5.3:計(jì)算物理專核偏移值ioffset?=?idx?-?imin;
19、s5.4:判斷mod_val和ioffset是否相等;
20、若是,則當(dāng)前數(shù)據(jù)包由當(dāng)前專核任務(wù)進(jìn)行處理;若否,則當(dāng)前數(shù)據(jù)包不由當(dāng)前專核任務(wù)進(jìn)行處理。
21、優(yōu)選的,在步驟s7之前,還包括預(yù)先定義一個(gè)300kb的緩沖buffer和一個(gè)索引值ind;其中,索引值ind用來(lái)標(biāo)記當(dāng)前數(shù)據(jù)包中有效數(shù)據(jù)的最大索引值。
22、優(yōu)選的,步驟s7具體為:
23、s7.1:將有效數(shù)據(jù)拷貝到緩沖buffer中,修改索引值ind;
24、s7.2:判斷索引值ind是否大于預(yù)設(shè)的i/o值;
25、若是,則觸發(fā)數(shù)據(jù)存儲(chǔ)操作;若否,則返回步驟s7.1。
26、優(yōu)選的,預(yù)設(shè)的i/o值為250kb。
27、優(yōu)選的,在步驟s7之后,還包括判斷是否發(fā)生異常;若是,則退出當(dāng)前專核任務(wù),執(zhí)行結(jié)束;若否,則返回步驟s2。
28、優(yōu)選的,在步驟s2中,初始的索引ind為0,每執(zhí)行一次操作后自動(dòng)增加1。
29、優(yōu)選的,在步驟s3中,通過(guò)pval?=?parray[ind]獲取指針數(shù)組的值pval。
30、優(yōu)選的,數(shù)據(jù)包的幀頭信息包括4字節(jié)stx、2字節(jié)幀長(zhǎng)度、1字節(jié)幀類型、不定長(zhǎng)的有效數(shù)據(jù)和2字節(jié)校驗(yàn)。
31、優(yōu)選的,數(shù)據(jù)存儲(chǔ)方式為:低字節(jié)在前,高字節(jié)在后。
32、本發(fā)明有益的技術(shù)效果:
33、本發(fā)明提供了一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法,基于dpdk啟動(dòng)多個(gè)用于存儲(chǔ)數(shù)據(jù)包的專核任務(wù),可以很好地對(duì)接收到的海量網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行高速的存儲(chǔ);同時(shí),由于網(wǎng)絡(luò)數(shù)據(jù)包大小一般不大于1500字節(jié),通過(guò)使用多個(gè)物理專核進(jìn)行解析和存儲(chǔ)操作,極大地增加了寫硬盤的有效時(shí)間,速率超過(guò)10gb/s提高了硬盤的吞吐量。
1.一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法,其特征在于,基于dpdk啟動(dòng)多個(gè)用于存儲(chǔ)數(shù)據(jù)包的專核任務(wù),每個(gè)專核任務(wù)包括以下步驟:
2.根據(jù)權(quán)利要求1所述的一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法,其特征在于,根據(jù)主序列號(hào)判斷當(dāng)前數(shù)據(jù)包是否由當(dāng)前專核任務(wù)進(jìn)行處理的具體步驟為:
3.根據(jù)權(quán)利要求1所述的一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法,其特征在于,在步驟s7之前,還包括預(yù)先定義一個(gè)300kb的緩沖buffer和一個(gè)索引值ind;其中,索引值ind用來(lái)標(biāo)記當(dāng)前數(shù)據(jù)包中有效數(shù)據(jù)的最大索引值。
4.根據(jù)權(quán)利要求3所述的一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法,其特征在于,步驟s7具體為:
5.根據(jù)權(quán)利要求4所述的一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法,其特征在于,預(yù)設(shè)的最優(yōu)值為250kb。
6.根據(jù)權(quán)利要求1所述的一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法,其特征在于,在步驟s7之后,還包括判斷是否發(fā)生異常;若是,則退出當(dāng)前專核任務(wù),執(zhí)行結(jié)束;若否,則返回步驟s2。
7.根據(jù)權(quán)利要求1所述的一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法,其特征在于,在步驟s2中,初始的索引ind為0,每執(zhí)行一次操作后自動(dòng)增加1。
8.根據(jù)權(quán)利要求1所述的一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法,其特征在于,在步驟s3中,通過(guò)pval?=?parray[ind]獲取指針數(shù)組的值pval。
9.根據(jù)權(quán)利要求1所述的一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法,其特征在于,數(shù)據(jù)包的幀頭信息包括4字節(jié)stx、2字節(jié)幀長(zhǎng)度、1字節(jié)幀類型、不定長(zhǎng)的有效數(shù)據(jù)和2字節(jié)校驗(yàn)。
10.根據(jù)權(quán)利要求1所述的一種基于dpdk的融合算力高效數(shù)據(jù)存儲(chǔ)方法,其特征在于,數(shù)據(jù)存儲(chǔ)方式為:低字節(jié)在前,高字節(jié)在后。