專利名稱:基于處理器負載進行動態分段的方法和系統的制作方法
技術領域:
本發明一般涉及分段,并尤其涉及用于根據處理器利用率動態實現分段卸載(segmentation offloading)的由計算機實現的方法、系統和計算機可用代碼。
背景技術:
數據通信近年來因提高的通信標準和網絡可用性而成指數地增長。傳輸控制協議(TCP)是一種確保數據包被發送并被按與它們被發送的順序相同的順序接收的標準,而網際協議(IP)與TCP一起使用以指定信息如何通過因特網在系統之間傳播。大多數計算機具有使用TCP/IP協議通過網絡發送和接收信息的網絡接口卡。
在傳統的網絡接口卡中,在將數據傳遞給網絡接口卡之前TCP棧使用系統處理器將TCP段分解為以太網幀。這需要大量的處理時間,尤其是在其中網絡接口卡每秒可生成數萬中斷的吉比特網絡內。這些中斷利用更多的處理器周期。
在還被稱為“大發送”(large send)的TCP分段卸載中,主機TCP協議棧生成的大小高達64KB的大的TCP段。然后將此大段傳遞給IP協議棧,在那里該段被封裝在單個IP包內。然后僅使用一個中斷將封裝的段傳遞給網絡接口卡設備驅動器,并最后傳遞給網絡接口卡以便傳輸。然后實現TCP分段卸載的網絡接口卡將此單個大TCP段重新分段為多個較小的TCP段,對于標準的以太網連接這些TCP段通常為1460個字節,并為每個段插入必要的以太網/IP/TCP報頭。
使用分段卸載的性能好處是由以下事實得到的,即主機TCP棧可構建較大的包,這通常轉化為主機處理器利用率降低。另外的性能好處是由于以下事實而得到的,即通常較大的PCI數據事務轉化為較高的PCI總線吞吐量。由于將緩沖區分段成以太網幀的工作由網絡接口卡完成,所以處理器可用于執行其他任務。
吞吐量是在特定時間量內傳送的數據量的量度。原始吞吐量是通過適配器的所有數據的總和,而比例吞吐量是每個主機處理器所周期移動的以太網數據的量。對于平均用戶TCP分段卸載通常意味著較高的以太網數據原始吞吐量、較高的以太網數據比例吞吐量以及降低的主機處理器利用率。
在目前的TCP分段卸載實現中,網絡接口卡驅動器通知主機TCP棧網絡接口卡支持TCP分段卸載。主機TCP棧然后使用基于大小的算法自主決定是否創建大TCP段。例如,如果主機TCP棧被給予4KB數據緩沖區來傳輸或在非常段的時間段內被給予許多較小的數據緩沖區,則主機TCP棧可決定創建單個大TCP段或大發送包。
TCP分段卸載的一種重要限制是對于一些網絡接口卡最主要的是那些用微代碼實現TCP分段卸載的網絡接口卡,在使能TCP分段卸載時原始以太網吞吐量實際上較低。此限制是由于網絡接口卡的處理器不能以足夠的速率執行TCP分段卸載功能的事實。在此情況下,以太網比例吞吐量仍可能由于主機TCP棧消耗較少的主機處理器周期而增加,但是原始以太網吞吐量將減小。
如果沒有充分利用主機處理器,則最好不使能TCP分段卸載,以便獲得更好的原始以太網吞吐量性能。但是,如果主機處理器被充分利用并從而影響應用性能、響應時間和總的系統性能,則使能TCP分段卸載特征降低了主機處理器利用率。
TCP分段卸載的另一個限制是為了使能或禁止此特征,網絡接口卡驅動器需要重新配置以便將卸載能力特征通知給主機TCP棧。這除了會導致不必要的網絡停機時間之外還會導致浪費時間和費用。用戶被迫在兩個可能的非動態狀態之間選擇具有提高的以太網性能的、處理器驅動的TCP分段,或具有釋放處理器周期的優點的具有稍低以太網性能的、網絡接口卡驅動的TCP分段卸載。
發明內容
本發明提供了一種使用多個步驟基于處理器負載進行動態分段的由計算機實現的方法、系統和計算機程序產品。如果網絡接口卡被使能進行分段,則確定處理器利用率值是否大于閾值。如果處理器利用率值高于該閾值,則將段卸載給網絡接口卡,其中將段發送給網絡接口卡。
所附權利要求中闡述了被認為是本發明的特點的新穎特征。但是,當結合附圖閱讀時參照下面對說明性實施例的詳細說明將最好地理解本發明本身及其優選使用模式、另外的目的和優點,在這些附圖中圖1是其中可實現本發明的方面的數據處理系統的網絡的圖示;圖2是其中可實現本發明的方面的數據處理系統的框圖;圖3是根據本發明的說明性實施例的網絡接口卡的框圖;圖4是根據本發明的說明性實施例的傳輸控制協議/網際協議(TCP/IP)和類似協議的圖;圖5是示出根據本發明的說明性實施例的針對網絡接口卡的基于系統負載的動態TCP分段的操作的流程圖;圖6是示出在正常處理器工作負載下針對網絡接口卡使用基于系統負載的動態分段的框圖,其間沒有實現TCP分段;以及圖7是示出在高處理器工作負載下針對網絡接口卡使用基于系統負載的動態分段的框圖,其間實現了TCP分段。
具體實施例方式
本發明的不同實施例提供了一種允許通過使用網絡接口卡的分段卸載特征實現網絡性能的動態使用和自優化的由計算機實現的方法、系統和計算機可用代碼。本發明的一說明性實施例可適用于TCP協議。此實施例允許TCP棧在處理器利用率和以太網性能之間動態地達到最優平衡而無需改變網絡接口卡的設置。
使能TCP分段卸載網絡接口卡以進行TCP分段卸載。TCP棧確定處理器使用率是高于還是低于指定閾值。如果處理器利用率低于該閾值,則TCP棧使用處理器正常地處理段。如果處理器利用率高于該閾值,則TCP棧向網絡接口卡發送大包以便分段,其中TCP棧向網絡接口卡發送大包。
本發明的實施例不需要對網絡接口卡進行昂貴和費時的重新配置以使能或禁止卸載特征。如在此定義的,網絡接口卡可以是任何以太網適配器、網絡卡、局域網適配器或用于在電子設備之間發送信息的任何其他的網絡適配器。調制解調器、線纜調制解調器和以太網卡僅是一些目前可用的網絡接口卡類型。
網絡接口卡與網絡接口卡驅動器一起操作。網絡接口卡驅動器是告知操作系統如何將數據提供給網絡接口卡和從網絡接口卡獲得數據以及如何控制網絡接口卡的軟件模塊。網絡接口卡和網絡接口卡驅動器將在此一般地被稱為網絡接口卡。大多數網絡接口卡具有內建在網絡接口卡的專用集成電路(ASIC)內的先進特征。但是,一些網絡接口卡使用微代碼來實現先進特征。結果,網絡接口卡的性能能力可依賴于其是否使用微代碼,以及如果使用,依賴于在網絡接口卡上執行微代碼的性能限制。
圖1-2是其中可實現本發明的實施例的數據處理環境的示例圖。應理解,圖1-2僅是示例性的而非旨在宣稱或暗示對其中可實現本發明的方面或實施例的環境的任何限制。可對所述環境進行許多修改而不會背離本發明的精神和范圍。
現在參照附圖,圖1示出其中可實現本發明的方面的數據處理系統的網絡的圖示。網絡數據處理系統100是其中可實現本發明的實施例的計算機的網絡。網絡數據處理系統100包括網絡102,該網絡是用于在網絡數據處理系統100內連接在一起的各種設備和計算機之間提供通信鏈路的介質。網絡102可包括諸如連線、無線通信鏈路或光纜的連接。
在所示示例內,服務器104和服務器106與存儲單元108一起連接到網絡102。另外,客戶機110、112和114連接到網絡102。這些客戶機110、112和114可以是例如個人計算機或網絡計算機。在所示示例內,服務器104向客戶機110、112和114提供數據例如引導文件、操作系統映象和應用。在此示例內,客戶機110、112和114是服務器104的客戶機。網絡數據處理系統100可包括另外的服務器、客戶機以及其他未示出的設備。
在所示示例內,網絡數據處理系統100是因特網,其中網絡102代表使用傳輸控制協議/網際協議(TCP/IP)協議套以相互通信的網絡和網關的全球性集合。因特網的核心是包括成千上萬的路由數據和消息的商業、政府、教育和其他計算機系統的主要節點或主計算機之間的高速數據通信鏈路的主干線。當然,網絡數據處理系統100還可實現為幾種不同類型的網絡,比如舉例來說,內聯網、局域網(LAN)或廣域網(WAN)。圖1旨在作為一個示例而不是本發明的不同實施例的結構限制。
現在參照圖2,示出其中可實現本發明的方面的數據處理系統的框圖。數據處理系統200是計算機例如圖1中的服務器104或客戶機110的示例,實現本發明的實施例的過程的計算機可用代碼或指令可位于該數據處理系統中。
在所示示例內,數據處理系統200使用包括北橋以及存儲控制器集線器(MCH)208和南橋以及輸入/輸出(I/O)控制器集線器(ICH)210的集線器結構。處理單元202、主存儲器204和圖形處理器218連接到北橋以及存儲控制器集線器208。圖形處理器218可通過加速圖形端口(AGP)連接到北橋以及存儲控制器集線器208。
在所示示例中,網絡接口卡(NIC)212連接到南橋以及I/O控制器集線器210。音頻適配器216、鍵盤和鼠標適配器220、調制解調器222、只讀存儲器(ROM)224、硬盤驅動器(HDD)226、CD-ROM驅動器230、通用串行總線(USB)端口和其他通信端口232、以及PCI/PCIe設備234通過總線238和總線240連接到南橋以及I/O控制器集線器210。PCI/PCIe設備可包括例如網絡接口卡、附加卡和用于筆記本計算機的PC卡。PCI使用卡總線控制器而PCIe不使用。ROM 224可以是例如閃速二進制輸入/輸出系統(BIOS)。
硬盤驅動器226和CD-ROM驅動器230通過總線240連接到南橋以及I/O控制器集線器210。硬盤驅動器226和CD-ROM驅動器230可使用例如集成驅動電子設備(IDE)或串行高級技術附件(SATA)接口。可將超級I/O(SIO)設備236連接到南橋以及I/O控制器集線器210。
操作系統在處理單元202上運行,并協調圖2的數據處理系統200內的各個部件和提供對它們的控制。作為客戶端,操作系統可以是市場上可買到的操作系統例如MicrosoftWindowsXP(Microsoft和Windows是微軟公司在美國、其他國家或兩者的商標)。面向對象的編程系統例如JavaTM編程系統可與該操作系統一起運行,并提供從在數據處理系統200上執行的Java程序或應用對該操作系統的調用(Java是Sun Microsystems公司在美國、其他國家或兩者的商標)。
作為服務器,數據處理系統200可以是例如運行高級交互執行體(AIX)操作系統或LINUX操作系統的IBM eServerTMpSeries計算機系統(eServer,pSeries和AIX是美國國際商業機器公司在美國、其他國家或兩者的商標,而LINUX是Linus Torvalds在美國、其他國家或兩者的商標)。數據處理系統200可以是在處理單元202內包括多個處理器的對稱多處理器(SMP)系統。或者可選擇地,可使用單處理器系統。
用于操作系統、面向對象的編程系統以及應用或程序的指令位于存儲設備例如硬盤驅動器226上,并且可被加載到主存儲器204內以便被處理單元202執行。本發明的實施例的過程由處理單元202使用計算機可用程序代碼執行,該計算機可用程序代碼可位于存儲器比如舉例來說主存儲器204、只讀存儲器224內或一個或多個外圍設備226和230內。
本領域內的那些普通技術人員將理解,圖1-2內的硬件可根據實現而改變。作為對圖1-2內所示的硬件的附加或代替,可使用其他內部硬件或外圍設備例如閃速存儲器、等同非易失性存儲器(equivalent non-volatilememory)或光盤驅動器等。另外,本發明的過程可被應用于多處理器數據處理系統。
在一些說明性示例內,數據處理系統200可以是被配置為具有閃速存儲器以提供用于存儲操作系統文件和/或用戶生成數據的非易失性存儲器的個人數字助理(PDA)。
總線系統可包括一條或多條總線例如圖2內所示的總線238或總線240。當然,總線系統可使用任何類型的通信結構(fabric)或架構(architecture)來實現,該通信結構或架構在附加在該結構或架構上的不同部件或設備之間提供數據傳送。通信單元可包括用于傳送和接收數據的一個或多個設備例如圖2的調制解調器222或網絡接口卡(NIC)212。存儲器可以是例如圖2內的主存儲器204、只讀存儲器224或例如在北橋以及存儲控制器集線器208內發現的高速緩存。圖1-2內所示的示例以及上述示例并非旨在暗示結構限制。例如,數據處理系統200除了采取PDA的形式之外還可以是平板計算機、膝上型計算機或電話設備。
現在參照圖3,示出根據本發明的說明性實施例的網絡接口卡的圖。網絡接口卡300可實現為圖2內的網絡接口卡212。如圖所示,網絡接口卡300包括以太網接口302、數據緩沖器304和PCI總線接口306。這三個部件提供了網絡和數據處理系統的總線之間的路徑。以太網接口302提供了到連接到該數據處理系統的網絡的接口。PCI總線接口306提供了到總線的接口。數據緩沖器304用于存儲通過網絡接口卡300傳輸和接收的數據。此數據緩沖器還包括與SRAM接口的連接以提供額外的存儲器。
網絡接口卡300還包括電可擦可編程序只讀存儲器(EEPROM)接口308、寄存器/配置/狀態/控制單元310、振蕩器312和控制單元314。EEPROM接口308提供了到可包含用于網絡接口卡300的指令和其他配置信息的EEPROM芯片的接口。不同的參數和設置可通過EEPROM接口308存儲在EEPROM芯片上。
寄存器/配置/狀態/控制單元310提供了存儲用于配置和運行網絡接口卡300上的過程的信息的地方。例如,定時器的定時值可存儲在這些寄存器內。另外,不同過程的狀態信息也可存儲在此單元內。振蕩器312提供了用于執行網絡接口卡300上的過程的時鐘信號。
控制單元314控制網絡接口卡300執行的不同過程和功能。控制單元314可采取不同形式。例如,控制單元314可以是處理器或專用集成電路(ASIC)。在這些示例中,用于管理數據流控制的本發明的過程由控制單元314執行。如果該控制單元被實現為處理器,則用于這些過程的指令可存儲在可通過EEPROM接口308訪問的芯片內。
通過以太網接口302在接收操作內接收到數據。此數據被存儲在數據緩沖器304內以便通過PCI總線接口306傳送到數據處理系統。例如,可使用PCI局部總線或經由圖2中的ICH 210將數據傳送到總線上。
圖4是傳輸控制協議/網際協議(TCP/IP)和類似協議的圖并且是根據本發明的說明性實施例示出的。TCP/IP和類似協議被通信架構400利用。在此示例內,通信架構400是4層系統。此架構包括應用層402、傳輸層404、網絡層406和鏈路層408。每一層負責處理不同的通信任務。鏈路層408也被稱為數據鏈路層或網絡接口層,并通常包括操作系統內的設備驅動器以及計算機內的對應的網絡接口卡。此層處理物理地與正使用的網絡介質例如光纜或以太網電纜接口連接的所有硬件細節。
網絡層406也被稱為網際層并處理數據包在網絡內的移動。例如,網絡層406處理在網絡上傳送的各種數據包的路由選擇。TCP/IP套內的網絡層406由一些協議包括網際協議(IP)、網際控制報文協議(ICMP)和網際組管理協議(IGMP)組成。
接下來,傳輸層404提供網絡層406和應用層402之間的接口,該接口有助于兩個主計算機之間的數據傳送。可使用各種傳輸協議實現本發明的實施例內所述的動態分段方法。傳輸層404涉及比如舉例來說將從應用傳遞給該層的數據分成用于下面的網絡層的合適大小的塊,確認接收到的包,并設定超時以確定另一端確認了發送的包。在TCP/IP協議套中,存在兩個明顯不同的傳輸協議TCP和用戶數據報協議(UDP)。TCP提供可靠性服務以確保在兩個主機之間正確地傳輸數據,包括遺失檢測和重發服務。
TCP分段被用作本發明的實施例的示例性實現而決不會將動態分段卸載局限于TCP協議套。在其他實施例中,動態分段卸載可與任何傳輸協議例如作為許多其他可選擇協議中的幾個的用戶數據報協議和其他版本的TCP協議包括TCP校驗和協議一起使用。
相反,用戶數據報協議通過僅將被稱為數據報的數據包從一個主機發送到另一個主機而沒有提供用于確保數據被正確傳送的任何機制,為應用層提供了簡單得多的服務。當使用UDP時,應用層必須執行可靠性功能。
應用層402處理特定應用的細節。幾乎對于每個實現都存在許多常見的TCP/IP應用,包括用于遠程登錄的Telnet;文件傳輸協議(FTP);用于電子郵件的簡單郵件傳輸協議(SMTP);和簡單網絡管理協議(SNMP)。
本發明的實施例的由計算機實現的方法適用于所有層的功能,但是尤其適用于鏈路層中的網絡接口卡。
圖5是示出根據本發明的說明性實施例的針對網絡接口卡的基于系統負載的動態TCP分段的操作的流程圖。TCP是經常用于數據傳送的協議,并因此提供了本發明的一個實施例在一示例性協議中的實現的說明性示例。TCP棧在設備的操作系統中實現,并被處理器執行。TCP棧發送并從網絡接口卡驅動器接收信息以確保成功分段。用于TCP棧和對應操作系統的指令可在數據處理系統例如硬盤驅動器226、主存儲器204內被存儲、加載和執行,并被圖2內所示的處理單元202或網絡接口卡(NIC)212執行。
當數據處理系統具有多個微代碼和非微代碼網絡接口卡時,TCP棧確定哪個網絡接口卡能夠進行分段卸載。TCP棧可評價網絡接口卡的執行速度以了解分段卸載是否有益。在一些情況下,將分段卸載給網絡接口卡由于網絡接口卡的微代碼執行限制而不是可行的選項。如果分段卸載不會提高以太網性能,則不管處理器利用率如何TCP棧都可選擇不實現分段卸載。
當網絡接口卡已使能TCP分段卸載時使用本發明的實施例(步驟502)。TCP棧確定段大小是否大于最大段大小(步驟504)。該最大段大小是用于確定一次可傳輸的數據的最大量的TCP標準。最大段大小通常是最大傳輸單位大小減去TCP/IP/以太網報頭。TCP棧總是根據網絡接口的類型確定用于傳輸的可協商的最大段大小是多少。如果將大于最大段大小的段或大于最大傳輸單位的包傳到網絡接口卡,則必須通過將其分成更小的段或包來進行“再分段”或“分裂”以便適合傳輸協議的標準格式。
如果段不大于最大段大小(步驟504),則正常處理段。TCP棧使用處理器處理段(步驟506)并如通常沒有分段卸載時所做的那樣將它們封裝成包。被封裝的包是在單個傳輸單位內附加有必要的報頭信息的合適大小的段。針對其他協議的正常處理需要根據用于段大小和報頭信息的可應用的協議進行封裝。TCP棧將標準的被封裝的包發送給網絡接口卡(步驟508)。網絡接口卡在網絡中發送這些包(步驟510)。
標準以太網接口的標準最大傳輸單位是被封裝時大約1500個字節。使用被設定傳輸以太網巨型幀(jumbo frame)的網絡接口卡的最大傳輸單位是9014個字節。
可靠的網絡已促使更多地使用具有增加的最大傳輸單位的協議,因為吞吐量和網絡性能通常因發送和接收較大的包而增加。最大段大小和最大傳輸單位可根據協議、網絡接口卡和網絡接口而改變,但是本發明的實施例的應用可應用于被使能進行分段卸載的所有網絡接口卡。通常,段的處理器處理比基于微代碼的網絡接口卡處理快,這使以太網性能最大化。
在一個說明性實施例中,主機TCP棧知道主處理器利用率以便確定何時使用卸載。一閾值指定這樣的的時間點,在該時間點上,因為分段卸載以系統性能為代價給處理器利用率造成負擔,TCP分段卸載應開始。將處理器利用率值與該閾值相比較以判定何時應開始TCP分段卸載。處理器利用率值可以是基于處理器負載和利用率的絕對值、平均值(average)、時間平均值(time average)、均值(mean)或其他統計數或值。
在該說明性實施例中,TCP棧使用系統調用或系統信息請求輪詢處理器。可從單個請求或多個請求或多個請求的平均得到處理器利用率值。在一個實施例中,處理器利用率是基于在特定時間量內輪詢的平均處理器利用率。例如,可在一秒的時間內收集并平均多個處理器利用率值以將該處理器利用率值與閾值相比較。
所述閾值可以是用戶指定的值,但是在說明性實施例內包括缺省值。例如,在大多數情況下,70%到100%利用率之間的閾值有效地觸發分段卸載。可根據不同的因素例如個人偏好、平均處理器使用或任何其他相關因素設定閾值。在較高閾值的情況下,TCP棧較不經常實現基于正常處理器使用的卸載分段。
再次參照步驟504,如果段等于或小于最大段大小,則TCP棧使用處理器來處理段(步驟506),并如通常沒有分段卸載時所做的那樣將它們封裝成包。TCP棧將標準的被封裝的包發送給網絡接口卡(步驟508)。網絡接口卡將包發送到網絡上(步驟510)。
再次參照步驟504,如果段大于最大段大小,則TCP棧使用處理器利用率值來確定該值是否高于閾值(步驟512)。
在步驟512,如果系統處理器利用率高于閾值,則使用TCP分段包到網絡接口卡的動態卸載處理。盡管TCP分段卸載通常減小了原始以太網吞吐量,但是比例吞吐量和總系統性能可增加。這些性能增加是由于當處理器已被利用到高于指定閾值時沒有進一步使處理器負擔TCP分段。此特征允許該處理器的處理能力用于其他應用和過程,從而增加總系統性能。
TCP分段卸載由TCP棧通過向網絡接口卡發送大TCP段實現(步驟514)。“大發送”是大于接口協議的最大傳輸單位的段。如文中定義的,大發送是在被使用合適的協議發送之前必須被網絡接口卡分成較小段以便傳輸的段大小。在一些TCP實施例中,大發送的大小可高達64千字節。如參照步驟514說明的,TCP棧通過發送大段迫使網絡接口卡在所述的條件下執行分段卸載。在一些情況下,網絡接口卡驅動器必須從TCP棧接收到標記該包為“大發送”包的標志。在從TCP棧發送大分段時此標記將伴隨該大分段。網絡接口卡執行TCP分段并在內部封裝段(步驟516),釋放了用于非以太網相關任務的處理器周期,從而提高總系統性能。在步驟516,一旦網絡接口卡已執行TCP分段和封裝,為每幀插入合適的以太網/IP/TCP報頭,網絡接口卡發送這些包(步驟510)。
圖6是示出在正常處理器利用率下針對網絡接口卡使用基于系統負載的動態分段的框圖,其間沒有實現分段。動態分段可與如圖4的傳輸404中所示的傳輸層協議例如用于以太網接口的TCP一起執行。不管TCP棧是否引發分段,都使能網絡接口卡進行TCP分段602。當處理器利用率604處于等于或低于閾值608的處理器利用率值606時,TCP棧執行分段610。TCP棧執行分段610,是因為存在足夠的自由周期612以確保不會以其他處理器過程為代價進行分段。結果,當處理器利用率604等于或低于閾值606時,通過使用處理器的自由周期612進行分段610而使以太網性能614最大化。
圖7是示出在重處理器工作負載下針對網絡接口卡使用基于系統負載的動態分段的框圖,其間實現了分段。動態分段可與傳輸層協議例如圖4的傳輸404一起執行。本實施例允許網絡接口卡總是被使能進行TCP分段702。網絡接口卡僅在TCP棧確定處理器利用率706處于高于閾值710的利用率值708時才執行分段卸載704。TCP棧通過向網絡接口卡傳遞“大傳送”包以便分段704和傳輸來強制進行分段卸載704。由于處理器利用率值708高于閾值710,所以很可能處理器沒有足夠的自由周期712來執行TCP棧指導的分段以及給予它的其他過程。如果處理器利用率706飽和,則整個系統會以TCP分段為代價而減慢。在分段卸載704期間,處理器被解除了TCP分段,但是原始以太網性能714可能因執行卸載704的吞吐量損失而降低。
在大多數情況下,如果處理器如此忙于執行TCP棧分段以致于處理器不能足夠地執行其正在處理的其他任務,則增加的以太網性能714是不相關的。本實施例允許根據處理器工作負載706優化以太網性能714。只有在TCP分段被卸載將通過增加用于其他任務的自由處理器周期712而增加系統性能時,TCP分段才被卸載704。結果,整個系統以最大水平執行,并且以太網性能714不會阻礙處理器。原始以太網吞吐量可能在卸載期間減小,但是比例以太網吞吐量和總系統性能將增加。
在這些示例中,本發明在操作系統TCP棧內中實現,因為這種實現不需要大量的驅動器修改。在其他實施例內,當處理器利用率值高于閾值時,分段可由與網絡接口卡相聯系的軟件而不是由網絡接口卡執行。
本發明可采取完全硬件實施例、完全軟件實施例或包含硬件和軟件部件兩者的實施例的形式。在一優選實施例中,本發明在包括但不局限于固件、駐留軟件、微代碼等的軟件中實現。
此外,本發明可采取可從計算機可用或計算機可讀介質訪問的計算機程序產品的形式,該介質提供程序代碼以便由計算機或任何指令執行系統使用或者與其相聯系地使用。對于此說明的目的而言,計算機可用或計算機可讀介質可以是可包含、存儲、傳送、傳播或輸送程序以便由指令執行系統、裝置或設備使用或者與其相聯系地使用的任何裝置。
所述介質可以是電子、磁、光、電磁、紅外線或半導體系統(或裝置或設備)或傳播介質。計算機可讀介質的示例包括半導體或固態存儲器、磁帶、可拆裝計算機軟盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、剛性磁盤和光盤。目前的光盤的示例包括光盤-只讀存儲器(CD-ROM)、光盤-讀/寫(CD-R/W)和DVD。
適于存儲和/或執行程序代碼的數據處理系統將包括通過系統總線直接或間接連接到存儲元件的至少一個處理器。存儲元件可包括在實際執行該程序代碼期間使用的本地存儲器、大容量存儲器(bulk storage)和臨時存儲至少一些程序代碼以便減小在執行期間必須從大容量存儲器檢索代碼的次數的高速緩沖存儲器。
本發明的說明是為例示和說明而給出的,而不是旨在是詳盡的或者局限于所公開形式的本發明。許多修改和變型對本領域內的那些普通技術人員將是顯然的。選擇和說明這些實施例以便最好地解釋本發明的原理、實際應用,并使本領域內的其他普通技術人員能夠理解本發明,以實現帶有適合于設想的具體使用的多種修改的多個實施例。
權利要求
1.一種根據處理器負載進行動態分段的由計算機實現的方法,該計算機實現方法包括響應于網絡接口卡被使能進行分段,確定處理器利用率值是否高于閾值;以及響應于該處理器利用率值高于該閾值,將分段卸載給該網絡接口卡,其中將段發送給該網絡接口卡。
2.根據權利要求1的由計算機實現的方法,還包括響應于所述處理器利用率值低于或等于所述閾值,使用傳輸控制協議棧正常地處理段。
3.根據權利要求1的由計算機實現的方法,其中,所述卸載步驟還包括創建具有大于被正常處理以進行分段的大小的段;以及將該段發送給所述網絡接口卡以便進行分段。
4.根據權利要求3的由計算機實現的方法,其中,所述具有大于被正常處理以進行分段的大小的段大于接口協議的最大段大小。
5.根據權利要求4的由計算機實現的方法,其中,所述接口協議是TCP/IP。
6.根據權利要求4的由計算機實現的方法,其中,所述接口協議是用戶數據報協議。
7.根據權利要求1的由計算機實現的方法,其中,在卸載分段期間被網絡接口卡分段的段符合標準以太網協議。
8.根據權利要求1的由計算機實現的方法,其中,在卸載分段期間被網絡接口卡分段的段符合巨型幀以太網協議。
9.根據權利要求1的方法,其中,所述閾值是用戶指定的。
10.根據權利要求1的方法,其中,所述閾值的缺省值在70%到100%處理器利用率之間。
11.根據權利要求1的方法,其中,所述確定還包括輪詢處理器利用率。
12.根據權利要求1的方法,其中,所述處理器利用率值是平均值以防止在卸載分段之間的過多切換。
13.根據權利要求10的方法,其中,所述處理器利用率值是按時間計算的平均值。
14.根據權利要求1的方法,還包括確定網絡接口卡是基于微代碼的網絡接口卡還是非基于微代碼的網絡接口卡。
15.根據權利要求14的方法,還包括評估基于微代碼的網絡接口卡的性能限制,其中如果該基于微代碼的網絡接口卡執行分段比正常分段處理慢,則不處理段。
16.一種用于根據處理器工作負載動態卸載分段的系統,該系統包括用于運行操作系統的處理器,其中處理器負載由處理器利用率值指示,其中該操作系統包括用于控制分段的棧;可操作地連接到該處理器的用于存儲該操作系統的存儲器,其中該操作系統可被加載到主存儲器中以便被該處理器執行;以及可操作地連接到該處理器和該存儲器的網絡接口卡,其中該網絡接口卡被使能進行分段,其中如果處理器利用率值高于閾值,則將段發送給該網絡接口卡以便進行分段卸載。
17.根據權利要求16的系統,其中,所述用于控制分段的棧是TCP棧。
18.一種包括計算機可用介質的計算機程序產品,該計算機可用介質包含用于根據前述方法權利要求的任何一個方法基于處理器負載執行動態分段的計算機可用程序代碼。
全文摘要
本發明提供了一種使用多個步驟基于處理器負載進行動態分段的由計算機實現的方法、系統和計算機程序產品。如果網絡接口卡被使能進行分段,則確定處理器利用率值是否大于閾值。如果處理器利用率值高于該閾值,則將段卸載給網絡接口卡,其中將段發送給網絡接口卡。
文檔編號H04L29/06GK1905524SQ20061007498
公開日2007年1月31日 申請日期2006年4月25日 優先權日2005年7月29日
發明者O·卡多納, J·B·坎寧安 申請人:國際商業機器公司