我們分別實測SNP與I/OAT的效能,在10GbE與多埠GbE環境均可明顯改進傳輸效能且降低處理器利用率。更重要的是,只要硬體規格許可,SNP與I/OAT都是不吃白不吃的免費午餐,不會增加伺服器的額外成本。

疊床架屋的電腦架構,並不適合網路傳輸,尤其是接收端
透過軟體實作的通訊協定堆疊所帶來的額外負擔(Overhead),往往是改進網路效能最大的挑戰,今日網路通訊協定的複雜度往往最容易被人所忽略。

打造直達應用程式介面的煙囪與更大肚量的接收端
TCP煙囪卸載就是一條從網路卡驅動程式直達應用程式介面的資料傳輸管道,分離TCP封包處理流程,藉由共通的高階裝置介面,將其轉移給任何可支援TOE的網路卡。

結合NetDMA,英特爾I/OAT根除記憶體延遲問題
當網路晶片接收封包時,名為QuickData的NetDMA資料處理單元,就立刻分離封包標頭與資料區域,讓記憶體至記憶體的資料傳輸處理毋需處理器插手,大幅降低處理器執行單元利用率。

展望未來:支援IPv6的NDIS 6.0與縮短網路延遲的I/OAT2
NDIS 6.0驅動程式架構,已經整合SNP的相關技術,TCP卸載功能也支援IPv6的IPsec;而英特爾預定今年下半年推出的新世代Xeon MP平臺,將首度支援可降低網路傳輸延遲的I/OAT2。

SNP與I/OAT並非雞肋,不要讓白吃的午餐飛掉了
下載安裝SNP對使用Windows Server的用戶只是舉手之勞,新購英特爾Bensley平臺Xeon伺服器的企業,也能透過啟動與安裝讓多埠GbE的效能表現脫胎換骨。知名作家Andrew Tanenbaum曾在計算機網路重量級教科書「Computer Networks」深入分析影響網路效能的諸多因素,其中第一條就是「網路的效能最後都靠處理器去支撐」。處理器畢竟只是影響電腦效能的一部分,我們可以將其延伸至整個電腦包含軟硬體的組織架構。電腦的架構越好,就越有機會把網路頻寬發揮到最大。

歷史的教訓證明,透過軟體實作的通訊協定堆疊所帶來的額外負擔(Overhead),往往是改進網路效能最大的挑戰,今日網路通訊協定的複雜度往往最容易被人所忽略。

以TCP連線為例,其封包流程就需要大量的處理作業,包含解析TCP標頭欄位、驗證TCP總和檢查碼、處理序號、認可號碼、TCP旗標與來源/目的連接埠,建立與傳送端的認可通知,將送出的資料加以分割,接收視窗、傳送視窗與應用程式在記憶體之間搬移資料,管理重新傳輸用的計時器等。因此要建立一個高速網路環境,加速軟體執行效率,強化處理器的速度絕對是不可或缺的。

疊床架屋的電腦架構,並不適合網路傳輸,尤其是接收端
很不幸的,雖然Andrew Tanenbaum表示「網路晶片應該越靠近處理器越好,而且盡量該讓處理器做更多的工作」,今日多數個人電腦與伺服器的系統架構並非為網路傳輸的特性量身訂做,提昇處理器效率不見得有效,畢竟電腦組織架構中存在著不少瓶頸,如疊床架屋的匯流排與快取記憶體階層等,這些都會限制處理器實際發揮的效益。

尤其處理器與記憶體的效能落差與日俱增,從網路晶片接收到封包開始,一路搬移資料至記憶體,在應用程式緩衝區之間移動封包內容,記憶體資料搬移(Memory Movement)的延遲所造成的影響就越趨嚴重。換言之,處理器運算資源浪費在反覆的記憶體存取搬移動作,形同空轉的耗油引擎。

當然,軟硬體廠商也尋求解決之道,近年來日趨普及的TCP/IP負擔卸載引擎(TOE,TCP/IP Offload Engine)與RDMA(Remote Direct Memory Access)通訊協定就是最好的例子,前者將部分TCP/IP通訊協定轉交由網路晶片組所處理,減輕處理器的壓力,後者事先在傳輸/接收端設定好存放封包資料的記憶體位址,同時進行控制狀態與資料傳輸動作,減少記憶體搬移的負擔。

上述兩者均有其限制。首先,TOE處理器缺乏業界共通標準與應用程式介面,各家網路晶片廠商的實作均不盡相同,壓縮作業系統最佳化的空間與不同廠牌網卡的互通性。其次,RDMA採用點對點架構,需要收發兩端的電腦的軟硬體均支援該協定,且其傳送資料至遠端電腦記憶體的運作特性也帶來網路安全的威脅。

隱而不現的是,TOE和RDMA都是針對8kB以上大型封包的傳輸與長時間連線而發展,適合線上儲存與大型資料庫的行為模式,但近來資料中心的新興應用,如Web服務、RFID、即時通訊、叢集運算與線上影音等,都多半使用1kB以下的小封包與短時間連線,嚴重降低TOE與RDMA的實際效能。打造直達應用程式介面的煙囪與更大肚量的接收端

微軟在2004年4月發表的Windows Scalable Networking初步概念,在去年3月正式成為可免費下載的Scalable Networking Pack(SNP)與NDIS 5.2 Miniport驅動程式架構,透過TCP煙囪卸載(TCP Chimney Offload)、接收端調整(Receive-Side Scaling,RSS)與NetDMA技術,毋需購買新的伺服器與硬體,有效利用現有網路卡內建的硬體卸載功能與日趨普及的多核心處理器運算資源。SNP同時提供Windows Server 2003與Windows XP 64位元版本。

如同其名,TCP煙囪卸載就是一條從網路卡驅動程式直達應用程式介面的資料傳輸管道,分離TCP封包處理流程,藉由共通的高階裝置介面,將其轉移給任何可支援TOE的網路卡,便於釋出處理器的運算資源供作他用,如服務更多的用戶端或加快服務反應時間。

由於既有NDIS 5.1驅動程式架構並不能讓多處理器/多核心同時處理接收封包,單一網路卡只能與單一處理器相關連,導致效能延展性受限,或容易產生因與網路介面卡相關聯的處理器無法及時應付傳入的流量,網路介面卡只好捨棄封包再重新傳輸而降低效能。RSS技術就可將傳入的流量分散給所有的處理器負責,動態平衡每一個處理器的負載,假如網路卡支援接收端調整,就可以在不增加伺服器的情況下,處理更多傳入流量。


微軟Scalable Networking Pack

打通從網路卡驅動程式直奔應用程式介面的煙囪,充分發揮多處理器/多核心的效能。
ONSNP所有功能參數均可在系統登錄檔中修改。如需動態開啟/關閉的TCP煙囪卸載功能,步驟依序如下:

1.[開始]->[執行]鍵入cmd,然後按一下[確定]。
2.在命令提示字元,輸入Netsh int ip設定chimney ENABLED,並按下ENTER鍵。

OFF若要關閉TCP煙囪卸載使用Netsh.exe工具,請依照下列步驟執行:

1.[開始]->[執行]鍵入cmd,然後按一下[確定]。
2.在命令提示字元,輸入Netsh int ip設定chimney DISABLED,並按下ENTER鍵。

結合NetDMA,英特爾I/OAT根除記憶體延遲問題

有了TCP煙囪卸載與接收端調整,並不能克服前述所提及的記憶體搬移延遲,處理器仍需將網路資料從網路介面卡一路移到應用程式緩衝區,如伺服器安裝的網路卡數目越多,問題就越大,這時SNP第三個重要技術:NetDMA就要派上用場了。英特爾在2005年春季舊金山IDF正式揭露的I/O加速技術(I/OAT,I/O Acceleration Technology)與新世代Xeon DP平臺「Bensley」就是NetDMA的首度應用。

正如I/OAT的內部代號「Crystal Beach(透明海灘)」,Bensley平臺北橋的記憶體控制器額外「暗藏」名為QuickData的NetDMA資料處理單元,當網路晶片接收封包時,就立刻分離封包標頭與資料區域,直接搬移資料至記憶體,記憶體至記憶體的資料傳輸處理就毋需處理器插手,大幅降低處理器執行單元利用率,一旦網路埠數越多,如利用大量GbE埠增加頻寬時,效益就越明顯。

值得注意的是,除了微軟SNP外,Linux與FreeBSD也都有I/OAT驅動程式,VMWare ESX Server 3.5則是今年下半年。因Sun將重新推出Xeon伺服器,Solaris也將不會缺席。

唯一美中不足的是,I/OAT需要完整的英特爾平臺,包含處理器、系統晶片組與網路晶片都必須是英特爾的產品,所以尚未支援I/OAT的英特爾10GbE網路卡也成為遺珠之憾。此外,NetDMA不能與TCP煙囪卸載同時啟動,如SNP偵測到系統支援NetDMA,就會自動關閉TCP煙囪卸載,由I/OAT取而代之。


英特爾I/O Acceleration Technology

結合NetDMA,充分發揮平臺化整合的效益,提昇伺服器的網路傳輸效率。

1. 啟動系統BIOS的I/OAT功能選項,請注意某些廠牌伺服器會顯示原始代碼「Crystal Beach」。

2. 安裝好驅動程式與SNP,可在系統控制臺的晶片組元件項目啟動I/OAT。

值得注意的是,如同系統控制臺的說明,Windows Server 2003如需啟動I/OAT,必須事先安裝Service Pack 2或Scalable Networking Pack,才能生效。

 

 

3. 重新啟動系統,就可在系統控制臺檢視I/OAT的DMA通道傳輸狀態。

圖中正顯示四組I/OAT DMA通道的資料傳輸率及總量。如需得知進一步的效能資訊,可[開始]->[執行]鍵入perfmon啟動Windows Server 2003的Performance Monitor,手動加入I/OAT DMA物件,就可掌握更細節的I/OAT的運作狀態。

展望未來:支援IPv6的NDIS 6.0與縮短網路延遲的I/OAT2

伴隨著Windows Vista與Longhorn Server問世的NDIS 6.0驅動程式架構,已經整合SNP的相關技術,TCP卸載功能也支援IPv6的IPsec與超過64kB的TCP分段(LSOv2,Large Send Offload v2),強化大區塊資料傳輸的效率。

I/OAT的發展也方興未艾。根據英特爾的產品時程表,以I/OAT為基礎,預定今年下半年推出的新世代Xeon MP平臺「Caneland」的「Clarksboro」晶片組,將首度支援可降低網路傳輸延遲的I/OAT2,以改進對延遲較敏感的應用程式表現。

相較之下,AMD並未證實未來的Opteron處理器是否將配合NetDMA規範提供類似的功能,但我們有充分的理由相信,這只是時間的問題。

硬幣的另一面:注意應用軟體的相容度
目前NetDMA仍無法對應Windows防火牆、IPSec、NAT等服務,如啟動就會立即失效,假使Windows Server已部署橋接和路由功能,就無福消受。

此外,TCP煙囪卸載/NetDMA也不相容其他第三協力廠商防火牆,以及NDIS 5.1中間驅動程式,安裝SNP後,最好先進行完整的相容性測試。SNP與I/OAT並非雞肋,不要讓白吃的午餐飛掉了

瑕不掩瑜,我們分別實測SNP與I/OAT的效能,在10GbE與多埠GbE環境均可明顯改進傳輸效能且降低處理器利用率。更重要的是,只要硬體規格許可,SNP與I/OAT都是不吃白不吃的免費午餐,不會增加伺服器的額外成本。隨著去年六月10BaseT規格的定案與未來可遇見的普及,此類最佳化技術將更形重要。

下載安裝SNP對使用Windows Server的用戶只是舉手之勞,新購英特爾Bensley平臺Xeon伺服器的企業,在BIOS啟動I/OAT選項、安裝支援I/OAT的網路卡驅動程式後,更能讓多埠GbE的效能表現脫胎換骨。如有機會,千萬不能放過導入的可能,因為這是所有新型Wintel伺服器的應得福利。文⊙劉人豪

熱門新聞

Advertisement