專利名稱::用于多核處理器的數(shù)據(jù)分組處理方法用于多核處理器的數(shù)據(jù)分組處理方法介紹已知的多核處理器平臺(tái)包括一個(gè)或多個(gè)中央處理器單元(CPU),這些CPU各自可具有共享存儲(chǔ)器和1/0(輸入和輸出)資源的多個(gè)處理核。該多核體系結(jié)構(gòu)使得能夠在不止一個(gè)核上同時(shí)執(zhí)行多個(gè)進(jìn)程或"線程"。已經(jīng)開發(fā)出這些多核處理器以增加勝過單核處理器的平臺(tái)處理容量。在多核對(duì)稱多處理處理(SMP)體系結(jié)構(gòu)中,共享系統(tǒng)存儲(chǔ)器以使得任一個(gè)處理器核可操作任一任務(wù)而不管用于該任務(wù)的數(shù)據(jù)在系統(tǒng)存儲(chǔ)器中駐留在哪里。多核系統(tǒng)利用在一個(gè)CPU的多個(gè)核之間共享的高速緩存存儲(chǔ)器也是已知的。多核處理器平臺(tái)可在諸如以太網(wǎng)局域網(wǎng)(LAN)等網(wǎng)絡(luò)中用作服務(wù)器。服務(wù)器體系結(jié)構(gòu)可包括多個(gè)處理器,然而,這些處理器僅使用連接到一個(gè)處理器核的一個(gè)LAN接口或網(wǎng)絡(luò)接口卡(NIC)來(lái)物理地連接到網(wǎng)絡(luò)。該網(wǎng)絡(luò)接口在從網(wǎng)絡(luò)接收分組時(shí)只可中斷一個(gè)處理器。接收到的分組然后通過中斷的核中的網(wǎng)絡(luò)棧來(lái)進(jìn)行處理直到該分組到達(dá)應(yīng)用程序。由此,對(duì)于所有從網(wǎng)絡(luò)接收到的數(shù)據(jù)使用連接該網(wǎng)絡(luò)的處理器核。在高速TCP/IP應(yīng)用程序或任何網(wǎng)絡(luò)棧應(yīng)用程序和諸如千兆位和萬(wàn)兆位以太網(wǎng)網(wǎng)絡(luò)等高帶寬網(wǎng)絡(luò)的情況下,全服務(wù)器處理容量可能由于網(wǎng)絡(luò)和服務(wù)器之間的數(shù)據(jù)吞吐量受到連接該網(wǎng)絡(luò)的處理器核的飽和度的限制而無(wú)法實(shí)現(xiàn)。當(dāng)前克服該問題的解決方案要求服務(wù)器具備連接到更多處理器的更多網(wǎng)絡(luò)接口以便將網(wǎng)絡(luò)接口處理負(fù)載分布在多個(gè)處理器上。該解決方案可提高服務(wù)器和網(wǎng)絡(luò)之間的吞吐量,但由于其需要附加網(wǎng)絡(luò)接口卡而是低效的。該解決方案還引入用于協(xié)調(diào)多個(gè)網(wǎng)絡(luò)接口的額外開銷。另一建議的針對(duì)該問題的解決方案是通過網(wǎng)絡(luò)接口將對(duì)入站數(shù)據(jù)的網(wǎng)絡(luò)棧操作重新分發(fā)給各個(gè)核。該解決方案需要LAN或網(wǎng)絡(luò)接口和處理器操作系統(tǒng)之間的互操作性。由此,需要修改網(wǎng)絡(luò)接口和操作系統(tǒng)以實(shí)現(xiàn)這一解決方案,因此該解決方案無(wú)法用標(biāo)準(zhǔn)的當(dāng)前可得到的網(wǎng)絡(luò)接口來(lái)實(shí)現(xiàn)。存在對(duì)提高網(wǎng)絡(luò)和具有多核處理器體系結(jié)構(gòu)的服務(wù)器之間的吞吐量的服務(wù)器體系結(jié)構(gòu)的需求。附圖簡(jiǎn)述現(xiàn)在將僅作為示例,參考所附附圖描述本發(fā)明的各實(shí)施例,附圖中圖1示出了多核處理器體系結(jié)構(gòu)的示例;圖2示出了根據(jù)本發(fā)明的一實(shí)施例的、通過多核處理器的網(wǎng)絡(luò)桟來(lái)處理分組的示例;圖3是示出選擇處理器核并將分組處理移交給所選核的內(nèi)核過程的流程圖4示出了比較性測(cè)試示例1中所使用的常規(guī)多核處理器網(wǎng)絡(luò)棧體系結(jié)構(gòu)測(cè)試模型;圖5示出了根據(jù)本發(fā)明的一實(shí)施例的、比較性測(cè)試示例1中所使用的多核處理器網(wǎng)絡(luò)棧體系結(jié)構(gòu);以及圖6是示出比較性測(cè)試示例1的結(jié)果的圖。詳細(xì)描述根據(jù)一實(shí)施例,提供了一種在多核處理器平臺(tái)中處理從網(wǎng)絡(luò)接收到數(shù)據(jù)分組的方法,該方法包括以下步驟在指定中央處理器單元(CPU)核中從網(wǎng)絡(luò)接口接收中斷以便處理從網(wǎng)絡(luò)接收到的數(shù)據(jù)分組;將該數(shù)據(jù)分組與基于處理器負(fù)載來(lái)選擇的中央處理器單元(CPU)核中所建立的應(yīng)用程序連接相關(guān)聯(lián);以及在與該應(yīng)用程序連接相關(guān)聯(lián)的CPU核上創(chuàng)建中斷線程以便處理所接收到的數(shù)據(jù)分組。根據(jù)一實(shí)施例,提供了一種處理由在多核處理器平臺(tái)的一個(gè)中央處理器單元(CPU)核中執(zhí)行的應(yīng)用程序發(fā)送到網(wǎng)絡(luò)的數(shù)據(jù)分組的方法,該方法包括以下步驟確定是使用執(zhí)行應(yīng)用程序的CPU核還是使用替換中央處理器單元(CPU)核來(lái)執(zhí)行對(duì)數(shù)據(jù)分組的傳出處理;并且在確定使用替換CPU核的情況下-基于處理器負(fù)載來(lái)選擇用于傳出分組處理的替換CPU核;在所選替換CPU核中建立應(yīng)用程序連接;將數(shù)據(jù)分組與該應(yīng)用程序連接相關(guān)聯(lián);以及在所選替換CPU核上創(chuàng)建中斷線程以便處理到網(wǎng)絡(luò)接口來(lái)通過網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)分組。根據(jù)一實(shí)施例,提供了一種網(wǎng)絡(luò)服務(wù)器系統(tǒng),該系統(tǒng)包括至少一個(gè)具有多個(gè)核的中央處理器單元(CPU)以及網(wǎng)絡(luò)接口,該網(wǎng)絡(luò)接口用于連接到網(wǎng)絡(luò),并且適用于在指定CPU核中創(chuàng)建中斷以便處理從該網(wǎng)絡(luò)接收到的每一個(gè)數(shù)據(jù)分組。從網(wǎng)絡(luò)接收到的每一個(gè)數(shù)據(jù)分組都與基于處理器負(fù)載來(lái)選擇的所選CPU核中所建立的應(yīng)用程序連接相關(guān)聯(lián)。在與該應(yīng)用程序連接相關(guān)聯(lián)的CPU核上創(chuàng)建用于處理數(shù)據(jù)分組的中斷線程。根據(jù)一實(shí)施例,提供了一種網(wǎng)絡(luò)服務(wù)器系統(tǒng),該系統(tǒng)包括至少一個(gè)具有多個(gè)核的中央處理器單元(CPU)以及網(wǎng)絡(luò)接口,該網(wǎng)絡(luò)接口用于連接到網(wǎng)絡(luò),并且適用于在指定CPU核中創(chuàng)建中斷以便從該網(wǎng)絡(luò)接收到的每一個(gè)數(shù)據(jù)分組,并且還可被修改以使得每一個(gè)CPU核都可訪問網(wǎng)絡(luò)接口以便將數(shù)據(jù)分組傳送到網(wǎng)絡(luò)。發(fā)送到網(wǎng)絡(luò)的每一個(gè)數(shù)據(jù)分組都與其中執(zhí)行應(yīng)用程序的CPU核或基于處理器負(fù)載來(lái)選擇的替換CPU核中所建立的應(yīng)用程序連接相關(guān)聯(lián)。在應(yīng)用程序連接在替換CPU核中建立的情況下,在與該應(yīng)用程序連接相關(guān)聯(lián)的CPU核上創(chuàng)建用于處理數(shù)據(jù)分組的中斷線程。本發(fā)明的各實(shí)施例提供了一種用于在多核處理器平臺(tái)100中處理發(fā)往網(wǎng)絡(luò)110和從網(wǎng)絡(luò)IIO接收到的分組以減少由于網(wǎng)絡(luò)接口對(duì)于所有接收到的分組中斷一個(gè)CPU核而引起的對(duì)發(fā)往和來(lái)自網(wǎng)絡(luò)110的數(shù)據(jù)的吞吐量的限制的方法和系統(tǒng)。將接收到的分組與所選中央處理器單元(CPU)核中所建立的應(yīng)用程序連接相關(guān)聯(lián),其中該CPU核基于處理器負(fù)載來(lái)選擇。然后在與該應(yīng)用程序連接相關(guān)聯(lián)的CPU核上創(chuàng)建用于所接收到的分組的中斷線程。這使得能夠?qū)⒎纸M處理移交給除了網(wǎng)絡(luò)接口中斷的CPU核之外的核,其中存在或建立應(yīng)用程序連接以減少用于分組處理的連接網(wǎng)絡(luò)接口的核中所使用的處理容量。用于實(shí)現(xiàn)該方法的網(wǎng)絡(luò)服務(wù)器系統(tǒng)的示例在圖1中示出。系統(tǒng)100包括至少一個(gè)中央處理器單元(CPU)120、122,這些CPU各自具有多個(gè)核130、131、132、133,可任選地,一個(gè)處理器120中的核130、131具有共享高速緩存145并且每一個(gè)核130、131都具有其自己相應(yīng)的高速緩存140、141。對(duì)于對(duì)稱多處理(SMP),共享系統(tǒng)存儲(chǔ)器160以使得任何處理器都可訪問系統(tǒng)存儲(chǔ)器160中的任何數(shù)據(jù)。提供用于在服務(wù)器100和網(wǎng)絡(luò)110之間形成連接的網(wǎng)絡(luò)接口150。網(wǎng)絡(luò)接口150連接到預(yù)定CPU核130以使得將在該預(yù)定CPU核130中創(chuàng)建中斷以便處理從網(wǎng)絡(luò)接收到的每一個(gè)數(shù)據(jù)分組。預(yù)定CPU核130基于處理器負(fù)載來(lái)將從網(wǎng)絡(luò)接收到的每一個(gè)數(shù)據(jù)分組分發(fā)給多個(gè)處理器核130、131、132、133中的所選處理器核,在那里處理分組直到該分組到達(dá)目的地應(yīng)用程序170、171、172。高速網(wǎng)絡(luò)和接口的進(jìn)步已導(dǎo)致以下情況網(wǎng)絡(luò)接口驅(qū)動(dòng)程序能夠比具有通過網(wǎng)絡(luò)棧來(lái)處理分組并將數(shù)據(jù)傳遞給目的地應(yīng)用程序170、171、172的能力的處理器更快地將分組傳遞給處理器。在其中網(wǎng)絡(luò)接口150被編程為在接收到分組后只中斷一個(gè)處理器核130并且對(duì)該分組的所有進(jìn)一步的處理在同一個(gè)核130上發(fā)生直到該數(shù)據(jù)到達(dá)應(yīng)用程序的SMP網(wǎng)絡(luò)體系結(jié)構(gòu)中這是個(gè)問題。在這種情況下,從網(wǎng)絡(luò)接口150接收中斷的CPU核130成為瓶頸,從而限制了到應(yīng)用程序的數(shù)據(jù)吞吐量。本發(fā)明的實(shí)施例通過在網(wǎng)絡(luò)棧接收到分組時(shí)解除被網(wǎng)絡(luò)接口150中斷的CPU核130進(jìn)行分組處理的負(fù)擔(dān)并且并行化網(wǎng)絡(luò)棧操作來(lái)緩解該問題。由此,對(duì)接收到的分組的處理可被分發(fā)給其他CPU核131、132、133以使得網(wǎng)絡(luò)接口核130能夠不再?gòu)木W(wǎng)絡(luò)接口150接收更多數(shù)據(jù)。用于分發(fā)每一個(gè)接收到的分組230、231、232的過程在圖2中示出。最初在連接網(wǎng)絡(luò)接口150的CPU核130的網(wǎng)絡(luò)桟210中處理從網(wǎng)絡(luò)接收到的每一個(gè)分組然后將所接收到的分組與所選CPU核130、131、B2中的對(duì)于目的地應(yīng)用程序220、221、222的應(yīng)用程序連接240、241、242相關(guān)聯(lián)。在與應(yīng)用程序連接相關(guān)聯(lián)的CPU核上創(chuàng)建中斷以便通過各個(gè)核130、131、132的網(wǎng)絡(luò)棧210、211、212來(lái)處理所接收到的分組。當(dāng)網(wǎng)絡(luò)接口150從網(wǎng)絡(luò)IIO接收到每一個(gè)分組時(shí),生成中斷以開始通過連接網(wǎng)絡(luò)接口的CPU核130的網(wǎng)絡(luò)棧210來(lái)處理所接收到的分組。將該分組與所選CPU核中的應(yīng)用程序連接相關(guān)聯(lián)并且在接收到該分組后盡可能快地在網(wǎng)絡(luò)棧的底部將對(duì)該分組的處理移交給所選CPU核。將分組與所選CPU核中的應(yīng)用程序相關(guān)聯(lián)并移交分組處理的過程在圖3的流程圖中示出。例如,執(zhí)行圖3的過程以便進(jìn)行數(shù)據(jù)傳輸、數(shù)據(jù)接收、新傳出連接請(qǐng)求或新傳入連接請(qǐng)求,然而,處理取決于正在處理傳入還是傳出請(qǐng)求而在網(wǎng)絡(luò)棧中的不同層處發(fā)生。對(duì)于傳入請(qǐng)求,該過程在網(wǎng)絡(luò)棧的底部發(fā)生,例如在數(shù)據(jù)鏈路層或緊接的上一層中,而對(duì)于傳出請(qǐng)求,該過程在網(wǎng)絡(luò)棧的頂部發(fā)生,例如在會(huì)話層中。在網(wǎng)絡(luò)棧的相關(guān)層中接收傳入或傳出請(qǐng)求310,然后確定對(duì)于該請(qǐng)求是否需要新的應(yīng)用程序連接320。在連接已經(jīng)存在并且對(duì)于該連接的CPU核是已知的情況下330,則中斷該已知CPU350并將處理移交給該CPU核,以使得分組與該連接相關(guān)聯(lián)并且所有進(jìn)一步的處理繼續(xù)使用該中斷的CPU核中的連接360。應(yīng)用程序連接可能存在并且可在不止一個(gè)核中處理并且在這種情況下,用于處理數(shù)據(jù)分組的優(yōu)選CPU核可能不是已知的330。如果優(yōu)選CPU核并非已知,則基于處理器負(fù)載和其他優(yōu)選準(zhǔn)則來(lái)從已建立應(yīng)用程序連接的CPU核中選擇CPU核340。例如,對(duì)于發(fā)送請(qǐng)求,優(yōu)選在正用于執(zhí)行應(yīng)用程序的CPU中建立應(yīng)用程序連接。如果優(yōu)選CPU核并非已知,則可只基于處理器負(fù)載來(lái)選擇CPU核340。然后創(chuàng)建將數(shù)據(jù)處理與所選核中的連接相關(guān)聯(lián)的中斷350并且處理在所選核中繼續(xù)360。在尚未建立連接的情況下320,例如對(duì)于對(duì)新連接的傳出請(qǐng)求,基于處理器負(fù)載來(lái)選擇對(duì)于該連接的CPU核340。然后創(chuàng)建中斷350以便在所選核中建立連接并將數(shù)據(jù)處理與該連接相關(guān)聯(lián),然后處理在所選核中繼續(xù)360。一旦已中斷所選核并根據(jù)所建立的連接來(lái)將處理移交給該核360,于是對(duì)于原始核就完成對(duì)傳入或傳出請(qǐng)求的處理370,這使得該原始核不再繼續(xù)處理下一操作。在一優(yōu)選實(shí)施例中,為對(duì)連接的每一個(gè)傳出或傳入請(qǐng)求創(chuàng)建單獨(dú)的中斷線程。在該實(shí)施例中,按照連接技術(shù)來(lái)選定處理器核并且一旦接收到的分組與連接相關(guān)聯(lián),在所選CPU核上為該傳入或傳出請(qǐng)求創(chuàng)建的軟件中斷線程就完成了所有進(jìn)一步的工作。該中斷線程將對(duì)所接收到或所傳送的數(shù)據(jù)進(jìn)行所有進(jìn)一步的處理直到該數(shù)據(jù)到達(dá)應(yīng)用程序或被傳送到網(wǎng)絡(luò)。盡可能早地利用該中斷線程以便在傳入請(qǐng)求期間釋放連接網(wǎng)絡(luò)接口的CPU核。在接收到的分組的情況下,對(duì)用于連接的處理器核的選擇在連接建立期間在網(wǎng)絡(luò)棧的底部發(fā)生,例如在數(shù)據(jù)鏈路層或緊接的上一層中。該核基于負(fù)載來(lái)選擇,然而,可優(yōu)先選擇其上運(yùn)行對(duì)于分組的目的地應(yīng)用程序的核。這可通過將例如用于數(shù)據(jù)傳輸?shù)膶?lái)的中斷和網(wǎng)絡(luò)棧處理移交減到最少來(lái)提供優(yōu)點(diǎn),并提高高速緩存利用率或?qū)⒏咚倬彺嫖粗袦p到最少。此外,在一優(yōu)選實(shí)施例中,應(yīng)用程序的親和性(affinity)被設(shè)為與所選核在一起以使得應(yīng)用程序不在另一個(gè)核上重新調(diào)度。上述方法的另一優(yōu)點(diǎn)是將鎖定以及等待鎖的相關(guān)聯(lián)的浪費(fèi)的CPU周期減到最少。在數(shù)據(jù)在常規(guī)服務(wù)器體系結(jié)構(gòu)中由應(yīng)用程序來(lái)通過網(wǎng)絡(luò)傳送的情況下,網(wǎng)絡(luò)棧必須獲得自旋鎖(spinlock)以同步對(duì)數(shù)據(jù)結(jié)構(gòu)的訪問并且避免對(duì)傳入和傳出分組的處理之間的爭(zhēng)用。這可導(dǎo)致浪費(fèi)的CPU周期自旋同時(shí)等待獲得鎖。本發(fā)明的各實(shí)施例通過按連接來(lái)選擇處理器核的方法來(lái)減輕對(duì)網(wǎng)絡(luò)棧自旋鎖的需求及相關(guān)聯(lián)的開銷。對(duì)CPU核的選擇以及對(duì)用于數(shù)據(jù)傳輸?shù)倪B接的建立在網(wǎng)絡(luò)棧的頂部執(zhí)行。如圖2所示,一旦標(biāo)識(shí)了用于連接的處理器核,對(duì)于該連接的對(duì)出站和入站數(shù)據(jù)的分組處理就在該核上以相同的中斷優(yōu)先級(jí)(IPL)發(fā)生。這通過處理器核的網(wǎng)絡(luò)棧提供了對(duì)每一個(gè)連接的自然同步。由此解除網(wǎng)絡(luò)棧鎖定的負(fù)擔(dān),這避免了由于CPU自旋而浪費(fèi)CPU周期。核選擇過程和算法中變化可取決于服務(wù)器體系結(jié)構(gòu)來(lái)作出。例如,在超線程環(huán)境中,可建立多個(gè)聯(lián)合線程(co-thread)以便進(jìn)行并行處理,但每一個(gè)CPU核都如每一個(gè)聯(lián)合線程在CPU核中所仿真的單獨(dú)的虛擬CPU中執(zhí)行的樣子出現(xiàn)。在該示例中,可實(shí)現(xiàn)其中由于聯(lián)合線程而引起的CPU爭(zhēng)用的概率通過盡可能地保持聯(lián)合線程CPU核空閑來(lái)最小化的實(shí)施例。在該實(shí)施例中,在連接建立期間,優(yōu)先選擇除了聯(lián)合線程CPU核之外的核?;蛘撸谶m用于具有在伙伴核之間共享的高速緩存的體系結(jié)構(gòu)的實(shí)施例中,可選擇伙伴核以利用共享高速緩存的益處。例如,在共享高速緩存的情況下,于是通過如上所述地將接收到的分組處理移交給伙伴核可將高速緩存更新減到最少。對(duì)處理器核的選擇可使用與操作系統(tǒng)(OS)調(diào)度器集成的算法來(lái)實(shí)現(xiàn)以基于所有CPU核上的軟件中斷負(fù)載來(lái)選擇處理器核。由于網(wǎng)絡(luò)連接數(shù)增加,因此期望將棧處理均勻地分布在所有可用的處理器核上。操作系統(tǒng)調(diào)度進(jìn)程但不調(diào)度軟件中斷。在一實(shí)施例中,使用軟件中斷負(fù)載檢測(cè)算法,通過標(biāo)識(shí)具有最少軟件中斷負(fù)載的CPU核來(lái)均勻地分布負(fù)載,該算法與OS調(diào)度器耦合并由網(wǎng)絡(luò)桟用來(lái)選擇要在其中建立連接的CPU核。所建立的連接在一個(gè)CPU核上維護(hù)或者在中斷負(fù)載改變時(shí)遷移到不同的CPU。由此,將全部負(fù)載分布在多個(gè)核上以使得能夠處理更多的數(shù)據(jù)。對(duì)選擇用于連接的特定核的判定取決于負(fù)載最輕的CPU核,該CPU核也可被標(biāo)識(shí)為在執(zhí)行網(wǎng)絡(luò)棧的軟件中斷中或在其上花費(fèi)的時(shí)間量最少的CPU??捎糜谡页鰧?duì)于每一個(gè)連接的最優(yōu)CPU核的數(shù)學(xué)模型的示例在下文中描述?;ㄙM(fèi)在其中網(wǎng)絡(luò)棧對(duì)于樣本《執(zhí)行的軟件中斷優(yōu)先級(jí)(IPL)處和在其上的時(shí)間被表示為A。A3"表示CPU核在n和n-1之間的時(shí)間間隔期間在軟件IPL處和在其上花費(fèi)的總時(shí)間。A3=3—5m"w1L丄J一段時(shí)間內(nèi)的A&的平均值被表示為丄g卩,這是CPU核在一段時(shí)間內(nèi)花費(fèi)在所需軟件IPL中及其上的平均時(shí)間。一戸,匈f2下一內(nèi)核作業(yè)將在具有最低AavgcpW;t的cp^上觸發(fā)。這意味著為建立應(yīng)用程序連接,下一內(nèi)核作業(yè)在已在執(zhí)行網(wǎng)絡(luò)棧的軟件中斷上及其上花費(fèi)最少時(shí)間量的CPU核上觸發(fā)。每一個(gè)cpu核的平均時(shí)間與前一值的偏差被表示為n^^,其中[;kv&,,《-^%^qwJA2<r鴨31這表示與前一計(jì)算的偏差。為了最小化開銷,一實(shí)施例將偏差用作對(duì)于決定是否在下一采樣時(shí)間段期間重新計(jì)算CPU平均值的度量。如果義的前一偏差小于閾值r,則對(duì)于兩倍前一時(shí)間間隔不進(jìn)行對(duì)該CPU的平均值計(jì)算,舉r在iJ,Jf—z^p縱LJ其中3,是對(duì)CPUx的采樣頻率。此外,處理器總數(shù)可被分成相等數(shù)量的分區(qū)并且對(duì)于每一個(gè)樣本,可使用該集合中的一個(gè)分區(qū)來(lái)進(jìn)行平均值計(jì)算。A"vg"c;n^在表示每一個(gè)CPU的平均中斷負(fù)載值的經(jīng)排序的數(shù)組中維護(hù)并且可由網(wǎng)絡(luò)棧用來(lái)確定對(duì)于特定連接的最優(yōu)CPU。示例1:該示例使用概念測(cè)試試驗(yàn)的結(jié)果,該測(cè)試將使用如圖5所示的SMP體系結(jié)構(gòu)來(lái)被實(shí)現(xiàn)為測(cè)試模型的本發(fā)明的一實(shí)施例的性能與使用如圖4所示的包括四個(gè)CPU核430、431、432、433的常規(guī)多核服務(wù)器體系結(jié)構(gòu)來(lái)實(shí)現(xiàn)的測(cè)試模型進(jìn)行比較。在圖4的常規(guī)SMP服務(wù)器體系結(jié)構(gòu)中,所有接收到的分組460-463都通過連接LAN卡450的核431的網(wǎng)絡(luò)棧410來(lái)處理,而所發(fā)送的分組(未示出)通過需要自旋鎖定的、其上執(zhí)行應(yīng)用程序420、421、422、423的核430、431、432、433的各自網(wǎng)絡(luò)棧來(lái)處理。在圖4的服務(wù)器中,接收到的分組460、461、462、463通過連接LAN的CPU核431的網(wǎng)絡(luò)棧410來(lái)順序地處理440、441、442、443直到這些數(shù)據(jù)到達(dá)其各自的目的地應(yīng)用程序420、421、422、423并且這些數(shù)據(jù)由調(diào)度應(yīng)用程序的核上的應(yīng)用程序使用。在圖5的概念分布式棧體系結(jié)構(gòu)的試驗(yàn)中,將接收到的分組560-563與各自的連接540、541、542、543相關(guān)聯(lián)并在必要時(shí)將處理從連接網(wǎng)絡(luò)接口550的核531中的網(wǎng)絡(luò)棧511移交至各自的網(wǎng)絡(luò)棧510、511、512、513以便進(jìn)行處理直到到達(dá)各自的目的地應(yīng)用程序520、521、522、523。所發(fā)送的分組與應(yīng)用程序連接540、541、542、543相關(guān)聯(lián)并通過各自的CPU核530、531、532、533的相應(yīng)的網(wǎng)絡(luò)棧510、511、512、513來(lái)處理并且經(jīng)由網(wǎng)絡(luò)接口550來(lái)發(fā)送。表1提供了相比于圖4的常規(guī)棧的圖2的分布式網(wǎng)絡(luò)棧的試驗(yàn)結(jié)果。<table>tableseeoriginaldocumentpage14</column></row><table>表l:軟件中斷在所有CPU上的有效分布、自旋等待和CPU利用率如相關(guān)領(lǐng)域的技術(shù)人員可以理解的,圖5的分布式棧體系結(jié)構(gòu)通過在每一個(gè)CPU核530-533中放置連接來(lái)實(shí)現(xiàn)傳輸層中的并發(fā)性。通過將諸中斷分配到所有CPU核530-531,連接網(wǎng)絡(luò)接口的CPU核531已解除分組處理的負(fù)擔(dān),如表1的結(jié)果所展示的。結(jié)果示出CPU自旋等待狀態(tài)減少了10%。對(duì)于分布式棧體系結(jié)構(gòu)所實(shí)現(xiàn)的吞吐量至少可與常規(guī)網(wǎng)絡(luò)棧體系結(jié)構(gòu)相比并且如圖6所示,分布式棧體系結(jié)構(gòu)610隨著連接數(shù)和數(shù)據(jù)量的增加開始比常規(guī)體系結(jié)構(gòu)620表現(xiàn)得更好。分布式棧體系結(jié)構(gòu)的CPU利用率由于在與每一個(gè)連接相關(guān)聯(lián)的CPU中創(chuàng)建中斷線程時(shí)所涉及的開銷而或多或少地高于常規(guī)體系結(jié)構(gòu)的CPU利用率。一旦在所有層中實(shí)現(xiàn)并發(fā)性,分布式棧體系結(jié)構(gòu)測(cè)試模型就預(yù)示更多的潛力。權(quán)利要求1.一種在多核處理器平臺(tái)中處理從網(wǎng)絡(luò)接收到的數(shù)據(jù)分組的方法,所述方法包括以下步驟在指定中央處理器單元(CPU)核中從網(wǎng)絡(luò)接口接收中斷以便處理從所述網(wǎng)絡(luò)接收到的數(shù)據(jù)分組;將所述數(shù)據(jù)分組與基于處理器負(fù)載來(lái)選擇的中央處理器單元(CPU)核中所建立的應(yīng)用程序連接相關(guān)聯(lián);以及在與所述應(yīng)用程序連接相關(guān)聯(lián)的CPU核上創(chuàng)建中斷線程以便于處理所接收到的數(shù)據(jù)分組。2.如權(quán)利要求l所述的方法,其特征在于,還包括以下步驟選擇要在其中建立所述應(yīng)用程序連接的CPU核;以及在所選CPU核中建立所述應(yīng)用程序連接。3.如權(quán)利要求2所述的方法,其特征在于,所述CPU核基于每一個(gè)CPU核的處理器中斷負(fù)載來(lái)選擇。4.如權(quán)利要求3所述的方法,其特征在于,所述CPU核通過優(yōu)先選擇與執(zhí)行與所接收到的分組相關(guān)的操作的CPU核共享高速緩沖存儲(chǔ)器的CPU核來(lái)選擇。5.如權(quán)利要求3所述的方法,其特征在于,所述多核處理器適用于啟用超線程,其中每一個(gè)CPU核仿真兩個(gè)虛擬CPU以使得能夠在該CPU核的每一個(gè)虛擬CPU中執(zhí)行聯(lián)合線程,并且其中用于建立所述應(yīng)用程序連接的虛擬CPU在通過優(yōu)先選擇非聯(lián)合線程CPU核來(lái)選擇的CPU核中選擇。6.如權(quán)利要求3所述的方法,其特征在于,所述處理器中斷負(fù)載由操作系統(tǒng)調(diào)度功能來(lái)監(jiān)控。7.如權(quán)利要求2所述的方法,其特征在于,還包括將所述應(yīng)用程序的親和性與所選CPU核相關(guān)聯(lián)的步驟。8.如權(quán)利要求2所述的方法,其特征在于,所述選擇CPU核以及建立連接的步驟在網(wǎng)絡(luò)棧的數(shù)據(jù)鏈路層執(zhí)行。9.一種處理由在多核處理器平臺(tái)的一個(gè)中央處理器單元(CPU)核中執(zhí)行的應(yīng)用程序發(fā)送到網(wǎng)絡(luò)的數(shù)據(jù)分組的方法,所述方法包括以下步驟確定是使用執(zhí)行所述應(yīng)用程序的cpu核還是使用替換中央處理器單元(cpu)核來(lái)執(zhí)行對(duì)傳出數(shù)據(jù)分組的處理;并且在確定使用替換cpu核的情況下基于處理器負(fù)載來(lái)選擇用于傳出分組處理的替換cpu核;在所選替換cpu核中建立應(yīng)用程序連接;將所述數(shù)據(jù)分組與所述應(yīng)用程序連接相關(guān)聯(lián);以及在所選替換cpu核上創(chuàng)建中斷線程以便于處理到所述網(wǎng)絡(luò)接口來(lái)通過所述網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)分組。10.權(quán)利要求9所述的方法,其特征在于,所述cpu核基于每一個(gè)cpu核的處理器中斷負(fù)載來(lái)選擇。11.如權(quán)利要求10所述的方法,其特征在于,所述cpu核通過優(yōu)先選擇與執(zhí)行與所接收到的分組相關(guān)的操作的cpu核共享高速緩沖存儲(chǔ)器的cpu核來(lái)選擇。12.如權(quán)利要求10所述的方法,其特征在于,所述多核處理器適用于啟用超線程,其中每一個(gè)cpu核仿真兩個(gè)虛擬cpu以使得能夠在該cpu核的每一個(gè)虛擬cpu中執(zhí)行聯(lián)合線程,并且其中用于建立所述應(yīng)用程序連接的虛擬cpu在通過優(yōu)先選擇非聯(lián)合線程cpu核來(lái)選擇的cpu核中選擇。13.如權(quán)利要求10所述的方法,其特征在于,所述處理器中斷負(fù)載由操作系統(tǒng)調(diào)度功能來(lái)監(jiān)控。14.如權(quán)利要求9所述的方法,其特征在于,所述選擇替換cpu核以及建立應(yīng)用程序連接的步驟在網(wǎng)絡(luò)棧的會(huì)話層執(zhí)行。15.—種網(wǎng)絡(luò)服務(wù)器系統(tǒng),包括至少一個(gè)具有多個(gè)核的中央處理器單元(cpu);以及網(wǎng)絡(luò)接口,其用于連接到網(wǎng)絡(luò),并適用于在指定cpu核中創(chuàng)建中斷以便處理從所述網(wǎng)絡(luò)接收到的每一個(gè)數(shù)據(jù)分組,其中從所述網(wǎng)絡(luò)接收到的每一個(gè)數(shù)據(jù)分組都與所選cpu核中所建立的應(yīng)用程序連接相關(guān)聯(lián);所述cpu核基于處理器負(fù)載來(lái)選擇;并且在與所述應(yīng)用程序連接相關(guān)聯(lián)的CPU核上創(chuàng)建中斷線程以便于處理所述數(shù)據(jù)分組。16.如權(quán)利要求15所述的網(wǎng)絡(luò)服務(wù)器系統(tǒng),其特征在于,所述CPU核基于每一個(gè)CPU核的處理器中斷負(fù)載來(lái)選擇。17.如權(quán)利要求16所述的網(wǎng)絡(luò)服務(wù)器系統(tǒng),其特征在于,所述CPU核通過優(yōu)先選擇與執(zhí)行與所接收到的分組相關(guān)的操作的CPU核共享高速緩沖存儲(chǔ)器的CPU核來(lái)選擇。18.權(quán)利要求16所述的網(wǎng)絡(luò)服務(wù)器系統(tǒng),其特征在于,每一個(gè)CPU核的處理器中斷負(fù)載由操作系統(tǒng)調(diào)度器功能來(lái)監(jiān)控。19.如權(quán)利要求16所述的網(wǎng)絡(luò)服務(wù)器系統(tǒng),其特征在于,所述多核處理器適用于啟用超線程,其中每一個(gè)CPU核仿真兩個(gè)虛擬CPU以使得能夠在該CPU核的每一個(gè)虛擬CPU中執(zhí)行聯(lián)合線程,并且其中用于建立所述應(yīng)用程序連接的虛擬CPU在通過優(yōu)先選擇非聯(lián)合線程CPU核來(lái)選擇的CPU核中選擇。20.如權(quán)利要求15所述的網(wǎng)絡(luò)服務(wù)器系統(tǒng),其特征在于,對(duì)于從所述網(wǎng)絡(luò)接收到的數(shù)據(jù)分組,所述處理器適用于在網(wǎng)絡(luò)棧的數(shù)據(jù)鏈路層選擇CPU核并建立所述應(yīng)用程序連接。21.—種網(wǎng)絡(luò)服務(wù)器系統(tǒng),包括至少一個(gè)具有多個(gè)核的中央處理器單元(CPU);以及網(wǎng)絡(luò)接口,其用于形成到網(wǎng)絡(luò)的連接,并適用于在指定CPU核中創(chuàng)建中斷以便處理從所述網(wǎng)絡(luò)接收到的每一個(gè)數(shù)據(jù)分組,并且還被修改以使得每一個(gè)CPU核都可訪問用于將數(shù)據(jù)分組傳送到所述網(wǎng)絡(luò)的網(wǎng)絡(luò)接口,其中被發(fā)送到所述網(wǎng)絡(luò)的每一個(gè)數(shù)據(jù)分組都與其中執(zhí)行所述應(yīng)用程序的CPU核或基于處理器負(fù)載來(lái)選擇的替換CPU核中所建立的應(yīng)用程序連接相關(guān)聯(lián);并且在所述應(yīng)用程序連接在替換CPU核中建立的情況下,在與所述應(yīng)用程序連接相關(guān)聯(lián)的CPU核上創(chuàng)建中斷線程以便處理所述數(shù)據(jù)分組。22.如權(quán)利要求21所述的網(wǎng)絡(luò)服務(wù)器系統(tǒng),其特征在于,所述CPU核基于每一個(gè)CPU核的處理器中斷負(fù)載來(lái)選擇。23.如權(quán)利要求22所述的網(wǎng)絡(luò)服務(wù)器系統(tǒng),其特征在于,所述CPU核通過優(yōu)先選擇與執(zhí)行與所接收到的分組相關(guān)的操作的CPU核共享高速緩沖存儲(chǔ)器的CPU核來(lái)選擇。24.如權(quán)利要求22所述的網(wǎng)絡(luò)服務(wù)器系統(tǒng),其特征在于,每一個(gè)CPU核的處理器中斷負(fù)載由操作系統(tǒng)調(diào)度器功能來(lái)監(jiān)控。25.如權(quán)利要求22所述的網(wǎng)絡(luò)服務(wù)器系統(tǒng),其特征在于,所述多核處理器適用于啟用超線程,其中每一個(gè)CPU核仿真兩個(gè)虛擬CPU以使得能夠在該CPU核的每一個(gè)虛擬CPU中執(zhí)行聯(lián)合線程,并且其中用于建立所述應(yīng)用程序連接的虛擬CPU在通過優(yōu)先選擇非聯(lián)合線程CPU核選擇的CPU核中選擇。26.如權(quán)利要求21所述的網(wǎng)絡(luò)服務(wù)器系統(tǒng),其特征在于,對(duì)于被發(fā)送到所述網(wǎng)絡(luò)的數(shù)據(jù)分組,所述處理器適用于在網(wǎng)絡(luò)棧的會(huì)話層選擇CPU核并建立所述應(yīng)用程序連接。全文摘要一種用于在網(wǎng)絡(luò)服務(wù)器系統(tǒng)中處理數(shù)據(jù)分組的方法,該系統(tǒng)包括至少一個(gè)具有多個(gè)核的中央處理器單元(CPU);以及網(wǎng)絡(luò)接口,該網(wǎng)絡(luò)接口用于在網(wǎng)絡(luò)和指定CPU核之間形成到該網(wǎng)絡(luò)的連接,以使得對(duì)于從該網(wǎng)絡(luò)接收到的所有數(shù)據(jù)分組,在該指定CPU核中創(chuàng)建中斷以便于對(duì)接收到的數(shù)據(jù)分組的處理。從該網(wǎng)絡(luò)接收到的每一個(gè)數(shù)據(jù)分組都與基于處理器負(fù)載來(lái)選擇的CPU核中所建立的應(yīng)用程序連接相關(guān)聯(lián),并且在與該應(yīng)用程序連接相關(guān)聯(lián)的CPU核上創(chuàng)建用于處理該數(shù)據(jù)分組的中斷線程。被發(fā)送到網(wǎng)絡(luò)的每一個(gè)數(shù)據(jù)分組都與其中執(zhí)行應(yīng)用程序的CPU核或基于處理器負(fù)載來(lái)選擇的替換CPU核中所建立的應(yīng)用程序連接相關(guān)聯(lián)。在應(yīng)用程序連接在替換CPU核中建立的情況下,在與該連接相關(guān)聯(lián)的CPU核上創(chuàng)建用于處理該數(shù)據(jù)分組的中斷線程。文檔編號(hào)G06F13/24GK101689158SQ200880016822公開日2010年3月31日申請(qǐng)日期2008年7月7日優(yōu)先權(quán)日2007年7月9日發(fā)明者A·Y·謝諾伊,N·馬哈德萬(wàn),S·拉克什米納拉亞申請(qǐng)人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)