src:
http://life.iiietc.ncu.edu.tw/xms/content/show.php?id=9421
notes:
14'5/28 : TOE feature
- relief tedious interrupt. Actually for normal NIC, NUMA could help to reduce it.
- zero copy. No need to copy data from NIC buffer to Application buffer.
-------
|
作者: Kay (10-18 23:51) |
發表討論
列印 詳細資料
|
TCP/IP協議早已是網絡的標準語言。隨著Internet SCSI、Remote Diret Memory
Access這些網絡存貯標準的問世和實用化,從某種意義上說,TCP/IP又成了一種存貯協議。 我們知道,用TCP/IP協議處理網絡流量,要佔用大量服務器資源。為了減輕服務器的壓力,一種稱為TCP減負引擎(TCP
Offload Engine
:TOE)的技術應運而生。TCP減負引擎一般由軟硬兩部分組件構成,將傳統的TIP/IP協議棧的功能進行延伸,把網絡數據流量的處理工作全部轉到網卡上的集成硬件中進行,服務器只承擔TCP/IP控制信息的處理任務。這種為服務器減輕負擔的技術,得到了大多數廠商的肯定。 普通網卡用軟件方式進行一系列TCP/IP相關操作,因此,會在三個方面增加服務器的負擔,這三個方面是:數據複製、協議處理和中斷處理。
TCP網卡原理圖 網絡上每個應用程序在收發大量數據包時,要引發大量的網絡I/O中斷,對這些I/O中斷信號進行響應,成了服務器的沉重負擔。比如,一個典型的
64Kbps的應用程序在向網絡發送數據時,為了將這些數據裝配成以太網的數據包,並對網絡接收確認信號進行響應,要在服務器和網卡間觸發60多個中斷事件,這麼高的中斷率和協議分析工作量已經是相當可觀的了。雖然某些網絡操作系統具有中斷捆綁功能,能夠有效減少中斷信號的產生,但卻無法減少服務器和網卡間響應事件的處理總量。 TCP減負引擎網卡的工作原理與普通網卡不同。普通網卡處理每個數據包都要觸發一次中斷,TCP減負引擎網卡則讓每個應用程序完成一次完整的數據處理進程後才觸發一次中斷,顯著減輕服務器對中斷的響應負擔。還是以64Kbps的應用程序為例,應用程序向網絡發送數據全部完成後,才向服務器發送一個數據通道減負事件中斷,數據包的處理工作由TCP減負引擎網卡來做,而不是由服務器來做,從而消除了過於頻繁的中斷事件對服務器的過度干擾。網絡應用程序在收發數據時,經常是同一數據要複製多份,在這種情形下,TCP減負引擎網卡發揮的效益最明顯。 普通網卡通過採用支持校驗功能的硬件和某些軟件,能夠在一定程度上減少發送數據的複製量,但卻無法減少接收數據的複製量。對大量接收數據進行複製通常要佔用大量的機器工作週期。普通網卡先將接收到的數據在服務器的緩衝區中複製一份,經系統處理後分配給其中一個TCP連接,然後,系統再將這些數據與使用它的應用程序相關聯,並將這些數據由系統緩衝區複製到應用程序的緩衝區。TCP減負引擎網卡在接收數據時,在網卡內進行協議處理,因此,它不必將數據複製到服務器緩衝區,而是直接複製到應用程序的緩衝區,這種「零拷貝」方式避免了網卡和服務器間的不必要的數據往復拷貝。 TCP減負引擎網卡能顯著減輕由數據大量移動造成的服務器過載負擔。實測證明,對於文件服務器和以內容服務為主的服務器應用環境來說,如果用TCP減負引擎網卡代替普通網卡,相當於為服務器增加了一個CPU。
|
|
沒有留言:
張貼留言