專利名稱:用于在多處理器核心系統(tǒng)中執(zhí)行節(jié)能的網絡數據包處理的方法和裝置的制作方法
技術領域:
本公開涉及并且具體涉及多處理器核心系統(tǒng)中的節(jié)能,并且具體涉及節(jié)能的網絡數據包處理。
背景技術:
一般,具有多個處理器核心的計算機系統(tǒng)通過在所有的處理器核心之間分配工作負荷來處理高工作負荷。然而,隨著工作負荷減少,多個處理器核心中的每一個可能沒有被充分利用。為了減小低工作負荷時多個處理器核心的功耗,操作系統(tǒng)可以基于系統(tǒng)使用水平來調整使用的處理器核心的數量。未被使用的處理器核心被置于低功率空閑狀態(tài)(“擱置的”)并且可以保持該低功率空閑狀態(tài)較長的連續(xù)時間間隔。操作系統(tǒng)繼續(xù)在沒有處于低功率空閑狀態(tài)的處理器核心之間分配工作負荷。
隨著下面詳細描述的進行,并且在參照附圖后,所要求主題的實施例的特征將變得顯而易見,在附圖中相同的數字描述相同的部件,并且在附圖中圖1是包括支持接收側調節(jié)的網絡接口控制器的實施例的系統(tǒng)的框圖;圖2是示出了圖1中所示的網絡接口控制器和存儲器的實施例的框圖;圖3是根據本發(fā)明的原理動態(tài)地調整核心相關性(affinity)設置的方法的實施例的流程圖;以及圖4是示出了圖1中所示的網絡接口控制器和存儲器的另一實施例的框圖。雖然參考所要求主題的示例性實施例進行下面的詳細描述,但是對本領域技術人員來說,其的多種替換、修改以及變型將是顯而易見的。因此,所要求主題旨在被視為是廣泛的,并且僅如所附權利要求闡述的那樣進行限定。
具體實施例方式計算機系統(tǒng)可以包括網絡接口控制器(適配器、卡),該網絡接口控制器接收來自網絡的網絡數據包并且將用于處理的所接收的網絡數據包轉發(fā)至多個處理器核心中的一個。在處理器核心之間分配的工作負荷可以包括對由網絡接口控制器接收的網絡數據包的處理。例如,在計算機系統(tǒng)中,對網絡數據包的處理可以在處理器核心之間分配,使得對相同通信流(例如,具有相同源地址和目的地址的網絡數據包)的處理由相同的處理器核心執(zhí)行。當工作負荷低時,操作系統(tǒng)可以僅使用多個處理器核心的一個子集,并且將其它的處理器核心置于低功率空閑狀態(tài)。然而,如果特定通信流的所接收的要被處理的網絡數據包被指派給了處于低功率空閑狀態(tài)的處理器核心(該通信流的核心相關性設置),則該處
4理器核心從低功率空閑狀態(tài)喚醒。結果,處于低功率空閑狀態(tài)的處理器核心不具有保持低功率空閑狀態(tài)較長時間的機會。本發(fā)明實施例基于操作系統(tǒng)是否將任意的處理器核心置于低功率空閑狀態(tài)來動態(tài)地調整網絡數據包處理的核心相關設置。將對于具有支持由Microsoft 的Windows 操作系統(tǒng)(OS)使用的接收側調節(jié) (RSS)的網絡接口控制器的計算機系統(tǒng)描述本發(fā)明實施例。然而,本發(fā)明不限于RSS。在其它實施例中,網絡適配器可以支持由包括具有功率節(jié)省模式特征的調度器的Linux操作系統(tǒng)或者包括功率節(jié)省模式的任意其它操作系統(tǒng)使用的可調節(jié)輸入/輸出(I/O)。圖1是包括支持接收側調節(jié)的網絡接口控制器108的實施例的系統(tǒng)100的框圖。系統(tǒng)100包括處理器101、存儲控制器中心(MCH) 102和輸入/輸出(I/O)控制器中心 (ICH) 104。MCH 102包括控制處理器101和存儲器110之間的通信的存儲控制器106。處理器101和MCH 102通過系統(tǒng)總線116進行通信。處理器101可以是多核心處理器,諸如lntel Pentium D、lntel Xeon 處理器、 或者Intel Core 雙核處理器、Intel CoreTM i7處理器或者任意其它類型的處理器。在所示出的實施例中,系統(tǒng)包括兩個多核心處理器101,每個均具有至少兩個處理器核心(“核心”)122。在一個實施例中,每個多核心處理器包括四個核心122。存儲器110可以是動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)、同步動態(tài)隨機存取存儲器(SDRAM)、雙數據速率2 (DDR2) RAM或Rambus動態(tài)隨機存取存儲器 (RDRAM),或者任意其它類型的存儲器。ICH 104可以使用諸如直接媒體接口(DMI)的高速芯片到芯片互聯(lián)114來耦合至 MCH 102。DMI經由兩個單向通道支持2千兆比特/秒的并發(fā)傳輸速率。ICH 104可以包括存儲輸入/輸出(I/O)控制器,用于控制與耦合至該ICH 104的至少一個存儲設備112的通信。例如,該存儲設備可以是盤驅動器、數字視頻盤(DVD)驅動器、光盤(⑶)驅動器、獨立冗余磁盤陣列(RAID)、帶驅動器或者其它存儲設備。ICH 104可以使用諸如串行連接小型計算機系統(tǒng)接口(SAQ或者串行高級技術附件(SATA)等的串行存儲協(xié)議來通過存儲協(xié)議互聯(lián)118與存儲設備112進行通信。在另一實施例中,網絡接口控制器108可以包括在沒有包括存儲I/O控制器120 的ICH 104中,或者可以包括在插入系統(tǒng)100的系統(tǒng)卡槽中的分離的網絡接口卡上。圖2是示出了圖1中所示的網絡接口控制器108和存儲器110的實施例的框圖。 網絡接口控制器108包括散列功能單元220、間接表230和多個硬件接收隊列202。存儲器 110包括操作系統(tǒng)內核觀0、濾波器驅動器210和網絡設備驅動器(微端口驅動器)270。在一個實施例中,散列功能單元220和間接表230包括在網絡接口控制器(“NIC”)108中。 在另一實施例中,這些部件中的一些或者這些部件中的一些元件可以位于網絡接口控制器 108的外部。在所示出的實施例中,微端口驅動器270和濾波器驅動器210是 Micorsoft Windows 操作系統(tǒng)模型(WDM)的部件。WDM包括可以是類驅動器(class driver)或者微端口驅動器的設備功能驅動器。微端口驅動器支持特定類型的設備,例如, 特定的網絡接口控制器108。濾波器驅動器210是可選的驅動器,其將值添加至或者修改功能驅動器(微端口驅動器)270的行為。
網絡驅動器接口規(guī)范(NDIQ是經由網絡接口控制器110的應用程序接口(API) 訪問的函數庫。NDIS用作7層開放式系統(tǒng)互聯(lián)(OSI)中的第二層(鏈路層)和第三層(網絡層)之間的接口。庫函數包括對象標識符(OID)。網絡接口控制器108可以使用散列功能單元220中的散列函數,來通過所接收的網絡數據包中的散列類型(例如,頭部中的一個或多個字段)計算散列值。散列值的多個最低有效位可以用來對間接表230中的項進行索引,其中該間接表230中的項識別用于進行所接收數據包的處理的處理器核心122(圖1)并且識別用于存儲所接收的數據包的多個接收隊列202中的一個。網絡接口控制器108可以中斷所識別的處理器核心122。在實施例中,當每個網絡數據包由網絡接口控制器108接收時,與該網絡數據包相關聯(lián)的“流”被確定??梢曰诎ㄔ跀祿械腡CP頭部和網際協(xié)議(IP)頭部中的字段的值,來確定傳輸控制協(xié)議(TCP)數據包的“流”。例如,該“流”的流標識符可以依賴于包括在所接收網絡數據包中的IP頭部中的IP源地址和IP目的地址以及TCP頭部中的源端口地址和目的端口地址的組合。提供多個硬件接收隊列202以存儲所接收的網絡數據包。為了確保特定流的按次序的數據包傳送,每個硬件接收隊列202可以被指派給不同的流以及指派給多個處理器核心122中的一個。因此,多個硬件接收隊列202中的每個經由間接表230而與多個核心處理器122中的一個相關聯(lián)。在所示出的實施例中,網絡接口控制器108具有8個接收隊列202。然而,接收隊列202的數量不限于8個。在其它的實施例中,存在更多或者更少的接收隊列202。所接收的網絡數據包被存儲在多個接收隊列202中的一個中。每個接收隊列的數據包處理可以與特定的處理器核心122相關。在本發(fā)明的實施例中,基于處于功率節(jié)省空閑狀態(tài)(“擱置的”)的處理器核心122的數量來動態(tài)地調整數據包處理的核心相關性設置。下面的表1示出了間接表230的示例,以及在具有8個核心和8個接收隊列的系統(tǒng)中,對接收隊列202到處理器核心122的初始指派,以在所有的處理器核心122中分配接收數據包處理。
接收隊列核心 ~~0 0 ~i i ~~2 2 ~~33
~4
~~56
~~6權利要求
1.一種方法,包括監(jiān)控多個處理單元中的每一個的低功率空閑狀態(tài);以及將指派給具有低功率空閑狀態(tài)的處理單元的流適應性地重新指派給具有非低功率空閑狀態(tài)的其它處理單元,以減少所述多個處理單元的能量消耗。
2.根據權利要求1所述的方法,其中,適應性地重新指派流包括通過間接表來重新指派所述流,所述間接表包括多個項,每個項包括對與隊列相關聯(lián)的流被指派到的處理單元的識別。
3.根據權利要求1所述的方法,其中,對所述多個處理單元的低功率空閑狀態(tài)的監(jiān)控由操作系統(tǒng)來執(zhí)行。
4.根據權利要求1所述的方法,其中,對所述多個處理單元的低功率空閑狀態(tài)的監(jiān)控由與網絡接口控制器相關聯(lián)的驅動器來執(zhí)行。
5.根據權利要求4所述的方法,其中,所述驅動器是濾波器驅動器。
6.一種制品,包括具有相關聯(lián)的信息的機器可訪問介質,其中當被訪問時,所述信息導致機器執(zhí)行監(jiān)控多個處理單元中的每一個的低功率空閑狀態(tài);以及將指派給具有低功率空閑狀態(tài)的處理單元的流適應性地重新指派給具有非低功率空閑狀態(tài)的其它處理單元,以減少所述多個處理單元的能量消耗。
7.根據權利要求6所述的制品,其中,適應性地重新指派流包括通過間接表來重新指派所述流,所述間接表包括多個項,每個項包括對與隊列相關聯(lián)的流被指派到的處理單元的識別。
8.根據權利要求6所述的制品,其中,對所述多個處理單元的低功率空閑狀態(tài)的監(jiān)控由操作系統(tǒng)來執(zhí)行。
9.根據權利要求6所述的制品,其中,對所述多個處理單元的低功率空閑狀態(tài)的監(jiān)控由與網絡接口控制器相關聯(lián)的驅動器來執(zhí)行。
10.一種裝置,包括多個處理單元;以及用于監(jiān)控所述多個處理單元中的每一個的低功率空閑狀態(tài)以及將指派給具有低功率空閑狀態(tài)的處理單元的流適應性地重新指派給具有非低功率空閑狀態(tài)的其它處理單元以減少所述多個處理單元的能量消耗的模塊。
11.根據權利要求10所述的裝置,還包括間接表,所述間接表包括多個項,每個項包括對與隊列相關聯(lián)的流被指派到的處理單元的識別,所述模塊適應性地重新指派流是通過經由所述間接表重新指派所述流來進行的。
12.根據權利要求10所述的裝置,其中,所述模塊包括在操作系統(tǒng)中。
13.根據權利要求10所述的裝置,其中,所述模塊是與網絡接口控制器相關聯(lián)的驅動ο
14.根據權利要求13所述的裝置,其中,所述驅動器是濾波器驅動器。
15.一種系統(tǒng),包括存儲與從網絡接收的流相關聯(lián)的數據包的盤驅動器;多個處理單元;以及用于監(jiān)控所述多個處理單元中的每一個的低功率空閑狀態(tài)以及將指派給具有低功率空閑狀態(tài)的處理單元的流適應性地重新指派給具有非低功率空閑狀態(tài)的其它處理單元以減少所述多個處理單元的能量消耗的模塊。
16.根據權利要求15所述的系統(tǒng),還包括間接表,所述間接表包括多個項,每個項包括對與隊列相關聯(lián)的流被指派到的處理單元的識別,所述模塊適應性地重新指派流是通過經由所述間接表重新指派所述流來進行的。
17.根據權利要求15所述的系統(tǒng),其中,所述模塊包括在操作系統(tǒng)中。
18.根據權利要求15所述的系統(tǒng),其中,所述模塊是與網絡接口控制器相關聯(lián)的驅動器。
19.根據權利要求18所述的系統(tǒng),其中,所述驅動器是濾波器驅動器。
全文摘要
提供了一種管理網絡數據包處理的核心相關性的方法和裝置。包括多個處理單元的系統(tǒng)中的該多個處理單元的低功率空閑狀態(tài)被監(jiān)控。網絡數據包處理被動態(tài)地重新指派給處于非低功率空閑狀態(tài)的處理單元,以增加處于低功率空閑狀態(tài)的處理單元的低功率空閑狀態(tài)時段,從而帶來減小的能量消耗。
文檔編號G06F9/46GK102460342SQ201080028104
公開日2012年5月16日 申請日期2010年6月25日 優(yōu)先權日2009年6月26日
發(fā)明者C-F·辛, J-s·蔡, T-Y·C·泰 申請人:英特爾公司