專(zhuān)利名稱(chēng):有效率的多個(gè)過(guò)濾器包統(tǒng)計(jì)生成的制作方法
有效率的多個(gè)過(guò)濾器包統(tǒng)計(jì)生成
背景技術(shù):
聯(lián)網(wǎng)時(shí),計(jì)算機(jī)通過(guò)經(jīng)由設(shè)計(jì)用于聯(lián)網(wǎng)目的的共享信道發(fā)送和接收信息而彼此通信。網(wǎng)絡(luò)接口卡(NIC)-其是安裝在計(jì)算機(jī)上的硬件裝置,是用來(lái)實(shí)現(xiàn)聯(lián)網(wǎng)并且用來(lái)支持由計(jì)算機(jī)用戶(hù)維持的聯(lián)網(wǎng)偏好設(shè)定。例如,NIC用于將稱(chēng)為MAC(媒體訪問(wèn)控制)的唯一地址分配到將所述NIC安裝在其上的計(jì)算機(jī)。NIC還包括集線器或交換器,所述集線器或交換器行為表現(xiàn)為使用MAC地址在計(jì)算機(jī)之間傳遞信息的中繼器。NIC被計(jì)算機(jī)用于接收輸入數(shù)據(jù)流。由于多數(shù)操作系統(tǒng)包括用于讀取所有到NIC的包的一般實(shí)用程序,所以計(jì)算機(jī)通常使用這種一般實(shí)用程序來(lái)操作所安裝的NIC。應(yīng)用程序通常通過(guò)使用如在操作系統(tǒng)中提供的一般實(shí)用程序,或通過(guò)使用相似實(shí)用程序來(lái)并入這種實(shí)用程序。在這種背景下,輸入數(shù)據(jù)流的典型處理將包括接收包,檢查所述包和維護(hù)具有關(guān)于所述包的信息的某些主內(nèi)存數(shù)據(jù)結(jié)構(gòu)。圖I示出這種處理。在圖I中,具有多個(gè)中央處理單元的計(jì)算機(jī)110接收三個(gè)滿(mǎn)包數(shù)據(jù)流120a、120b和120c,使用三個(gè)不同進(jìn)程(進(jìn)程I (140a)、進(jìn)程II (140b)和進(jìn)程III (140c))處理所述滿(mǎn)包數(shù)據(jù)流120a、120b和120c。三個(gè)進(jìn)程140a、進(jìn)程140b和進(jìn)程140c是獨(dú)立的進(jìn)程。存在若干與現(xiàn)有技術(shù)架構(gòu)相關(guān)的缺點(diǎn)。首先,存在起因于運(yùn)行一個(gè)以上全孔網(wǎng)絡(luò)接口包捕獲進(jìn)程的低效率。例如,需要大量的計(jì)算機(jī)處理資源來(lái)處理這類(lèi)流。如果每個(gè)進(jìn)程是單獨(dú)的,那么需要計(jì)算機(jī)資源迅速地增大到無(wú)法運(yùn)行多個(gè)應(yīng)用程序的點(diǎn)。第二個(gè)缺點(diǎn)源自將主內(nèi)存數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)儲(chǔ)到磁盤(pán)文件的需要。在轉(zhuǎn)儲(chǔ)過(guò)程期間,包可能丟失并且應(yīng)用程序不對(duì)其計(jì)數(shù)。當(dāng)監(jiān)視輸入數(shù)據(jù)時(shí),這些缺點(diǎn)會(huì)由于當(dāng)多個(gè)獨(dú)立進(jìn)程和應(yīng)用程序同時(shí)在計(jì)算機(jī)上運(yùn)行時(shí)需要大量資源來(lái)監(jiān)視數(shù)據(jù)而造成諸多問(wèn)題。因此,期望有一種增強(qiáng)數(shù)據(jù)監(jiān)視能力并且有效捕獲和處理包流,同時(shí)減少丟失的數(shù)據(jù),硬件/軟件成本、操作成本和網(wǎng)絡(luò)成本的計(jì)算機(jī)架構(gòu)。發(fā)明概述本發(fā)明的實(shí)施方案提供用于通過(guò)增強(qiáng)數(shù)據(jù)監(jiān)視能力,同時(shí)減少硬件/軟件成本、操作成本和網(wǎng)絡(luò)成本而有效管理數(shù)據(jù)流的技術(shù)。通過(guò)提供一種將每個(gè)使用高速包捕獲和過(guò)濾的至少兩個(gè)不同應(yīng)用程序組合到一個(gè)機(jī)器中的機(jī)構(gòu)管理數(shù)據(jù)流。在本發(fā)明的實(shí)施方案中,一個(gè)機(jī)器上的軟件進(jìn)程和線程經(jīng)過(guò)架構(gòu)使得引入經(jīng)由共享內(nèi)存通信的兩個(gè)單獨(dú)進(jìn)程。第一進(jìn)程處理與網(wǎng)絡(luò)對(duì)接的所有包并且第二進(jìn)程處理統(tǒng)計(jì)到磁盤(pán)文件的保存。因此,雖然第二進(jìn)程將統(tǒng)計(jì)轉(zhuǎn)儲(chǔ)到磁盤(pán)文件,但是第一進(jìn)程仍捕獲包并且將其放在緩沖器中以供稍后檢查。第一進(jìn)程和第二進(jìn)程是異步的。此外,對(duì)于每個(gè)應(yīng)用程序,第一進(jìn)程可具有獨(dú)立的緩沖器。共享內(nèi)存可為消息隊(duì)列。根據(jù)本發(fā)明的實(shí)施方案,一種用于管理數(shù)據(jù)流的方法包括在至少一個(gè)網(wǎng)絡(luò)接口卡上接收數(shù)據(jù)流和使用運(yùn)行用于每個(gè)網(wǎng)絡(luò)接口卡的若干第一線程的第一進(jìn)程對(duì)所述數(shù)據(jù)流 執(zhí)行操作。使用運(yùn)行若干第一線程的第一進(jìn)程執(zhí)行的操作包括生成所述數(shù)據(jù)流的多個(gè)拷貝;將所述數(shù)據(jù)流的多個(gè)拷貝分布在由第一進(jìn)程使用的多個(gè)緩沖器當(dāng)中;和將每個(gè)所述數(shù)據(jù)流的多個(gè)拷貝的一部分存儲(chǔ)在共享內(nèi)存中。所述方法還包括使用每個(gè)具有選用組第二線程的至少一組第二多個(gè)程序?qū)λ鰯?shù)據(jù)流中經(jīng)過(guò)處理的部分執(zhí)行附加操作。所述附加操作包括從要由第二進(jìn)程使用的共享內(nèi)存中讀取數(shù)據(jù),所述第二進(jìn)程可執(zhí)行內(nèi)存區(qū)間分析以生成統(tǒng)計(jì),并且將所述統(tǒng)計(jì)周期性地保存到區(qū)間文件。所述第一進(jìn)程和所述一組或多組第二多個(gè)進(jìn)程是獨(dú)立的并且經(jīng)由所述共享內(nèi)存通信。所述每個(gè)網(wǎng)絡(luò)接口卡的第一線程可不同于第二線程組。
每個(gè)所述數(shù)據(jù)流的多個(gè)拷貝可存儲(chǔ)在單獨(dú)一個(gè)的所述多個(gè)緩沖器中。此外,可將所述數(shù)據(jù)流的多個(gè)拷貝的每個(gè)部分存儲(chǔ)在單獨(dú)共享內(nèi)存中。根據(jù)本發(fā)明的另一實(shí)施方案,一種用于管理數(shù)據(jù)流的系統(tǒng)包括至少一個(gè)網(wǎng)絡(luò)接口卡,其接收數(shù)據(jù)流;和第一處理器,其耦合到至少一個(gè)所述網(wǎng)絡(luò)接口卡并且將所述數(shù)據(jù)流分布在一個(gè)或多個(gè)緩沖器當(dāng)中。所述第一處理器被配置來(lái)運(yùn)行使用用于每個(gè)網(wǎng)絡(luò)接口卡的一個(gè)或多個(gè)第一線程的第一進(jìn)程。所述一個(gè)或多個(gè)第一線程訪問(wèn)存儲(chǔ)在所述一個(gè)或多個(gè)緩沖器中的數(shù)據(jù)、處理所述訪問(wèn)的數(shù)據(jù)并且將所述經(jīng)過(guò)處理的數(shù)據(jù)存儲(chǔ)在一個(gè)或多個(gè)共享內(nèi)存中。所述一個(gè)或多個(gè)第一線程可為了特定特征而過(guò)濾從所述一個(gè)或多個(gè)緩沖器中訪問(wèn)的數(shù)據(jù),并且將具有特定特征的數(shù)據(jù)保存在特定共享內(nèi)存中。所述第一處理器可分布由所述網(wǎng)絡(luò)卡接收的數(shù)據(jù)流的拷貝并且將所述拷貝存儲(chǔ)在所述緩沖器之一中。所述系統(tǒng)還包括從所述共享內(nèi)存中讀取數(shù)據(jù)的至少一組第二多個(gè)進(jìn)程。所述至少一組第二多個(gè)進(jìn)程每個(gè)均可使用選用組的第二線程。所述組的第二線程可用于分析數(shù)據(jù)以生成內(nèi)存中區(qū)間統(tǒng)計(jì),并且將所述統(tǒng)計(jì)周期性地保存到區(qū)間文件。所述共享內(nèi)存可為隊(duì)列。所述第一進(jìn)程和所述一組或多組第二多個(gè)進(jìn)程是獨(dú)立的并且經(jīng)由所述共享內(nèi)存而通信。從后文提供的詳述中本公開(kāi)的適用性的其它領(lǐng)域?qū)⒆兊蔑@而易知。應(yīng)當(dāng)了解希望詳述和特定實(shí)施例在指示各種實(shí)施方案時(shí)僅為了闡釋目的,并且不希望必定限制本公開(kāi)的范疇。附圖
簡(jiǎn)述可以參考下文呈現(xiàn)的說(shuō)明書(shū)和圖示的剩余部分領(lǐng)悟?qū)Ρ景l(fā)明的特性和優(yōu)點(diǎn)的深入了解。圖示被并入本發(fā)明的詳述部分中。圖I是示出用于接收計(jì)算機(jī)系統(tǒng)中的包并且為所述包定路徑的現(xiàn)有技術(shù)架構(gòu)的方框圖。圖2是示出根據(jù)本發(fā)明的實(shí)施方案的用于使用兩個(gè)進(jìn)程接收計(jì)算機(jī)系統(tǒng)中的包并且為所述包定路徑的架構(gòu)的方框圖。圖3是示出根據(jù)本發(fā)明的實(shí)施方案的用于分類(lèi)/合并/聚集數(shù)據(jù)的架構(gòu)的方框圖。圖4是示出根據(jù)本發(fā)明的實(shí)施方案的用于管理數(shù)據(jù)流的方法的流程圖。圖5是示出根據(jù)本發(fā)明的實(shí)施方案的來(lái)自圖4的操作410的其它詳情的流程圖。圖6是示出根據(jù)本發(fā)明的實(shí)施方案的來(lái)自圖4的操作415的其它詳情的流程圖。圖7是示出根據(jù)本發(fā)明的實(shí)施方案的管理數(shù)據(jù)流的方法的流程圖。圖8是示出根據(jù)本發(fā)明的實(shí)施方案的管理數(shù)據(jù)的方法的流程圖。
具體實(shí)施方案
在下文描述中,為了說(shuō)明目的,陳述特定詳情以提供對(duì)本發(fā)明的徹底了解。然而,將顯而易知的是可以在沒(méi)有這些特定詳情的情況下實(shí)踐本發(fā)明。本發(fā)明的實(shí)施方案提供用于通過(guò)增強(qiáng)數(shù)據(jù)監(jiān)視能力,同時(shí)減少硬件/軟件成本、操作成本和網(wǎng)絡(luò)成本而有效管理數(shù)據(jù)流的系統(tǒng)和方法。監(jiān)視是通過(guò)將使用高速包捕獲和過(guò)濾的至少兩種不同應(yīng)用程序組合到一個(gè)機(jī)器中而得到增強(qiáng)。本發(fā)明通過(guò)提供一種系統(tǒng)和方法而減少這些成本,所述系統(tǒng)和方法有效管理通過(guò)網(wǎng)絡(luò)接口卡到達(dá)機(jī)器的數(shù)據(jù)流。本發(fā)明在具有多核心(例如,八個(gè)核心)的機(jī)器中特別有用,因?yàn)槠渫ㄟ^(guò)一個(gè)核心實(shí)現(xiàn)數(shù)據(jù)的有效處理而不會(huì)使其它核心變慢或關(guān)閉。此外,本發(fā)明增強(qiáng)所有產(chǎn)品的監(jiān)視能力。在本發(fā)明的實(shí)施方案中,一個(gè)機(jī)器上的軟件進(jìn)程和線程經(jīng)過(guò)架構(gòu)使得引入經(jīng)由共享內(nèi)存(例如消息隊(duì)列)通信的兩個(gè)單獨(dú)進(jìn)程。第一進(jìn)程處理與網(wǎng)絡(luò)對(duì)接的所有數(shù)據(jù)包,而且第二進(jìn)程分析數(shù)據(jù)包且生成統(tǒng)計(jì)。使用第一進(jìn)程處理與網(wǎng)絡(luò)對(duì)接的所有數(shù)據(jù)包,消除維護(hù)每個(gè)應(yīng)用程序的多個(gè)接口的額外開(kāi)銷(xiāo)。隨著第一進(jìn)程捕獲數(shù)據(jù)包并且將其保存在緩沖器中以供稍后檢查,第二進(jìn)程編譯關(guān)于數(shù)據(jù)包的統(tǒng)計(jì)并且將這些統(tǒng)計(jì)保存到磁盤(pán)文件,而不使第一進(jìn)程變慢。第一進(jìn)程和第二進(jìn)程經(jīng)由共享內(nèi)存(例如隊(duì)列)通信。此外,對(duì)于每個(gè)應(yīng)用程序,第一進(jìn)程可具有獨(dú)立的緩沖器。這種架構(gòu)消除或減少了丟失的包的數(shù)目。本發(fā)明的實(shí)施方案可以用硬件、軟件或其組合實(shí)施。可以將本發(fā)明的組件并成獨(dú)立系統(tǒng),所述獨(dú)立系統(tǒng)被配置來(lái)處理用于使用至少一個(gè)網(wǎng)絡(luò)接口卡(NIC)進(jìn)行處理的信息。還可以將本發(fā)明的組件并入一個(gè)或多個(gè)系統(tǒng)(其可以是分布式的)中,使所述系統(tǒng)或多個(gè)系統(tǒng)能夠接收和處理從網(wǎng)絡(luò)中接收用于使用NIC進(jìn)行處理的信息。例如,可將本發(fā)明的一個(gè)實(shí)施方案并入網(wǎng)絡(luò)裝置(例如交換器或路由器)中,從而使所述網(wǎng)絡(luò)裝置能夠使用NIC接收和處理IP地址。圖2是示出用于使用兩個(gè)進(jìn)程而接收計(jì)算機(jī)系統(tǒng)中的包并且為所述包定路徑的架構(gòu)的方框圖。所述架構(gòu)包括通過(guò)共享內(nèi)存215a、215b和215c而彼此通信的第一進(jìn)程205和第二進(jìn)程210。雖然圖3示出了三個(gè)共享內(nèi)存215a、215b和215c,但是共享內(nèi)存的數(shù)目可為N,其中N是大于或等于I的有限整數(shù)。第一進(jìn)程205接收滿(mǎn)包數(shù)據(jù)流220并且通過(guò)包分布模塊225分布數(shù)據(jù)流220。數(shù)據(jù)流220被分布到可為了特定目的,例如存儲(chǔ)不同數(shù)據(jù)類(lèi)型而配置的一個(gè)或多個(gè)包緩沖器230a、230b和230c。例如,圖2示出指定為“類(lèi)型A包緩沖器” 230a、“類(lèi)型B包緩沖器” 230b和“類(lèi)型C包緩沖器” 230c的三個(gè)包緩沖器。包緩沖器230a、230b和230c每個(gè)可專(zhuān)用于僅存儲(chǔ)識(shí)別為類(lèi)型A、類(lèi)型B和類(lèi)型C的數(shù)據(jù)流220的部分。包分布模塊225將輸入滿(mǎn)包數(shù)據(jù)流解析成類(lèi)型A、類(lèi)型B和類(lèi)型C并且將數(shù)據(jù)推送到適當(dāng)?shù)陌彌_器230a、230b和230c。在替代實(shí)施方案中類(lèi)型A包緩沖器230a、類(lèi)型B包緩沖器230b和類(lèi)型C包緩沖器230c每個(gè)可用于存儲(chǔ)相同信息,在這種情況下,包分布模塊225將相同數(shù)據(jù)推送到每個(gè)包緩沖器230a、230b和230c。過(guò)濾器235a、235b和235c每個(gè)用于分別從包緩沖器230a、230b和230c中拉取數(shù)據(jù)。然后,拉取的數(shù)據(jù)被過(guò)濾成特定類(lèi)型的數(shù)據(jù)以使之通過(guò)。例如,類(lèi)型A過(guò)濾器235a可過(guò)濾數(shù)據(jù)使得僅僅拉取類(lèi)型A數(shù)據(jù)。相似地,類(lèi)型B過(guò)濾器235b可過(guò)濾數(shù)據(jù),使得僅拉取 類(lèi)型B數(shù)據(jù)并且類(lèi)型C過(guò)濾器235c可過(guò)濾數(shù)據(jù)使得僅僅拉取類(lèi)型C數(shù)據(jù)。一旦數(shù)據(jù)已被過(guò)濾器235a、235b和235c拉取和過(guò)濾,過(guò)濾的數(shù)據(jù)就被推送到共享內(nèi)存215a、215b和215c中。共享內(nèi)存可包括單獨(dú)的共享內(nèi)存215a、215b和215c,其每個(gè)用于存儲(chǔ)已被過(guò)濾器235a、235b和235c過(guò)濾的數(shù)據(jù)。因此,共享內(nèi)存215a存儲(chǔ)已被“類(lèi)型A過(guò)濾器” 235a推送到其上的類(lèi)型A數(shù)據(jù)。相似地,共享內(nèi)存215b存儲(chǔ)已被“類(lèi)型B過(guò)濾器” 235b推送到其上的類(lèi)型B數(shù)據(jù),并且共享內(nèi)存215c存儲(chǔ)已被“類(lèi)型C過(guò)濾器” 235c推送到其上的類(lèi)型C數(shù)據(jù)。第 二進(jìn)程210從共享內(nèi)存215a、215b和215c中拉取數(shù)據(jù),處理這個(gè)數(shù)據(jù)并且將經(jīng)過(guò)處理的數(shù)據(jù)周期性地轉(zhuǎn)儲(chǔ)到文件中。第二進(jìn)程210包括第一子處理模塊240a,其從共享內(nèi)存215a中拉取數(shù)據(jù);第二子處理模塊240b,其從共享內(nèi)存215b中拉取數(shù)據(jù);和第三子處理模塊240c,其從共享內(nèi)存215c中拉取數(shù)據(jù)。子處理模塊240a包括類(lèi)型A模塊245a,其用于處理從含有類(lèi)型A數(shù)據(jù)的共享內(nèi)存215a中拉取的類(lèi)型A數(shù)據(jù);和內(nèi)存中區(qū)間統(tǒng)計(jì)模塊250a,其用于對(duì)經(jīng)過(guò)處理的類(lèi)型A數(shù)據(jù)執(zhí)行統(tǒng)計(jì)分析。子處理模塊240b包括類(lèi)型B模塊245b,其處理從含有類(lèi)型B數(shù)據(jù)的共享內(nèi)存215b中拉取的類(lèi)型B數(shù)據(jù);和內(nèi)存中區(qū)間統(tǒng)計(jì)模塊250b,其用于對(duì)經(jīng)過(guò)處理的類(lèi)型B數(shù)據(jù)執(zhí)行統(tǒng)計(jì)分析。子處理模塊240c包括類(lèi)型C模塊245c,其處理從含有類(lèi)型C數(shù)據(jù)的共享內(nèi)存215c中拉取的類(lèi)型C數(shù)據(jù);和內(nèi)存中區(qū)間統(tǒng)計(jì)模塊250c,其用于對(duì)經(jīng)過(guò)處理的類(lèi)型C數(shù)據(jù)執(zhí)行統(tǒng)計(jì)分析。如下文參考圖3另作說(shuō)明,在由子處理模塊240a、240b和240c處理數(shù)據(jù)后,將經(jīng)過(guò)處理的數(shù)據(jù)周期性地轉(zhuǎn)儲(chǔ)到文件。在圖2中示出的架構(gòu)可用于一個(gè)具有多個(gè)中央處理單元(CPU)的計(jì)算機(jī)。第一進(jìn)程205可運(yùn)行具有用于類(lèi)型A、類(lèi)型B和類(lèi)型C的不同子線程的單個(gè)進(jìn)程I。第二進(jìn)程210還可以運(yùn)行具有用于類(lèi)型A、類(lèi)型B和類(lèi)型C的不同子線程的單個(gè)進(jìn)程II。在一個(gè)實(shí)施方案中,第一進(jìn)程205對(duì)數(shù)據(jù)流執(zhí)行操作,在一個(gè)或多個(gè)網(wǎng)絡(luò)接口卡上使用運(yùn)行用于每個(gè)網(wǎng)絡(luò)接口卡的至少一個(gè)子線程的第一進(jìn)程接收所述數(shù)據(jù)流。接收的數(shù)據(jù)的部分分布在包緩沖器230a、230b和230c當(dāng)中以由至少一個(gè)或多個(gè)子線程來(lái)處理。然后,用專(zhuān)用第一進(jìn)程子線程(其是所述至少一個(gè)或多個(gè)子線程之一)處理存儲(chǔ)在包緩沖器230a、230b和230c中的數(shù)據(jù)的部分。然后,將數(shù)據(jù)的處理部分存儲(chǔ)在共享內(nèi)存215a、215b和215c中。然后,第二進(jìn)程210使用每個(gè)具有選用組第二線程的至少一組第二多個(gè)子進(jìn)程240a、240b和240c對(duì)數(shù)據(jù)流中經(jīng)過(guò)處理的部分執(zhí)行操作。然后,第二多個(gè)子進(jìn)程240a、240b和240c從各自共享內(nèi)存215a、215b和215c中拉取數(shù)據(jù),并且用專(zhuān)用第二進(jìn)程線程處理每個(gè)數(shù)據(jù)中經(jīng)過(guò)處理的部分。第一進(jìn)程和一組或多組第二多個(gè)子進(jìn)程是獨(dú)立的并且經(jīng)由共享內(nèi)存通信。此外,每個(gè)網(wǎng)絡(luò)接口卡的子線程可不同于選用組的第二線程。圖2還示出機(jī)器上的軟件進(jìn)程和線程如何被架構(gòu)使得引入經(jīng)由共享內(nèi)存(例如消息隊(duì)列)通信的兩個(gè)單獨(dú)進(jìn)程。第一進(jìn)程處理與網(wǎng)絡(luò)對(duì)接的所有數(shù)據(jù)包,并且第二進(jìn)程分析數(shù)據(jù)包和生成統(tǒng)計(jì)。使用第一進(jìn)程處理與網(wǎng)絡(luò)對(duì)接的所有數(shù)據(jù)包,消除維護(hù)每個(gè)應(yīng)用程序的多個(gè)接口的巨大額外開(kāi)銷(xiāo)。隨著第一進(jìn)程捕獲數(shù)據(jù)包并且將其保存在緩沖器中以供稍后檢查,第二進(jìn)程編譯關(guān)于數(shù)據(jù)包的統(tǒng)計(jì)并且將這些統(tǒng)計(jì)保存到磁盤(pán)文件,而不使第一進(jìn)程變慢。第一進(jìn)程和第二進(jìn)程經(jīng)由共享內(nèi)存(例如隊(duì)列)通信。此外,對(duì)于每個(gè)應(yīng)用程序,第一進(jìn)程可具有獨(dú)立的緩沖器。這種架構(gòu)消除或減少了丟失的包的數(shù)目。圖3是示出用于分類(lèi)/合并/聚集數(shù)據(jù)的架構(gòu)的方框圖,由子處理模塊240a、240b和240c將所述數(shù)據(jù)周期性地轉(zhuǎn)儲(chǔ)到文件。圖3示出分別周期性地轉(zhuǎn)儲(chǔ)到區(qū)間文件305a、305b和305c的類(lèi)型A數(shù)據(jù)、類(lèi)型B數(shù)據(jù)和類(lèi)型C數(shù)據(jù)。然后,分類(lèi)/合并/聚集處理模塊310a拉取存儲(chǔ)在區(qū)間文件305a中的數(shù)據(jù),處理數(shù)據(jù)使得所述數(shù)據(jù)被分類(lèi)/被合并/被聚集,并且然后將經(jīng)過(guò)分類(lèi)/合并/聚集的數(shù)據(jù)推送到存儲(chǔ)其的分類(lèi)/合并/聚集文件315a。分類(lèi)/合并/聚集處理模塊310a可執(zhí)行任何或所有的分類(lèi)、合并或聚集功能以及其它功能。相似地,分類(lèi)/合并/聚集處理模塊310b和310c還分別拉取存儲(chǔ)在區(qū)間文件305b和305c中的數(shù)據(jù),處理數(shù)據(jù)使得所述數(shù)據(jù)被分類(lèi)/合并/聚集,并且然后將經(jīng)過(guò)分類(lèi)/合并/聚集的數(shù)據(jù)推送到存儲(chǔ)其的分類(lèi)/合并/聚集的文件315b和315c。分類(lèi)/合并/聚集處理模塊310b和310c還可執(zhí)行任何或所有的分類(lèi)、合并或聚集功能以及其它功能。然后,文件傳送環(huán)320a從分類(lèi)/合并/聚集的文件315a中拉取數(shù)據(jù)并且將拉取的數(shù)據(jù)推出以供另外處理。相似地,文件傳送環(huán)320b和320c還分別從分類(lèi)/合并/聚集的文件315b和315c中拉取數(shù)據(jù)并且將拉取的數(shù)據(jù)推出以供另外處理。
圖4示出根據(jù)本發(fā)明的實(shí)施方案的管理數(shù)據(jù)流的方法的流程圖。所述方法開(kāi)始于其中至少一個(gè)網(wǎng)絡(luò)接口卡接收數(shù)據(jù)流的操作405。在410中運(yùn)行每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)第一線程的第一進(jìn)程處理數(shù)據(jù)流。下文參考圖5詳細(xì)討論在操作410中執(zhí)行的處理。然后在步驟415中,使用至少一組第二多個(gè)進(jìn)程再次處理數(shù)據(jù)流中經(jīng)過(guò)處理的部分,其中每個(gè)進(jìn)程具有選用組的第二線程。下文參考圖6詳細(xì)討論在操作415中執(zhí)行的處理。第一進(jìn)程和一組或多組第二多個(gè)進(jìn)程是獨(dú)立的并且經(jīng)由共享內(nèi)存通信。此外,用于每個(gè)網(wǎng)絡(luò)接口卡的子線程可不同于所述組的第二線程。圖5是示出根據(jù)本發(fā)明的實(shí)施方案的來(lái)自圖4且用于管理數(shù)據(jù)流的操作410的另外詳情的流程圖。在操作505中,將接收的數(shù)據(jù)流的多個(gè)部分分布在多個(gè)緩沖器當(dāng)中并且存儲(chǔ)在所述緩沖器中以由第一線程來(lái)處理。在某些實(shí)施方案中,將數(shù)據(jù)流的每個(gè)部分存儲(chǔ)在多個(gè)緩沖器的單獨(dú)一個(gè)中。在其它實(shí)施方案中,將相同數(shù)據(jù)流的副本存儲(chǔ)在每個(gè)多個(gè)緩沖器中。然后在操作510中,使用專(zhuān)用第一進(jìn)程線程讀取存儲(chǔ)在每個(gè)緩沖器中的數(shù)據(jù)。專(zhuān)用第一進(jìn)程線程是選自所述組的第一線程。在操作515中,使用相同的專(zhuān)用第一進(jìn)程線程過(guò)濾從緩沖器中讀取的數(shù)據(jù)以生成數(shù)據(jù)流的經(jīng)處理部分。在操作520中,可使用相同組的進(jìn)程線程再次處理經(jīng)過(guò)過(guò)濾的數(shù)據(jù)。然后在操作525中,將每個(gè)數(shù)據(jù)流中經(jīng)過(guò)處理的部分存儲(chǔ)在專(zhuān)用的共享內(nèi)存之一中。在某些實(shí)施方案中,數(shù)據(jù)流中每個(gè)經(jīng)過(guò)處理的部分存儲(chǔ)在單獨(dú)的共享內(nèi)存中。或者,可使用不同的專(zhuān)用第一進(jìn)程線程讀取、過(guò)濾和處理數(shù)據(jù)。圖6是示出根據(jù)本發(fā)明的實(shí)施方案的來(lái)自圖4且用于管理數(shù)據(jù)流的操作415的另外詳情的流程圖。在操作605中,用專(zhuān)用第二進(jìn)程線程讀取在操作525期間存儲(chǔ)在專(zhuān)用共享內(nèi)存之一中的數(shù)據(jù)流中經(jīng)過(guò)處理的部分。所述專(zhuān)用第二進(jìn)程線程是來(lái)自第二過(guò)程進(jìn)程線程組組的線程之一。然后在操作610中,對(duì)讀取的數(shù)據(jù)執(zhí)行統(tǒng)計(jì)分析。可用相同的專(zhuān)用第二進(jìn)程線程或用來(lái)自第二過(guò)程進(jìn)程線程組組的另一線程執(zhí)行統(tǒng)計(jì)分析。統(tǒng)計(jì)分析還生成統(tǒng)計(jì)數(shù)據(jù)。在操作615中,將統(tǒng)計(jì)數(shù)據(jù)周期性地保存到區(qū)間文件。將統(tǒng)計(jì)數(shù)據(jù)周期性地保存到文件可由用戶(hù)配置或可例如每天一次或每小時(shí)一次。在另一實(shí)施方案中,當(dāng)統(tǒng)計(jì)數(shù)據(jù)的大小達(dá)到某個(gè)閥值時(shí),統(tǒng)計(jì)數(shù)據(jù)可周期性地保存到區(qū)間文件。在參考圖5-6描述的實(shí)施方案中,每個(gè)具有選用組第二線程的第一進(jìn)程和一組或多組第二多個(gè)進(jìn)程是獨(dú)立的并且經(jīng)由共享內(nèi)存而彼此通信。每個(gè)網(wǎng)絡(luò)接口卡的第一線程組可不同于選用組的第二線程。在某些實(shí)施方案中,第一進(jìn)程和一組或多組第二多個(gè)子進(jìn)程是異步的。圖7是示出根據(jù)本發(fā)明的實(shí)施方案的管理數(shù)據(jù)流的另一方法的流程圖。所述方法開(kāi)始于至少一個(gè)網(wǎng)絡(luò)接口卡接收數(shù)據(jù)流的步驟705。在操作710中,生成接收的數(shù)據(jù)流的多個(gè)拷貝。然后在操作715中,將數(shù)據(jù)流的多個(gè)拷貝分布到多個(gè)緩沖器。然后,讀取多個(gè)緩沖器并且使用運(yùn)行每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)第一線程的第一進(jìn)程處理數(shù)據(jù)。使用相同第一線程過(guò)濾從緩沖器中讀取的數(shù)據(jù)以生成數(shù)據(jù)流的經(jīng)過(guò)處理的部分。如果若干線程正同時(shí)運(yùn)行,那么來(lái)自每個(gè)所述多個(gè)緩沖器的數(shù)據(jù)可由每個(gè)線程讀取,并且然后由每個(gè)線程過(guò)濾使得每個(gè)線程僅允許通過(guò)特定類(lèi)型的數(shù)據(jù)。這種過(guò)濾進(jìn)程可用于解析數(shù)據(jù)流使得每個(gè)線程僅處理特定類(lèi)型的數(shù)據(jù)。然后在操作720中,將數(shù)據(jù)流中經(jīng)過(guò)處理的部分存儲(chǔ)在專(zhuān)用共享內(nèi)存之一中。由于每個(gè)線程濾出不同類(lèi)型的數(shù)據(jù),所以多個(gè)共享內(nèi)存每個(gè)可用于存儲(chǔ)為原始數(shù)據(jù)流的所有部分的特定類(lèi)型的數(shù)據(jù)。用于讀取和過(guò)濾特定類(lèi)型的數(shù)據(jù)的線程可專(zhuān)用于特定類(lèi)型的數(shù)據(jù)。例如,一個(gè)線程可用于讀取數(shù)據(jù),過(guò)濾類(lèi)型A數(shù)據(jù)的數(shù)據(jù),并且將類(lèi)型A數(shù)據(jù)存儲(chǔ)在共享內(nèi)存中。相似地,另一線程可用于讀取數(shù)據(jù),過(guò)濾類(lèi)型B數(shù)據(jù)的數(shù)據(jù),并且將類(lèi)型B數(shù)據(jù)存儲(chǔ)在共享內(nèi)存中。這種情況可被一般化使得N個(gè)線程(其中N是大于或等于I的有限整數(shù))可用于讀取數(shù)據(jù),過(guò)濾N種類(lèi)型的數(shù)據(jù)的數(shù)據(jù),并且將N種類(lèi)型的數(shù)據(jù)存儲(chǔ)在共享內(nèi)存中。在操作725中,使用每個(gè)具有選用組第二線程的至少一組第二多個(gè)子進(jìn)程讀取存儲(chǔ)在共享內(nèi)存中的數(shù)據(jù)流的經(jīng)過(guò)處理的部分??捎貌煌诘诙€程的線程或?qū)S镁€程讀取每個(gè)共享內(nèi)存。然后在操作730中,對(duì)從共享內(nèi)存中讀取的數(shù)據(jù)流的部分執(zhí)行統(tǒng)計(jì)分析??捎糜糜趶墓蚕韮?nèi)存中讀取數(shù)據(jù)的相同線程或用來(lái)自第二進(jìn)程線程組的另一線程完成統(tǒng)計(jì)分析。用于讀取和/或分析存儲(chǔ)在特定共享內(nèi)存中的數(shù)據(jù)的線程可為專(zhuān)用的第二進(jìn)程線程。統(tǒng)計(jì)分析還生成統(tǒng)計(jì)數(shù)據(jù)。在操作735中,將統(tǒng)計(jì)數(shù)據(jù)周期性地保存到區(qū)間文件。將統(tǒng)計(jì)數(shù)據(jù)周期性地保存到文件可由用戶(hù)配置或可例如每天一次或每小時(shí)一次。在另一實(shí)施方案中,當(dāng)統(tǒng)計(jì)數(shù)據(jù)的大小達(dá)到某個(gè)閥值時(shí),可將統(tǒng)計(jì)數(shù)據(jù)周期性地保存到區(qū)間文件。在參考圖7描述的實(shí)施方案中,每個(gè)具有選用組第二線程的第一進(jìn)程和一組或多組第二多個(gè)進(jìn)程是獨(dú)立的并且經(jīng)由共享內(nèi)存彼此通信。每個(gè)網(wǎng)絡(luò)接口卡的第一線程組可不同于選用組的第二線程。在某些實(shí)施方案中,第一進(jìn)程和一組或多組第二多個(gè)進(jìn)程是異步的。圖8是示出根據(jù)本發(fā)明的實(shí)施方案的管理數(shù)據(jù)流的另一方法的流程圖。所述方法開(kāi)始于至少一個(gè)網(wǎng)絡(luò)接口卡接收數(shù)據(jù)流的操作805。在操作810中,運(yùn)行每個(gè)網(wǎng)絡(luò)接口卡的至少一個(gè)第一線程的第一進(jìn)程處理接收的數(shù)據(jù)流,組織經(jīng)過(guò)處理的數(shù)據(jù)流,過(guò)濾經(jīng)過(guò)處理的數(shù)據(jù)流并且將經(jīng)過(guò)處理的數(shù)據(jù)流存儲(chǔ)在共享內(nèi)存中。然后在操作815中,使用至少一組第二多個(gè)進(jìn)程再次處理存儲(chǔ)在共享內(nèi)存中的數(shù)據(jù),其中每個(gè)進(jìn)程具有選用組的第二線程。來(lái)自所述組的第二線程的至少一個(gè)線程是用于從共享內(nèi)存中讀取數(shù)據(jù)并且生成關(guān)于共享內(nèi)存的統(tǒng)計(jì)。如果存在多個(gè)共享內(nèi)存,那么可用不同于第二線程的線程或?qū)S镁€程讀取每個(gè)共享內(nèi)存。在操作820中,將生成的統(tǒng)計(jì)周期性地保存到區(qū)間文件。將生成的統(tǒng)計(jì)周期性地保存到文件可由用戶(hù)配置或可例如每天一次或每小時(shí)一次。在另一實(shí)施方案中,當(dāng)統(tǒng)計(jì)數(shù)據(jù)的大小達(dá)到某個(gè)閥值時(shí),可將生成的統(tǒng)計(jì)周期性地保存到區(qū)間文件。在操作825中,從區(qū)間文件中讀取數(shù)據(jù),并且將其分類(lèi)、合并和聚集。在參考圖8描述的實(shí)施方案中,每個(gè)具有選用組第二線程的第一進(jìn)程和一組或多 組第二多個(gè)進(jìn)程是獨(dú)立的并且經(jīng)由共享內(nèi)存彼此通信。每個(gè)網(wǎng)絡(luò)接口卡的第一線程組可不同于選用組的第二線程。在某些實(shí)施方案中,第一進(jìn)程和一組或多組第二多個(gè)進(jìn)程是異步的。根據(jù)本發(fā)明的實(shí)施方案,一種管理數(shù)據(jù)流的方法包括在至少一個(gè)網(wǎng)絡(luò)接口卡上接收數(shù)據(jù)流,和使用運(yùn)行用于每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)第一線程的第一進(jìn)程對(duì)所述數(shù)據(jù)流執(zhí)行操作。使用運(yùn)行多個(gè)第一線程的第一進(jìn)程執(zhí)行的操作包括將所述數(shù)據(jù)流的部分分布在多個(gè)緩沖器當(dāng)中以由所述多個(gè)第一線程來(lái)處理;用專(zhuān)用第一進(jìn)程線程處理存儲(chǔ)在每個(gè)所述多個(gè)緩沖器中的數(shù)據(jù)流的每個(gè)部分;和將每個(gè)所述數(shù)據(jù)流的處理部分存儲(chǔ)在多個(gè)專(zhuān)用共享內(nèi)存之一中。所述專(zhuān)用第一進(jìn)程線程可為所述多個(gè)第一線程之一。所述方法還包括使用每個(gè)具有選用組第二線程的至少一組第二多個(gè)進(jìn)程對(duì)所述數(shù)據(jù)流的處理部分執(zhí)行附加操作,所述操作包括用專(zhuān)用第二進(jìn)程線程處理存儲(chǔ)在每個(gè)所述共享內(nèi)存中的所述數(shù)據(jù)流的每個(gè)經(jīng)過(guò)處理的部分。所述專(zhuān)用第二進(jìn)程線程可為所述第二線程之一。所述第一進(jìn)程和所述一組或多組第二多個(gè)進(jìn)程可獨(dú)立的并且經(jīng)由所述共享內(nèi)存而通信。所述每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)第一線程可不同于所述組的第二線程。根據(jù)本發(fā)明的另一實(shí)施方案,在所述第一進(jìn)程中執(zhí)行操作還包括使用單獨(dú)多個(gè) 專(zhuān)用第一進(jìn)程線程從每個(gè)所述多個(gè)緩沖器中讀取所述數(shù)據(jù)部分;和使用所述單獨(dú)多個(gè)專(zhuān)用第一進(jìn)程線程過(guò)濾從每個(gè)所述多個(gè)緩沖器中讀取的所述數(shù)據(jù)以生成所述數(shù)據(jù)流的處理部分。根據(jù)本發(fā)明的又一實(shí)施方案,所述第一進(jìn)程和所述第二進(jìn)程是異步的。根據(jù)本發(fā)明的又一實(shí)施方案,由單獨(dú)并且不同的第一進(jìn)程線程訪問(wèn)每個(gè)所述多個(gè)緩沖器。根據(jù)本發(fā)明的又一實(shí)施方案,將所述數(shù)據(jù)流的每個(gè)部分存儲(chǔ)在單獨(dú)一個(gè)所述多個(gè)緩沖器中。根據(jù)本發(fā)明的又一實(shí)施方案,將每個(gè)所述數(shù)據(jù)流的經(jīng)過(guò)處理的部分存儲(chǔ)在單獨(dú)的共享內(nèi)存中。根據(jù)本發(fā)明的另一實(shí)施方案,一種用于管理數(shù)據(jù)流的方法包括在至少一個(gè)網(wǎng)絡(luò)接口卡上接收數(shù)據(jù)流,和使用運(yùn)行用于每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)第一線程的第一進(jìn)程對(duì)所述數(shù)據(jù)流執(zhí)行操作。所述使用運(yùn)行多個(gè)第一線程的第一進(jìn)程執(zhí)行的操作包括將所述數(shù)據(jù)流的多個(gè)部分分布在多個(gè)緩沖器當(dāng)中以由所述多個(gè)第一線程來(lái)處理;用專(zhuān)用第一進(jìn)程線程處理存儲(chǔ)在每個(gè)所述多個(gè)緩沖器中的數(shù)據(jù)流的每個(gè)部分;和將每個(gè)所述數(shù)據(jù)流中經(jīng)過(guò)處理的部分存儲(chǔ)在多個(gè)專(zhuān)用共享內(nèi)存之一中。所述專(zhuān)用第一進(jìn)程線程可為所述多個(gè)第一線程之一。所述方法還包括使用每個(gè)具有選用組第二線程的至少一組第二多個(gè)進(jìn)程對(duì)所述數(shù)據(jù)流的經(jīng)過(guò)處理的部分執(zhí)行操作,所述操作包括用專(zhuān)用第二進(jìn)程線程從每個(gè)所述共享內(nèi)存中讀取所述數(shù)據(jù)流的存儲(chǔ)處理部分。所述專(zhuān)用第二進(jìn)程線程可為所述組的第二線程之一。所述方法還包括用所述專(zhuān)用第二進(jìn)程線程對(duì)從所述共享內(nèi)存中讀取的數(shù)據(jù)流的經(jīng)處理部分執(zhí)行統(tǒng)計(jì)并且將所述統(tǒng)計(jì)周期性地保存到區(qū)間文件。所述第一進(jìn)程和所述至少一組第二多個(gè)進(jìn)程可為獨(dú)立的并且經(jīng)由所述共享內(nèi)存而通信。根據(jù)本發(fā)明的又一實(shí)施方案,一種用于管理數(shù)據(jù)流的方法包括在至少一個(gè)網(wǎng)絡(luò)接口卡上接收數(shù)據(jù)流;將所述數(shù)據(jù)流的多個(gè)部分分布在由運(yùn)行用于每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)線程的第一進(jìn)程使用的多個(gè)緩沖器當(dāng)中;和用專(zhuān)用于所述緩沖器的特定線程處理存儲(chǔ)在每個(gè)緩沖器中的數(shù)據(jù)流的部分。每個(gè)線程處理來(lái)自特定個(gè)的多個(gè)緩沖器的數(shù)據(jù)。所述特定線程可為所述多個(gè)線程之一。所述方法還可包括將經(jīng)過(guò)處理的數(shù)據(jù)流存儲(chǔ)在指定的共享內(nèi)存中。
根據(jù)本發(fā)明的又一實(shí)施方案,一種用于管理數(shù)據(jù)流的方法包括在至少一個(gè)網(wǎng)絡(luò)接口卡上接收數(shù)據(jù)流,將所述數(shù)據(jù)流的多個(gè)部分分布在多個(gè)緩沖器當(dāng)中,其中由運(yùn)行多個(gè)第一進(jìn)程線程的第一進(jìn)程訪問(wèn)所述多個(gè)緩沖器,并且其中每個(gè)所述第一進(jìn)程線程處理來(lái)自特定一個(gè)所述多個(gè)緩沖器的數(shù)據(jù)。所述方法還可包括將所述數(shù)據(jù)流的一部分存儲(chǔ)在指定的共享內(nèi)存中。所述方法還可包括由運(yùn)行第二多個(gè)進(jìn)程線程的第二進(jìn)程從所述共享內(nèi)存中讀取數(shù)據(jù)。所述第二多個(gè)進(jìn)程線程還可執(zhí)行內(nèi)存中區(qū)間統(tǒng)計(jì)并且將所述統(tǒng)計(jì)周期性地保存到區(qū)間文件。所述第一進(jìn)程和所述第二進(jìn)程可為異步的。所述方法還可包括使用用于處理來(lái)自每個(gè)所述多個(gè)緩沖器的數(shù)據(jù)的相同第一進(jìn)程線程從每個(gè)所述多個(gè)緩沖器中讀取數(shù)據(jù);和使用所述相同第一進(jìn)程線程過(guò)濾從所述多個(gè)緩沖器中讀取的數(shù)據(jù)以生成所述數(shù)據(jù)流的經(jīng)過(guò)處理的部分。可將每個(gè)所述數(shù)據(jù)流的分布部分存儲(chǔ)在單獨(dú)一個(gè)的所述多個(gè)緩沖器中。所述數(shù)據(jù)流的分布部分還可存儲(chǔ)在單獨(dú)共享內(nèi)存中。根據(jù)本發(fā)明的又一實(shí)施方案,一種用于管理數(shù)據(jù)流的方法包括在至少一個(gè)網(wǎng)絡(luò)接口卡上接收數(shù)據(jù)流,和使用運(yùn)行用于每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)第一線程的第一進(jìn)程對(duì)所述數(shù)據(jù)流執(zhí)行操作。所述使用運(yùn)行多個(gè)第一線程的第一進(jìn)程執(zhí)行的操作包括將所述數(shù)據(jù)流解析成多個(gè)子數(shù)據(jù)流;將所述多個(gè)子數(shù)據(jù)流分布在多個(gè)緩沖器當(dāng)中;將每個(gè)所述多個(gè)子數(shù)據(jù)流的一部分存儲(chǔ)在共享內(nèi)存中。所述方法還包括使用每個(gè)具有選用組第二線程的至少一組第二多個(gè)進(jìn)程對(duì)所述多個(gè)子數(shù)據(jù)流執(zhí)行附加操作。所述附加操作包括從所述共享內(nèi)存中讀取存儲(chǔ)在所述共享內(nèi)存中的所述子數(shù)據(jù)流的部分;和對(duì)從所述共享內(nèi)存中讀取的所述子數(shù)據(jù)流的部分執(zhí)行統(tǒng)計(jì);并且將所述統(tǒng)計(jì)周期性地保存到區(qū)間文件。所述第一進(jìn)程和所述第二進(jìn)程可獨(dú)立的并且經(jīng)由所述共享內(nèi)存而通信。根據(jù)本發(fā)明的又一實(shí)施方案,一種用于管理數(shù)據(jù)流的系統(tǒng)包括至少一個(gè)網(wǎng)絡(luò)接口卡,其接收數(shù)據(jù)流;第一處理器,其耦合到至少一個(gè)所述網(wǎng)絡(luò)接口卡并且將所述數(shù)據(jù)流分布在多個(gè)緩沖器當(dāng)中。所述第一處理器被配置來(lái)運(yùn)行使用用于每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)第一線程的第一進(jìn)程。所述多個(gè)第一進(jìn)程線程訪問(wèn)存儲(chǔ)在所述多個(gè)緩沖器中的數(shù)據(jù),處理所述訪問(wèn)的數(shù)據(jù)并且將所述處理的數(shù)據(jù)存儲(chǔ)在多個(gè)共享內(nèi)存中。所述多個(gè)第一線程可為了特定特征而過(guò)濾從所述多個(gè)緩沖器中訪問(wèn)的數(shù)據(jù),并且將具有特定特征的數(shù)據(jù)保存在特定共享內(nèi)存中。所述第一進(jìn)程可分布由所述網(wǎng)絡(luò)卡接收的數(shù)據(jù)流的拷貝,并且將所述拷貝存儲(chǔ)在所述多個(gè)緩沖器之一中。所述系統(tǒng)還可包括從所述共享內(nèi)存中讀取數(shù)據(jù)的至少一組第二多個(gè)進(jìn)程。所述至少一組第二多個(gè)進(jìn)程每個(gè)均可使用來(lái)自選用組的第二線程的一個(gè)或第二多個(gè)線程。所述組的第二線程可用于分析數(shù)據(jù)以生成內(nèi)存中區(qū)間統(tǒng)計(jì)并且將所述統(tǒng)計(jì)周期性地保存到區(qū)間文件。所述共享內(nèi)存可為隊(duì)列。雖然已經(jīng)描述本發(fā)明的特定實(shí)施方案,但是各種修改、變更、替代結(jié)構(gòu)和等效物也涵蓋在本發(fā)明的范疇內(nèi)。所述發(fā)明不限于某些特定數(shù)據(jù)處理環(huán)境內(nèi)的操作,而是在多個(gè)數(shù)據(jù)處理環(huán)境內(nèi)自由操作。此外,雖然已使用特定系列的事務(wù)和步驟描述本發(fā)明,但是所屬領(lǐng)域技術(shù)人員應(yīng)當(dāng)明白本發(fā)明不限于所述系列的事務(wù)和步驟。此外,雖然已經(jīng)使用硬件和軟件的特定組合描述本發(fā)明,但是應(yīng)明白硬件和軟件的其它組合也在本發(fā)明的范疇內(nèi)。本發(fā)明僅可以用硬件,或僅以軟件或使用其組合予以實(shí)施。
因此,在闡釋性而非限制性意義上看待本說(shuō)明書(shū)和圖示。然而,顯然可在不背離如在權(quán)利要求中陳述的本發(fā)明的更廣精神和范疇的情況下作出添加、刪減、刪除以及其它修改和變化。
權(quán)利要求
1.一種用于管理數(shù)據(jù)流的方法,其包括 在至少一個(gè)網(wǎng)絡(luò)接口卡上接收數(shù)據(jù)流; 使用運(yùn)行用于每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)第一線程的第一進(jìn)程對(duì)所述數(shù)據(jù)流執(zhí)行操作,其包括 將所述數(shù)據(jù)流的多個(gè)部分分布在多個(gè)緩沖器當(dāng)中以由所述多個(gè)第一線程處理; 用專(zhuān)用第一進(jìn)程線程處理存儲(chǔ)在每個(gè)所述多個(gè)緩沖器中的數(shù)據(jù)流的每個(gè)部分,其中所述專(zhuān)用第一進(jìn)程線程是所述多個(gè)第一線程之一; 將所述數(shù)據(jù)流的每個(gè)經(jīng)過(guò)處理的部分存儲(chǔ)在多個(gè)專(zhuān)用共享內(nèi)存之一中; 使用每個(gè)具有至少一組第二線程的至少一組第二多個(gè)進(jìn)程對(duì)所述數(shù)據(jù)流中經(jīng)過(guò)處理的部分執(zhí)行操作,其包括 用專(zhuān)用第二進(jìn)程線程處理存儲(chǔ)在每個(gè)所述共享內(nèi)存中的所述數(shù)據(jù)流的每個(gè)經(jīng)過(guò)處理的部分,其中所述專(zhuān)用第二進(jìn)程線程是所述第二線程之一; 其中所述第一進(jìn)程和所述一組或多組第二多個(gè)進(jìn)程是獨(dú)立的并且經(jīng)由所述共享內(nèi)存而通信;且 其中每個(gè)網(wǎng)絡(luò)接口卡的所述多個(gè)第一線程不同于所述至少一組第二線程。
2.根據(jù)權(quán)利要求I所述的方法,其中在所述第一進(jìn)程中執(zhí)行操作還包括 使用單獨(dú)的多個(gè)專(zhuān)用第一進(jìn)程線程從每個(gè)所述多個(gè)緩沖器中讀取所述數(shù)據(jù)部分;和使用所述單獨(dú)多個(gè)專(zhuān)用第一進(jìn)程線程過(guò)濾從每個(gè)所述多個(gè)緩沖器中讀取的所述數(shù)據(jù)以生成所述數(shù)據(jù)流的經(jīng)過(guò)處理的部分。
3.根據(jù)權(quán)利要求I所述的系統(tǒng),其中所述第一進(jìn)程和所述第二進(jìn)程是異步的。
4.根據(jù)權(quán)利要求I所述的系統(tǒng),其中由單獨(dú)且不同的第一進(jìn)程線程訪問(wèn)每個(gè)所述多個(gè)緩沖器。
5.根據(jù)權(quán)利要求I所述的方法,其中將所述數(shù)據(jù)流的每個(gè)部分存儲(chǔ)在單獨(dú)一個(gè)的所述多個(gè)緩沖器中。
6.根據(jù)權(quán)利要求I所述的方法,其中將所述數(shù)據(jù)流的每個(gè)經(jīng)過(guò)處理的部分存儲(chǔ)在單獨(dú)的共享內(nèi)存中。
7.一種用于管理數(shù)據(jù)流的方法,其包括 在至少一個(gè)網(wǎng)絡(luò)接口卡上接收數(shù)據(jù)流; 使用運(yùn)行用于每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)第一線程的第一進(jìn)程對(duì)所述數(shù)據(jù)流執(zhí)行操作,其包括 將所述數(shù)據(jù)流的多個(gè)部分分布在多個(gè)緩沖器當(dāng)中以由所述多個(gè)第一線程來(lái)處理; 用專(zhuān)用第一進(jìn)程線程處理存儲(chǔ)在每個(gè)所述多個(gè)緩沖器中的所述數(shù)據(jù)流的每個(gè)部分,其中所述專(zhuān)用第一進(jìn)程線程是所述多個(gè)第一線程之一; 將每個(gè)所述數(shù)據(jù)流中經(jīng)過(guò)處理的部分存儲(chǔ)在多個(gè)專(zhuān)用共享內(nèi)存之一中; 使用至少一組第二多個(gè)進(jìn)程對(duì)所述數(shù)據(jù)流中經(jīng)過(guò)處理的部分執(zhí)行操作,其包括 從每個(gè)所述共享內(nèi)存中讀取所述數(shù)據(jù)流的經(jīng)過(guò)存儲(chǔ)處理的部分; 對(duì)從所述共享內(nèi)存中讀取的所述數(shù)據(jù)流的經(jīng)過(guò)處理的部分執(zhí)行統(tǒng)計(jì)并且將所述統(tǒng)計(jì)周期性地保存到區(qū)間文件;且 其中所述第一進(jìn)程和所述至少一組第二多個(gè)進(jìn)程是獨(dú)立的并且經(jīng)由所述共享內(nèi)存通 目;
8.根據(jù)權(quán)利要求7所述的方法,其中在所述第一進(jìn)程中執(zhí)行操作還包括 使用相同的專(zhuān)用第一進(jìn)程線程從每個(gè)所述多個(gè)緩沖器中讀取數(shù)據(jù);和 使用所述相同的專(zhuān)用第一進(jìn)程線程過(guò)濾從所述多個(gè)緩沖器中讀取的數(shù)據(jù)以生成所述數(shù)據(jù)流的經(jīng)過(guò)處理的部分。
9.根據(jù)權(quán)利要求7所述的系統(tǒng),其中所述第一進(jìn)程和所述第二進(jìn)程是異步的。
10.根據(jù)權(quán)利要求7所述的系統(tǒng),其中僅由所述第一進(jìn)程使用所述多個(gè)緩沖器。
11.根據(jù)權(quán)利要求7所述的方法,其中將每個(gè)所述數(shù)據(jù)流的分布部分存儲(chǔ)在單獨(dú)一個(gè)所述多個(gè)緩沖器中。
12.根據(jù)權(quán)利要求7所述的方法,其中將每個(gè)所述數(shù)據(jù)流的經(jīng)過(guò)處理的部分存儲(chǔ)在單獨(dú)共享內(nèi)存中。
13.一種用于管理數(shù)據(jù)流的方法,其包括 在至少一個(gè)網(wǎng)絡(luò)接口卡上接收數(shù)據(jù)流; 將所述數(shù)據(jù)流的多個(gè)部分分布在由運(yùn)行用于每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)線程的第一進(jìn)程使用的多個(gè)緩沖器當(dāng)中,其中每個(gè)線程處理來(lái)自所述多個(gè)緩沖器中特定一個(gè)的數(shù)據(jù);和 用專(zhuān)用于所述緩沖器的特定線程處理存儲(chǔ)在每個(gè)緩沖器中的所述數(shù)據(jù)流的多個(gè)部分,其中所述特定線程是所述多個(gè)線程之一。
將所述經(jīng)過(guò)處理的數(shù)據(jù)流存儲(chǔ)在指定的共享內(nèi)存中。
14.一種用于管理數(shù)據(jù)流的方法,其包括 在至少一個(gè)網(wǎng)絡(luò)接口卡上接收數(shù)據(jù)流; 將所述數(shù)據(jù)流的多個(gè)部分分布在多個(gè)緩沖器當(dāng)中,其中由運(yùn)行多個(gè)第一進(jìn)程線程的第一進(jìn)程訪問(wèn)所述多個(gè)緩沖器,且其中每個(gè)所述第一進(jìn)程線程處理來(lái)自所述多個(gè)緩沖器中特定一個(gè)的數(shù)據(jù);和 將所述數(shù)據(jù)流的一部分存儲(chǔ)在指定的共享內(nèi)存中。
15.根據(jù)權(quán)利要求14所述的方法,其還包括由運(yùn)行多個(gè)第二進(jìn)程線程的第二進(jìn)程從所述共享內(nèi)存中讀取數(shù)據(jù)。
16.根據(jù)權(quán)利要求15所述的方法,其中所述多個(gè)第二進(jìn)程線程還執(zhí)行內(nèi)存中區(qū)間統(tǒng)計(jì)并且將所述統(tǒng)計(jì)周期性地保存到區(qū)間文件。
17.根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述第一進(jìn)程和所述第二進(jìn)程是異步的。
18.根據(jù)權(quán)利要求14所述的方法,其還包括 使用用于處理來(lái)自每個(gè)所述多個(gè)緩沖器的數(shù)據(jù)的相同第一進(jìn)程線程從每個(gè)所述多個(gè)緩沖器中讀取數(shù)據(jù);和 使用所述相同第一進(jìn)程線程過(guò)濾從所述多個(gè)緩沖器中讀取的數(shù)據(jù)以生成所述數(shù)據(jù)流的經(jīng)過(guò)處理的部分。
19.根據(jù)權(quán)利要求14所述的方法,其中將每個(gè)所述數(shù)據(jù)流的分布部分存儲(chǔ)在單獨(dú)一個(gè)所述多個(gè)緩沖器中。
20.根據(jù)權(quán)利要求14所述的方法,其中將每個(gè)所述數(shù)據(jù)流的分布部分存儲(chǔ)在單獨(dú)共享內(nèi)存中。
21.一種用于管理數(shù)據(jù)流的方法,其包括在至少一個(gè)網(wǎng)絡(luò)接口卡上接收數(shù)據(jù)流; 使用運(yùn)行用于每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)第一線程的第一進(jìn)程對(duì)所述數(shù)據(jù)流執(zhí)行操作,其包括 將所述數(shù)據(jù)流解析成多個(gè)子數(shù)據(jù)流; 將所述多個(gè)子數(shù)據(jù)流分布在多個(gè)緩沖器當(dāng)中; 將每個(gè)所述多個(gè)子數(shù)據(jù)流的一部分存儲(chǔ)在共享內(nèi)存中; 使用至少一組第二多個(gè)進(jìn)程對(duì)所述多個(gè)子數(shù)據(jù)流執(zhí)行操作,其包括 從所述共享內(nèi)存中讀取存儲(chǔ)在所述共享內(nèi)存中的所述子數(shù)據(jù)流的多個(gè)部分; 對(duì)從所述共享內(nèi)存中讀取的所述子數(shù)據(jù)流的多個(gè)部分執(zhí)行統(tǒng)計(jì)并且將所述統(tǒng)計(jì)周期性地保存到區(qū)間文件;并且 其中所述第一進(jìn)程和所述第二進(jìn)程是獨(dú)立的并且經(jīng)由所述共享內(nèi)存通信。
22.一種用于管理數(shù)據(jù)流的系統(tǒng),其包括 至少一個(gè)網(wǎng)絡(luò)接口卡,其接收數(shù)據(jù)流; 第一處理器,其耦合到至少一個(gè)所述網(wǎng)絡(luò)接口卡并且將所述數(shù)據(jù)流分布在多個(gè)緩沖器當(dāng)中,所述第一處理器被配置來(lái)運(yùn)行使用用于每個(gè)網(wǎng)絡(luò)接口卡的多個(gè)第一線程的第一進(jìn)程; 其中所述多個(gè)第一進(jìn)程線程訪問(wèn)存儲(chǔ)在所述多個(gè)緩沖器中的數(shù)據(jù),處理所述訪問(wèn)的數(shù)據(jù)并且將所述經(jīng)過(guò)處理的數(shù)據(jù)存儲(chǔ)在多個(gè)共享內(nèi)存中。
23.根據(jù)權(quán)利要求22所述的系統(tǒng),其中所述多個(gè)第一線程為了特定特征而過(guò)濾從所述多個(gè)緩沖器中訪問(wèn)的數(shù)據(jù),并且將具有特定特征的數(shù)據(jù)保存在特定的共享內(nèi)存中。
24.根據(jù)權(quán)利要求22所述的系統(tǒng),其中所述第一處理器分布由所述網(wǎng)絡(luò)卡接收的數(shù)據(jù)流的拷貝并且將所述拷貝存儲(chǔ)在所述多個(gè)緩沖器之一中。
25.根據(jù)權(quán)利要求22所述的系統(tǒng),其還包括從所述共享內(nèi)存中讀取數(shù)據(jù)的至少一組第二多個(gè)進(jìn)程,其中所述至少一組第二多個(gè)進(jìn)程每個(gè)均使用至少一組第二線程。
26.根據(jù)權(quán)利要求22所述的系統(tǒng),其中所述至少一組第二多個(gè)進(jìn)程分析數(shù)據(jù)以生成內(nèi)存中區(qū)間統(tǒng)計(jì)并且將所述統(tǒng)計(jì)周期性地保存到區(qū)間文件。
27.根據(jù)權(quán)利要求22所述的系統(tǒng),其中所述共享內(nèi)存是隊(duì)列。
全文摘要
本發(fā)明涉及通過(guò)以下步驟管理輸入數(shù)據(jù)流在至少一個(gè)網(wǎng)絡(luò)接口卡(NIC)上接收數(shù)據(jù)流,并且為每個(gè)網(wǎng)絡(luò)接口卡使用運(yùn)行若干第一線程的第一進(jìn)程,和使用每個(gè)具有選用組第二線程的至少一組第二多個(gè)進(jìn)程對(duì)所述數(shù)據(jù)流執(zhí)行操作。所述第一進(jìn)程和所述一組或多組第二多個(gè)進(jìn)程是獨(dú)立的并且經(jīng)由共享內(nèi)存而通信。所述每個(gè)網(wǎng)絡(luò)接口卡的第一線程不同于所述組的第二線程。
文檔編號(hào)G06F13/14GK102656573SQ201080057542
公開(kāi)日2012年9月5日 申請(qǐng)日期2010年10月19日 優(yōu)先權(quán)日2009年10月27日
發(fā)明者J·K·加蘭特, K·亨德森 申請(qǐng)人:弗里塞恩公司