專利名稱:采用gpu加速進(jìn)行實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及硬件GPU加速、高速網(wǎng)絡(luò)處理、以及實(shí)時(shí)調(diào)度領(lǐng)域,具體涉及一種采用GPU加速進(jìn)行實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的處理方法。
背景技術(shù):
當(dāng)前網(wǎng)絡(luò)有許多實(shí)時(shí)應(yīng)用,這些實(shí)時(shí)應(yīng)用關(guān)系著用戶體驗(yàn),有著很大的商業(yè)需求。典型的,比如網(wǎng)絡(luò)電視、視頻直播、視頻會(huì)議、云游戲、VoIP等應(yīng)用,都關(guān)系著用戶隱私,一般都需要壓縮、加密等處理。而這對(duì)網(wǎng)絡(luò)服務(wù)器以及中間設(shè)備的處理能力造成了挑戰(zhàn),并造成了大量的處理開銷。以至于對(duì)于許多本應(yīng)保護(hù)用戶隱私的加密等操作沒有被服務(wù)提供商處理,導(dǎo)致了有版權(quán)的網(wǎng)絡(luò)視頻等內(nèi)容可能被網(wǎng)絡(luò)嗅探竊取,用戶隱私有可能被竊取等。同時(shí),除了處理開銷的巨大,這些網(wǎng)絡(luò)實(shí)時(shí)應(yīng)用的實(shí)時(shí)性也必須被滿足,對(duì)于VoIP應(yīng)用,VoIP包每20s-30s產(chǎn)生一個(gè),其從發(fā)送端到接收端的最小延遲被規(guī)定為150ms (因?yàn)槁曇粞舆t150ms以上,人就能察覺得到)。同樣,諸如視頻會(huì)議、IPTV、云游戲等這類應(yīng)用一般具有150ms的實(shí)時(shí)延遲要求。對(duì)于已有的網(wǎng)絡(luò)加密、壓縮設(shè)備,其通常由于其為專門的硬件,可擴(kuò)展性差,開發(fā)周期長(zhǎng),價(jià)格高昂,并且由于其新的編程模型和指令系統(tǒng),需要程序員學(xué)習(xí)新的編程語言或方式,導(dǎo)致開發(fā)緩慢而且可維護(hù)性低。隨著通用處理器CPU和通用計(jì)算顯卡GPGPU的出現(xiàn),軟件實(shí)現(xiàn)高性能處理成為了一種新實(shí)現(xiàn)高速網(wǎng)絡(luò)設(shè)備的方法可能。然而,諸如加密、壓縮、轉(zhuǎn)發(fā)等的操作,由于機(jī)器CPU性能有限,往往當(dāng)數(shù)據(jù)量很大的時(shí)候,沒法滿足那么快速的處理需求。近年來,GPU的出現(xiàn),使得很多數(shù)據(jù)、計(jì)算密集型應(yīng)用通過通用設(shè)備加速成為可能。國內(nèi)外已有大量的工作介紹了利用GPU來加速數(shù)據(jù)密集型網(wǎng)絡(luò)處理的方法以及算法,并達(dá)到了幾十Gbps的吞吐量,驗(yàn)證了 GPU作為加速高速網(wǎng)絡(luò)處理的可行性。GPU適合處理的程序包括兩種:一種是數(shù)據(jù)密集型,由于其快速線程切換的特性,可以有效隱藏訪存延遲;另一種是計(jì)算密集型,其成百上千個(gè)核的計(jì)算能力,是CPU的數(shù)十上百倍,適合并發(fā)度高的應(yīng)用。然而由于GPU具有以下特性,而使其至今沒有被用來處理實(shí)時(shí)應(yīng)用:I)批處理。如果要充分利用GPU的高吞吐量和高度并行性,任務(wù)需積攢成一批然后再傳至GPU進(jìn)行處理,然而由于需要進(jìn)行積攢會(huì)引入大量延遲。2)與CPU不同,GPU無法直接訪問內(nèi)存中的數(shù)據(jù),如果要將數(shù)據(jù)交由GPU處理,數(shù)據(jù)須被傳輸至GPU的內(nèi)存,然而傳輸時(shí)延往往很大。3)執(zhí)行時(shí)間不確定。在GPU處理中,一批任務(wù)的處理時(shí)間是由其最慢的線程決定的。只有當(dāng)所有線程都被處理完的時(shí)候,GPU才會(huì)返回處理結(jié)果。而且,GPU的執(zhí)行時(shí)間取決于其內(nèi)部的分配和調(diào)度策略,其執(zhí)行時(shí)間與工作負(fù)載不成函數(shù)相關(guān),所以執(zhí)行時(shí)間不可預(yù)知。4)多線程。GPU的眾核結(jié)構(gòu)使得成百上千的線程可以同時(shí)執(zhí)行,線程以一個(gè)組為執(zhí)行單位,通常為32個(gè),每一組間快速切換,切換沒有延遲,可以有效隱藏GPU的訪存開銷。
其中I 3特性導(dǎo)致的高延遲以及執(zhí)行時(shí)間不確定性,使得GPU至今沒有被用來處理實(shí)時(shí)應(yīng)用。尤其是其批處理的特性,一個(gè)任務(wù)需要等待一批任務(wù)一起執(zhí)行才能充分利用GPU,同時(shí)需要一定時(shí)間才能得以傳輸至GPU處理,實(shí)時(shí)性不好保證。通過減小批處理(batch)大小,能夠減小延遲,但是會(huì)同時(shí)減小GPU的吞吐量;而增大批處理(batch)大小,能夠增加吞吐量,卻也同時(shí)增大了延遲。本發(fā)明因此而來。
發(fā)明內(nèi)容
本發(fā)明目的在于提供一種采用GPU加速實(shí)時(shí)網(wǎng)絡(luò)流處理的調(diào)度方法,該方法利用GPU高吞吐量處理能力的同時(shí),保證和滿足每一個(gè)網(wǎng)絡(luò)流的實(shí)時(shí)性處理要求。為了解決現(xiàn)有技術(shù)中的這些問題,本發(fā)明提供的技術(shù)方案是:一種采用GPU加速進(jìn)行實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的處理方法,其特征在于所述方法中實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序在執(zhí)行前,CPU根據(jù)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序設(shè)置預(yù)定GPU執(zhí)行周期I的定時(shí)器,所述定時(shí)器開始計(jì)時(shí)后,當(dāng)計(jì)時(shí)累計(jì)達(dá)到GPU執(zhí)行周期I時(shí),計(jì)時(shí)歸零并重新開始計(jì)時(shí);所述方法包括以下步驟:(I)CPU開始執(zhí)行實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序,并啟動(dòng)定時(shí)器計(jì)時(shí);(2)CPU積攢實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的數(shù)據(jù)或執(zhí)行序列,并在定時(shí)器的GPU執(zhí)行周期I屆滿時(shí)將積攢的數(shù)據(jù)或執(zhí)行序列傳輸給GPU進(jìn)行處理;(3)GPU接收CPU在上一 GPU執(zhí)行周期I內(nèi)積攢的數(shù)據(jù)或執(zhí)行序列,并執(zhí)行CPU傳輸?shù)臄?shù)據(jù)或執(zhí)行序列,將執(zhí)行結(jié)果傳輸給CPU ;(4)CPU接收GPU在上一 GPU執(zhí)行周期I內(nèi)的執(zhí)行結(jié)果數(shù)據(jù),并根據(jù)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的執(zhí)行情況判斷是否繼續(xù)在下一 GPU執(zhí)行周期I開始時(shí)開始積攢下一 GPU執(zhí)行周期I內(nèi)的數(shù)據(jù)或執(zhí)行序列;當(dāng)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的數(shù)據(jù)或執(zhí)行序列已經(jīng)執(zhí)行完時(shí),CPU輸出執(zhí)行結(jié)果至內(nèi)存;當(dāng)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的數(shù)據(jù)或執(zhí)行序列沒有執(zhí)行完時(shí),CPU繼續(xù)在下一 GPU執(zhí)行周期I開始時(shí)開始積攢下一 GPU執(zhí)行周期I內(nèi)的數(shù)據(jù)或執(zhí)行序列直至應(yīng)用程序處理結(jié)束;其中所述GPU執(zhí)行周期I大于等于GPU的最壞處理時(shí)間。優(yōu)選的,所述方法中GPU執(zhí)行周期I是提前預(yù)設(shè)的,不是動(dòng)態(tài)計(jì)算的,系統(tǒng)一旦運(yùn)行,I不可改變。對(duì)于一批任務(wù)中,最小的任務(wù)處理周期T,I應(yīng)當(dāng)小于等于T/2,也就是I屬于
這個(gè)區(qū)間當(dāng)中。優(yōu)選的,所述方法中GPU的最壞處理時(shí)間包括GPU輸入數(shù)據(jù)傳輸時(shí)間、GPU執(zhí)行批處理時(shí)間、GPU計(jì)算結(jié)果傳出時(shí)間。最壞的處理時(shí)間是通過預(yù)估得到的,通過每次測(cè)量GPU真正的傳輸時(shí)間、處理時(shí)間,來獲得當(dāng)前系統(tǒng)每一批次的所有時(shí)間,使其不超過GPU執(zhí)行周期I。GPU的最壞處理時(shí)間不能夠特別準(zhǔn)確的估計(jì),本發(fā)明采用了資源預(yù)留的方案,即當(dāng)系統(tǒng)的處理能力超過90%的時(shí)候,不再接受新的網(wǎng)絡(luò)連接,處理新的數(shù)據(jù)了,除非當(dāng)已有的網(wǎng)絡(luò)連接停止或釋放,使得系統(tǒng)能夠有能力處理更多的數(shù)據(jù)時(shí),才進(jìn)一步接受新的連接。具體實(shí)施為:GPU計(jì)時(shí)每一批處理的時(shí)間TB,當(dāng)其>=0.9* I時(shí),我們就不接受新的連接,以保證本批任務(wù)中所有連接的任務(wù)都被實(shí)時(shí)處理,每一批次的處理時(shí)間不會(huì)超過I。應(yīng)用程序的最小處理延遲是由應(yīng)用程序或者使用者指定的,取決于所加速的應(yīng)用,以及使用者對(duì)該網(wǎng)絡(luò)設(shè)備的要求,比如語音通訊150ms最大延遲,除去網(wǎng)絡(luò)抖動(dòng),以及服務(wù)器端用戶端的處理延遲,留給加密設(shè)備加速的時(shí)間將會(huì)小于100ms。該信息應(yīng)該由使用者提前指定,或者該系統(tǒng)通過每一條連接初始建立時(shí)候的信息,獲得該流的處理延遲,等
坐寸ο具體CPU GPU交互過程需要具體說明。CPU與GPU交互過程:CPU收到網(wǎng)絡(luò)數(shù)據(jù),準(zhǔn)備網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行處理,進(jìn)行一定預(yù)處理過后,將需要由GPU加速處理的數(shù)據(jù)放入緩沖區(qū)中。當(dāng)積攢到一定數(shù)量的數(shù)據(jù)后(幾百個(gè),幾千個(gè)),將所有任務(wù)的數(shù)據(jù)全部傳輸至GPU,然后調(diào)用GPU執(zhí)行該緩沖區(qū)中的數(shù)據(jù),等待GPU執(zhí)行結(jié)束后,將GPU的處理結(jié)果從GPU的存儲(chǔ)中傳回內(nèi)存中來,完成GPU的加速處理。接著,CPU對(duì)于GPU加速處理完的數(shù)據(jù)進(jìn)行后續(xù)處理。本發(fā)明技術(shù)方案中,在調(diào)度方法初始時(shí),根據(jù)所需要加速處理的應(yīng)用程序,設(shè)定一個(gè)周期變量I。在算法執(zhí)行過程中,每一個(gè)固定間隔I后即調(diào)用GPU執(zhí)行,每次執(zhí)行前將一個(gè)時(shí)間間隔I中積攢的數(shù)據(jù)形成一批,一起傳輸至GPU進(jìn)行處理。也就是說,GPU的實(shí)際執(zhí)行過程為一個(gè)以I為時(shí)間間隔的執(zhí)行序列,兩次執(zhí)行時(shí)間的間隔是固定不變的。由此可知,在一個(gè)時(shí)間間隔I (Plri Pk)內(nèi)到達(dá)的任務(wù),一定會(huì)將在下一個(gè)時(shí)間間隔到達(dá)時(shí)(Pk+1)被執(zhí)行完。因此對(duì)于任何一個(gè)實(shí)時(shí)的網(wǎng)絡(luò)流,如果其每一個(gè)消息處理的截至期限大于21,那么其實(shí)時(shí)性必將能被保證。所以,當(dāng)對(duì)于一個(gè)集合的所有的實(shí)時(shí)任務(wù)流中,如果最小截止期限大于21,那么該系統(tǒng)集合的所有流的每一個(gè)消息都能夠被實(shí)時(shí)處理。整個(gè)系統(tǒng)在執(zhí)行過程中,為保證所有任務(wù)被實(shí)時(shí)處理。方法應(yīng)該在執(zhí)行過程中限制總的要處理的數(shù)據(jù)量。從而使得每一批任務(wù)的GPU處理時(shí)間以及輸入和輸出傳輸時(shí)間的總和(即最差處理時(shí)間)小于等于I。優(yōu)選方案是,采用集成在CPU芯片中的GPU,并可以直接訪問系統(tǒng)內(nèi)存或內(nèi)存內(nèi)拷貝加快速度。優(yōu)選方案是,對(duì)于確定性最大流量的網(wǎng)絡(luò),可以設(shè)定令T=I,在保證處理能力的同時(shí)取得最小延遲。優(yōu)選方案是,對(duì)于已知最小延遲保證的網(wǎng)絡(luò),盡量將I設(shè)為最小延遲的一半,在保證所有流最小延遲被滿足的情況下,達(dá)到最高吞吐量。本發(fā)明提供了一種針對(duì)于GPU加速網(wǎng)絡(luò)實(shí)時(shí)流處理的實(shí)時(shí)調(diào)度方法,采用了定時(shí)執(zhí)行的方法,對(duì)處理延遲以及吞吐量做了一個(gè)權(quán)衡,采用了一個(gè)適合于所有任務(wù)流的最大延遲,來得到最大的吞吐量。從而使得利用GPU獲得高吞吐量的同時(shí),保證了所有網(wǎng)絡(luò)流的實(shí)時(shí)性處理。相對(duì)于現(xiàn)有技術(shù)中的方案,本發(fā)明的優(yōu)點(diǎn)是:本發(fā)明技術(shù)方案利用GPU的處理能力以加速數(shù)據(jù)密集型和計(jì)算密集型網(wǎng)絡(luò)應(yīng)用,其中針對(duì)吞吐量和延遲的權(quán)衡,本發(fā)明采取以下技術(shù)方案:通過精確地定時(shí)執(zhí)行,利用GPU高性能的同時(shí),保證了每一個(gè)到達(dá)任務(wù)的準(zhǔn)確的最壞的處理截至?xí)r間,從而保證了所有網(wǎng)絡(luò)流的實(shí)時(shí)性處理。本發(fā)明提供了一種采用GPU加速實(shí)時(shí)網(wǎng)絡(luò)流處理的調(diào)度方法,其特征在于所述方法中CPU根據(jù)需要加速處理的應(yīng)用程序設(shè)置GPU執(zhí)行周期I ;所述GPU執(zhí)行周期I大于等于GPU的最壞處理時(shí)間;包括以下步驟=(I)CPU接收GPU在上一 GPU執(zhí)行周期I內(nèi)的計(jì)算結(jié)果,并在下一批處理時(shí)間周期開始時(shí),CPU開始積攢GPU執(zhí)行周期I內(nèi)的數(shù)據(jù)或執(zhí)行序列;(2)當(dāng)下一批處理時(shí)間周期截止時(shí),CPU將GPU執(zhí)行周期I內(nèi)的數(shù)據(jù)或執(zhí)行序列傳輸給GPU進(jìn)行處理;按照(I) (2)步驟循環(huán)直至應(yīng)用程序處理結(jié)束。該方法利用GPU獲得高吞吐量的同時(shí),保證了所有網(wǎng)絡(luò)流的實(shí)時(shí)性處理。該方法用來加速網(wǎng)絡(luò)實(shí)時(shí)流的處理,在CPU的計(jì)算能力已經(jīng)不足的情況下,利用了 GPU的高性能,來加速數(shù)據(jù)和計(jì)算密集型的應(yīng)用,諸如壓縮、加密、解密等。
下面結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步描述:圖1是本發(fā)明實(shí)施例方法的調(diào)度算法執(zhí)行示意圖。圖2是采用GPU加速進(jìn)行實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的處理方法的執(zhí)行流程圖。
具體實(shí)施例方式以下結(jié)合具體實(shí)施例對(duì)上述方案做進(jìn)一步說明。應(yīng)理解,這些實(shí)施例是用于說明本發(fā)明而不限于限制本發(fā)明的范圍。實(shí)施例中采用的實(shí)施條件可以根據(jù)具體廠家的條件做進(jìn)一步調(diào)整,未注明的實(shí)施條件通常為常規(guī)實(shí)驗(yàn)中的條件。實(shí)施例如圖1所示,采用GPU加速進(jìn)行實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的處理方法中實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序在執(zhí)行前,CPU根據(jù)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序設(shè)置預(yù)定GPU執(zhí)行周期I的定時(shí)器,所述定時(shí)器開始計(jì)時(shí)后,當(dāng)計(jì)時(shí)累計(jì)達(dá)到GPU執(zhí)行周期I時(shí),計(jì)時(shí)歸零并重新開始計(jì)時(shí);所述方法包括以下步驟:(I)CPU開始執(zhí)行實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序,并啟動(dòng)定時(shí)器計(jì)時(shí);(2)CPU積攢實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的數(shù)據(jù)或執(zhí)行序列,并在定時(shí)器的GPU執(zhí)行周期I屆滿時(shí)將積攢的數(shù)據(jù)或執(zhí)行序列傳輸給GPU進(jìn)行處理;(3)GPU接收CPU在上一 GPU執(zhí)行周期I內(nèi)積攢的數(shù)據(jù)或執(zhí)行序列,并執(zhí)行CPU傳輸?shù)臄?shù)據(jù)或執(zhí)行序列,將執(zhí)行結(jié)果傳輸給CPU ;(4)CPU接收GPU在上一 GPU執(zhí)行周期I內(nèi)的執(zhí)行結(jié)果數(shù)據(jù),并根據(jù)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的執(zhí)行情況判斷是否繼續(xù)在下一 GPU執(zhí)行周期I開始時(shí)開始積攢下一 GPU執(zhí)行周期I內(nèi)的數(shù)據(jù)或執(zhí)行序列;當(dāng)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的數(shù)據(jù)或執(zhí)行序列已經(jīng)執(zhí)行完時(shí),CPU輸出執(zhí)行結(jié)果至內(nèi)存;當(dāng)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的數(shù)據(jù)或執(zhí)行序列沒有執(zhí)行完時(shí),CPU繼續(xù)在下一 GPU執(zhí)行周期I開始時(shí)開始積攢下一 GPU執(zhí)行周期I內(nèi)的數(shù)據(jù)或執(zhí)行序列直至應(yīng)用程序處理結(jié)束;其中所述GPU執(zhí)行周期I大于等于GPU的最壞處理時(shí)間。具體的,圖1中算法的執(zhí)行序列101,以及一個(gè)內(nèi)存中實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的執(zhí)行序列和數(shù)據(jù)102 ;Pk_1; Pk, Pk+1,Pk+2為GPU執(zhí)行序列中的四個(gè)時(shí)間點(diǎn),每?jī)蓚€(gè)時(shí)間點(diǎn)的差值為
I。I為固定執(zhí)行序列的時(shí)間間隔,即GPU執(zhí)行周期。當(dāng)前所正在處理的實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的執(zhí)行序列,其在I時(shí)間間隔內(nèi)所積攢的工作交由GPU處理時(shí),最大工作量下的最長(zhǎng)處理時(shí)間設(shè)為T (K=I)0在每一批執(zhí)行序列進(jìn)行處理時(shí),其執(zhí)行時(shí)間由輸入數(shù)據(jù)傳輸時(shí)間105、GPU執(zhí)行時(shí)間106、計(jì)算結(jié)果傳出時(shí)間107組成,這些時(shí)間之和小于等于T,且小于等于I。假設(shè)在實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序102中,一個(gè)執(zhí)行序列在時(shí)間點(diǎn)103時(shí)到達(dá),即Plri Pk這個(gè)時(shí)間間隔中到達(dá),CPU將其積攢,并將在時(shí)間點(diǎn)Pk被傳輸至GPU執(zhí)行,最壞情況下,它將在時(shí)間點(diǎn)104如被執(zhí)彳丁完。由于GPU作為輔助計(jì)算設(shè)備,一般是由CPU控制傳輸數(shù)據(jù)以及控制執(zhí)行的,圖2展示了以CPU線程/進(jìn)程控制GPU的流程圖。在系統(tǒng)初始時(shí),設(shè)定好GPU執(zhí)行的時(shí)間間隔后,(PU線程就開始以該時(shí)間間隔為周期,積攢數(shù)據(jù),傳輸并交由GPU執(zhí)行,再傳出數(shù)據(jù)得到結(jié)果。如有需要再對(duì)輸出的結(jié)構(gòu)進(jìn)行后續(xù)的處理,后者交給其它的CPU線程/進(jìn)程進(jìn)行后續(xù)處理。此過程嚴(yán)格的按照預(yù)設(shè)的時(shí)間間隔執(zhí)行,循環(huán)往復(fù)直至應(yīng)用程序執(zhí)行結(jié)束。具體執(zhí)行過程:在本發(fā)明實(shí) 施例中,構(gòu)建了一個(gè)由GPU來加速網(wǎng)絡(luò)數(shù)據(jù)流AES加密以及消息驗(yàn)證的SRTP反向代理應(yīng)用。該反向代理收到服務(wù)器端RTP消息,將消息加密后作為SRTP消息轉(zhuǎn)發(fā)至客戶端。實(shí)施例中采用了正態(tài)分布的方式模擬了網(wǎng)絡(luò)流的到達(dá)時(shí)間以及數(shù)據(jù)大小。本實(shí)施例設(shè)定每個(gè)包在處理過程中可允許的最小延遲為80ms,則設(shè)定執(zhí)行時(shí)間間隔為40ms。GPU的調(diào)用由一個(gè)CPU進(jìn)程控制,CPU進(jìn)程流程如下:DCPU進(jìn)程接收服務(wù)器端發(fā)來的RTP數(shù)據(jù)包,將數(shù)據(jù)包存儲(chǔ)在緩沖區(qū)中,并將其包長(zhǎng)、AES初始向量,AES密鑰等信息記錄。2)CPU進(jìn)程每隔時(shí)間間隔I=40ms就將過去40ms中已經(jīng)接收到的數(shù)據(jù)(這里為RTP包),以及加密所需的信息,如包長(zhǎng)信息、AES初始向量、以及AES密鑰等信息,一起傳輸給GPU。3) CPU進(jìn)程然后發(fā)起AES加密的GPU kernel以及消息驗(yàn)證(HMAC-SHAl)的GPUKernel,以讓GPU執(zhí)行AES加密以及消息驗(yàn)證。4)CPU進(jìn)程在繼續(xù)收到RTP包的同時(shí),等待GPU kernel執(zhí)行結(jié)束,當(dāng)執(zhí)行結(jié)束時(shí),前一批RTP包的加密以及消息驗(yàn)證已經(jīng)完成。其已被加密成SRTP包,CPU進(jìn)程將加密好的數(shù)據(jù)包從GPU傳回主存,并將其轉(zhuǎn)發(fā)至客戶端,完成反向代理的功能。5)以40ms為時(shí)間間隔重復(fù)1-4步。系統(tǒng)的可調(diào)度性以及I的選取:在一個(gè)實(shí)際的網(wǎng)絡(luò)流實(shí)時(shí)系統(tǒng)中,會(huì)有很多的并發(fā)的、定時(shí)到達(dá)的實(shí)時(shí)網(wǎng)絡(luò)流。假設(shè)以S^pi, Wi, (Ii, >來描述一個(gè)流,Pi是這個(gè)流相鄰的兩個(gè)消息到達(dá)的時(shí)間間隔,Wi是這個(gè)每一個(gè)消息的大小,Cli是系統(tǒng)設(shè)定的,是需要在最大的時(shí)間內(nèi)處理這個(gè)流的每一個(gè)消息的時(shí)間限制。對(duì)于當(dāng)前系統(tǒng)中所正在處理的所有的流S= (S1, S2,……Si,……},我們就可以獲得,當(dāng)如系統(tǒng)中最小的處理時(shí)延:D=min I Si 屬于 S};有了系統(tǒng)中所有最小時(shí)延D,就可以確定關(guān)系式T〈=I〈=D/2.
另外,根據(jù)服務(wù)器端的處理需求和連接限制,作為服務(wù)提供商的網(wǎng)絡(luò)處理設(shè)備,這些參數(shù)可以得知,因此也會(huì)相應(yīng)得知當(dāng)前系統(tǒng)的網(wǎng)絡(luò)連接數(shù)N,以及每個(gè)消息的最大工作負(fù)載M (如,MPEG-4視頻流每個(gè)包的最大包長(zhǎng)可以確定),以及該系統(tǒng)所有流所指定的最小處理時(shí)延S。有了 N和M,將可 以確定系統(tǒng)每一個(gè)批次的最長(zhǎng)處理時(shí)間I。將具有M工作負(fù)載的N個(gè)數(shù)據(jù)項(xiàng)交由GPU作處理,衡量時(shí)間,就可以得到該系統(tǒng)最壞處理I。如果1〈=2/2,則該系統(tǒng)是可調(diào)度的,因?yàn)槲覀兛偰艽_定1:K=I〈=2/2 ;因此,該系統(tǒng)是否可調(diào)度,會(huì)在該系統(tǒng)被實(shí)施前決定。為了取得較小延遲,I在區(qū)間內(nèi)可以取I,為了取得最大吞吐,I可以取2/2。但無論如何,I在[I,2/2]取任意值皆可。系統(tǒng)實(shí)時(shí)性的保證:在反向代理運(yùn)行過程中,為了保證所有已建立的連接的實(shí)時(shí)性被保證,系統(tǒng)采用了幾個(gè)閾值以限定當(dāng)前系統(tǒng)負(fù)載。系統(tǒng)維護(hù)兩個(gè)變量η和m,分別表示當(dāng)前系統(tǒng)的連接數(shù),以及所有鏈接中RTP包的最大包長(zhǎng),當(dāng)系統(tǒng)接收新連接以及釋放已有連接時(shí),會(huì)動(dòng)態(tài)更新這兩個(gè)值。當(dāng)接受新連接時(shí),計(jì)算一對(duì)新的值n’,m’。n’ =n+l ;mnew為新連接的RTP包長(zhǎng),當(dāng)m>mnew 時(shí),m’ =m 維持不變,當(dāng) m〈mnOT 時(shí),m’ =mnew.
如果η’〈N且m’〈M,那么表示在添加新連接后,系統(tǒng)仍可維持實(shí)時(shí)性,則接受該新連接并令n=n’,m=m’,否則不接受該新連接。本實(shí)驗(yàn)在AMD A6-3650APU上進(jìn)行離線測(cè)試,設(shè)定I為40ms,可以達(dá)到3.8Gbps的AES加密處理速度。現(xiàn)有的方法尚未能使用GPU來用于實(shí)時(shí)處理。本發(fā)明可以在軟件、固件、硬件或者其結(jié)合中實(shí)現(xiàn)。本發(fā)明可以包括在具有計(jì)算機(jī)可用介質(zhì)的物品中。該介質(zhì)在其中具有例如計(jì)算機(jī)可讀程序代碼裝置或者邏輯(例如指令,代碼,命令等)來提供和使用本發(fā)明的能力。該制造物品可作為計(jì)算機(jī)系統(tǒng)的一部分或者單獨(dú)出售。所有上述變化被認(rèn)為是要求保護(hù)的本發(fā)明的一部分。上述實(shí)例只為說明本發(fā)明的技術(shù)構(gòu)思及特點(diǎn),其目的在于讓熟悉此項(xiàng)技術(shù)的人是能夠了解本發(fā)明的內(nèi)容并據(jù)以實(shí)施,并不能以此限制本發(fā)明的保護(hù)范圍。凡根據(jù)本發(fā)明精神實(shí)質(zhì)所做的等效變換或修飾,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種采用GPU加速進(jìn)行實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的處理方法,其特征在于所述方法中實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序在執(zhí)行前,CPU根據(jù)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序設(shè)置預(yù)定GPU執(zhí)行周期I的定時(shí)器,所述定時(shí)器開始計(jì)時(shí)后,當(dāng)計(jì)時(shí)累計(jì)達(dá)到GPU執(zhí)行周期I時(shí),計(jì)時(shí)歸零并重新開始計(jì)時(shí);所述方法包括以下步驟: (1)CPU開始執(zhí)行實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序,并啟動(dòng)定時(shí)器計(jì)時(shí); (2)CPU積攢實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的數(shù)據(jù)或執(zhí)行序列,并在定時(shí)器的GPU執(zhí)行周期I屆滿時(shí)將積攢的數(shù)據(jù)或執(zhí)行序列傳輸給GPU進(jìn)行處理; (3)GPU接收CPU在上一GPU執(zhí)行周期I內(nèi)積攢的數(shù)據(jù)或執(zhí)行序列,并執(zhí)行CPU傳輸?shù)臄?shù)據(jù)或執(zhí)行序列,將執(zhí)行結(jié)果傳輸給CPU ; (4)CPU接收GPU在上一GPU執(zhí)行周期I內(nèi)的執(zhí)行結(jié)果數(shù)據(jù),并根據(jù)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的執(zhí)行情況判斷是否繼續(xù)在下一 GPU執(zhí)行周期I開始時(shí)開始積攢下一 GPU執(zhí)行周期I內(nèi)的數(shù)據(jù)或執(zhí)行序列;當(dāng)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的數(shù)據(jù)或執(zhí)行序列已經(jīng)執(zhí)行完時(shí),CPU輸出執(zhí)行結(jié)果至內(nèi)存;當(dāng)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的數(shù)據(jù)或執(zhí)行序列沒有執(zhí)行完時(shí),CPU繼續(xù)在下一GTO執(zhí)行周期I開始時(shí)開始積攢下一 GPU執(zhí)行周期I內(nèi)的數(shù)據(jù)或執(zhí)行序列直至應(yīng)用程序處理結(jié)束;其中所述GPU執(zhí)行周期I大于等于GPU的最壞處理時(shí)間。
2.根據(jù)權(quán)利要求1所述的處理方法,其特征在于所述方法中GPU執(zhí)行周期I是根據(jù)實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序、GPU、CPU的參數(shù)進(jìn)行直接確定,GPU執(zhí)行周期I小于等于T/2,其中T為實(shí)時(shí)網(wǎng)絡(luò)流應(yīng)用程序的執(zhí)行序列中GPU的最壞處理時(shí)間。
3.根據(jù)權(quán)利要求1所述的處理方法,其特征在于所述方法中GPU的最壞處理時(shí)間包括GPU輸入數(shù)據(jù)傳輸時(shí)間、GPU執(zhí)行批處理時(shí)間、GPU計(jì)算結(jié)果傳出時(shí)間,其GPU的最壞處理時(shí)間是通過預(yù)估得到。
4.根據(jù)權(quán)利要求1所述的處理方法,其特征在于所述方法中當(dāng)GPU集成在CPU芯片中時(shí),數(shù)據(jù)無需通過PCIE進(jìn)行傳輸和拷貝,要交給GPU的數(shù)據(jù)可直接讀取內(nèi)存獲得,或者內(nèi)存中拷貝。
5.根據(jù)權(quán)利要求1所述的處理方法,其特征在于所述方法中當(dāng)應(yīng)用程序的最大流量確定時(shí),采用逐步接受新連接的估計(jì)的方法判斷是否達(dá)到應(yīng)用程序的最大流量,使得當(dāng)前所處理的所有網(wǎng)絡(luò)連接中,每個(gè)時(shí)間間隔I的每一批次的GPU處理時(shí)間都不超過I。
全文摘要
本發(fā)明公開了一種采用GPU加速實(shí)時(shí)網(wǎng)絡(luò)流處理的調(diào)度方法,其特征在于所述方法中CPU根據(jù)需要加速處理的應(yīng)用程序設(shè)置GPU執(zhí)行周期I;所述GPU執(zhí)行周期I大于等于GPU的最壞處理時(shí)間;包括以下步驟(1)CPU接收GPU在上一GPU執(zhí)行周期I內(nèi)的計(jì)算結(jié)果,并在下一批處理時(shí)間周期開始時(shí),CPU開始積攢GPU執(zhí)行周期I內(nèi)的數(shù)據(jù)或執(zhí)行序列;(2)當(dāng)下一批處理時(shí)間周期截止時(shí),CPU將GPU執(zhí)行周期I內(nèi)的數(shù)據(jù)或執(zhí)行序列傳輸給GPU進(jìn)行處理;按照(1)~(2)步驟循環(huán)直至應(yīng)用程序處理結(jié)束。該方法利用GPU獲得高吞吐量的同時(shí),保證了所有網(wǎng)絡(luò)流的實(shí)時(shí)性處理。
文檔編號(hào)H04L12/801GK103207775SQ20131007566
公開日2013年7月17日 申請(qǐng)日期2013年3月11日 優(yōu)先權(quán)日2013年3月11日
發(fā)明者張凱, 華蓓, 祖淵, 江盛杰 申請(qǐng)人:中國科學(xué)技術(shù)大學(xué)蘇州研究院