網卡參數設置建議與各個網卡參數含義詳解

自從和無盤開始打交道,學到了n多知識,無論是軟件層面還是硬件層面,無論是理論還是實踐層面,之前很多人認爲無盤很複雜,而我也受其“誤導”認爲無盤很複雜,但實際上用下來發現,其實無盤確實很簡單,而所謂的無盤複雜,更多的是理論和經驗的結合,以前在網上也看到過很多無盤教程,當時不以爲然,不當回事,總覺得自己很牛,可實際上真正的去做了之後,發現自己也在傳播這些信息,套用以前某人說過的一句名言“現在很多人的不份,不爽,不以爲然,只是爲了證明前人的經驗是正確的。”

  而實際上有這句名言,完全是實踐,經驗,理論最終的結晶,因爲很多時候往往是我們自己在實踐中撞了南牆,然後總結經驗,當長時間經驗累計之後開始好奇,於是開始去搜索,最終發現理論中已經描述了你所實踐的,和你所總結的東西。所以今天也和大家分享一些理論知識,大部分來自網絡,如有錯誤,還望大家及時糾正。

  既然開頭我們提到了無盤,那麼今天也是說和無盤相關的一項非常重要的內容,那就是網卡參數設置。我們都知道無盤就是客戶機沒有硬盤,而無盤實際上就是把客戶機的硬盤放在了服務器上,通過一種虛擬化技術來工作的,而在這個虛擬過程中,網卡是非常關鍵的一環,他就好像有盤客戶機的數據線。只是這根數據線遠遠比SATA數據線複雜的多,不只存在接觸好不好的問題,還存在設置好不好的問題,設置好了,速度快,穩定,設置不好,問題也會多樣,而複雜。ok,廢話終了,進入正題!

  既然要說網卡相關的內容,這裏不得不替一下傳說中的IEEE,IEEE是什麼?他實際上是一個組織,並且創立了很多互聯網通訊標準,IEEE全名:Institute of Electrical and Electronics Engineers,中文翻譯:美國電氣和電子工程師協會,比如我們之前聽過的“網卡匯聚”實際上就是IEEE創建的一個叫做802.3ad鏈路聚合的標準協議,再比如我們所說的vlan實際上也是IEEE創建的一個名叫802.3q (虛擬局域網Virtual LANs:VLan)標準協議,如果大家感興趣,可以百度一下IEEE或802.3相信可以瞭解很多知識。

Energy Efficient Ethernet:EEE
  上面說的都是IEEE做的一些非常靠譜的事情,其實最近他們也做了一件不是很靠譜的事情,就是發明了一個802.3az節能標準,作用是在網卡沒有流量時自動降低功耗,只有網絡使用率較高時,纔會發揮最大功耗,而這個802.3az節能標準的全名就是Energy Efficient Ethernet,簡稱EEE,中文翻譯是:節能高效以太網技術。他的出現給無盤帶來了很大麻煩,只要開啓網卡參數中的EEE設置,就可能會導致開機速度慢問題,目前市面上比較新的Realtek的8111E網卡(Rev06)就支持這個節能技術,但是可能因爲批次原因,會出現某些網卡如果不關閉EEE選項,開機速度就非常慢,xp滾動條需要6圈以上,關閉後可能變成2圈或者1圈,而有些8111E網卡又不會受影響。這就是今天說的第一個網卡參數EEE。由於該技術還比較新,目前只看到了Realtek網卡配合較新的驅動才能看到該選項,而且也在Realtek官網上看到這麼一條新聞。

  其中紅字標出的,有一句是全球首顆……,是的,EEE存在的問題貌似確實只有Realtek網卡才遇到,或許是第一個喫螃蟹的人總是最先品到美味,也是第一個會受傷的人吧……只是我們這些小白用戶真的傷不起……下圖爲一塊Realtek 8111E網卡的設置頁,如果你的網卡有EEE選項,一定要關閉噢,當然如果沒有就不需要理會了,因爲沒有這個選項,可以認爲網卡不支持EEE。


  另外“環保節能”、“GreenEthernet”也和EEE差不多,都屬於節能功能,所以都建議關閉,總之在無盤上,和節能有關的功能一定不要開,否則不是速度慢,就是不穩定,因爲在無盤上,網卡是不存在“沒有流量”的情況的,開了一定會出問題。

流程控制、流控制、FlowControl
  這個選項基本上所有網卡都會有,但是叫法會有些差別,比如Realtek網卡叫做流控制,Intel網卡叫做流程控制,還有一些網卡選項乾脆是英文的,叫做FlowControl,很多交換機上也有這個功能,也叫做FlowControl,而在下面的理論解釋中就簡稱流控制,這樣可以少打一個字。
  網卡自身支持的流控制和我們所說的Qos不一樣,雖然目的可能是一樣的。網卡或交換機支持的流控制也是一個IEEE標準,叫做802.3x全雙工以太網數據鏈路層的流控,因爲它是個電子電器標準,所以交換機,網卡這類以太網設備是都支持的,而且也都遵循這個802.3x標準,這個標準的核心作用就是防止網絡擁堵時導致的“丟包”問題,大致的工作原理就是當鏈路兩端的設備有一端忙不過來了,他會給另外一端的設備發一個暫停發包的命令,通過這種方式來緩解壓力,解決丟包問題。舉個喫飯的例子,你自己喫飯,實際上就是有“流控制”的體現,因爲你並會出現因爲太忙或者怎麼樣,把飯喫到鼻子裏的情況。但是如果你給一個人餵飯,就好比是沒有“流控制”的情況,你很可能會把飯喂到別人的鼻子裏……
  看上去流控制應該是個非常好的防止丟包的方法,但是爲什麼我們還要在無盤上關閉他呢?原因很簡單,因爲現在的幾乎所有無盤軟件都支持“數據包重發”功能,也就是說如果客戶機發現有丟包情況,或者服務端發現有丟包情況,都會重新請求,根本不需要網卡再從中間狗拿耗子多管閒事,而也正式因爲無盤軟件有重發機制,當這種重發機制遇到流控制時就上演了這樣一出鬧劇:
客戶機網卡向服務器網卡要數據時,說:Server快給我下一個數據包!
服務器網卡向客戶機網卡發數據時,說:Soryy,我忙不過來了,你吖的等一下,於是服務器暫停了一下。
結果此時無盤軟件客戶端和客戶機網卡說:我靠,數據包咋還沒發過來?你再不來我就一直拼命發!
而無盤服務端也問服務器網卡說:我把數據包給服務器網卡了,怎麼客戶機還沒回應?客戶機不迴應一定是丟包了,於是無盤服務端也拼命的發包給客戶機……
  就這樣,因爲流控制,出了問題,因爲數據等待問題,客戶機卡了,因爲無盤服務端始終發不出數據包,結果服務端可能也掛了,而這,就是流控制爲什麼會影響無盤的原因,所以無論是服務器,客戶機,交換機,只要有流控制的地方,就一定要關閉掉!

巨型幀、巨幀數據包、Jumboframe
  這個網卡參數基本上也是所有網卡上都有,也會因爲網卡品牌不同,叫法不同,比如Realtek就叫巨型幀,Intel網卡就叫巨幀數據包,有些老版本的網卡驅動顯示的是英文,叫做Jumboframe。下文中也是爲了少打字,就叫巨幀了。
  前兩個網卡參數提到的參數都是由IEEE創立國際標準協議基礎上開發的,而這個巨幀並非一個國際標準,而是通訊設備公司之間自己商定的一個非主流標準,所謂巨幀是一種超長幀格式,專門爲千兆以太網而設計,以太網標準的最大幀長度爲1518字節,而Jumbo Frame的長度各廠商有所不同,一般最小的有2KB,大一點的有9KB左右。那麼這個巨幀有什麼好處呢?
  拿一個現象來和大家解釋吧,相信做無盤的人,都熟悉Hd_Speed這個軟件,他是一個測速軟件,他的測速選項中有個叫做“塊大小”的參數,如下圖:

  細心的同學一定會發現,同樣的無盤,同樣的網絡環境,如果你測速時選擇的“塊大小”和測試得出的速度也是不一樣的,比如一個用64K塊測速值爲64MB/S速度的網絡環境,使用128K或512K則能達到80MB/S,甚至90MB/S的速度,這個現象其實就是巨幀的原理。
  使用巨幀可以有效減少網絡中數據包的個數,從而提升傳輸效率,降低網絡設備處理“包頭”的而外負擔。這就是巨幀爲什麼能提神光網絡傳輸效率的原因。
  相信大家關注過交換機有個參數叫做包轉發率,但是並沒有限制包大小,也就是大包,小包其實並不會嚴重影響轉發效率,因此,如果單位時間內可以傳輸多個比較大的數據包,傳輸數據量自然就會多,而最終軟件顯示的速度也會變快,以剛纔的hdspeed測速爲例:
64k塊的速度有64MB/S,那麼實際上這個網絡通道每秒可傳輸64*1024/64=1024個64K的數據包,假如在沒有丟包的情況下,每秒能傳輸1024個128k的數據包時,網絡傳輸速度理論就能達到128MB/S的速度,也就是翻一倍!
  說到這裏肯定很多人心動了,趕緊去開巨幀,來提升速度,但是不要忘記,這只是理想狀態,而實際上再好的網絡也會有丟包,在有丟包的情況下,你單個傳輸的數據包越大,丟失一個數據包造成的影響也就越大,而帶來的問題也就是傳輸速度月不穩定,所以巨幀如果在“理想環境下”是非常好的技術,如果在不理想的環境下,無疑是一種災難,同時巨幀並非一個行業標準,而是每家的標準都不大一樣,如果使用不同廠家提供的硬件設備,就可能因爲存在單個幀長度不同而帶來的速度波動嚴重問題。
  而實際上,有哪家網吧能夠做到網卡,網線,交換機都是一家廠商出的?實際上沒有,因此巨幀對於網吧來說還是關閉的好。
  這裏給大家一個小經驗,Intel 82574L網卡做服務器開4K巨幀,Realtek網卡做客戶機開2K巨幀,在使用一些傻瓜交換設備時,測速可能會有一些提升噢,不過這些提升一般不足以優化客戶體驗,如果感興趣的同學,可以玩一玩,來加強自己的理解!

大量傳送減負、中斷節流率、中斷模式……
  上面這些網卡參數本身的功能並不一樣,但實際上目的都一樣的,或者說是互相合作的關係,首先解釋一下大量傳送減負,這個選項在Realtek網卡上是存在的。
  舉個例子,大家知道一個PC上是有一個CPU負責運算的,而一個網卡實際本身也是存在具備CPU運算功能的,所謂的網卡吞吐能力,響應能力實際上就是網卡芯片自身的運算能力的體現。但是在早期,網卡芯片的處理能力是很一般的,所以有些網卡上就有後個選項,具體名字忘記了,大致意思就是網卡性能優化時,是以降低CPU爲優化指標,還是以IO性能爲優化指標,是上這就是和現在說的大量傳送減負作用是一樣的,那麼大量傳送減負,減的是誰的負擔?實際上是CPU的負擔,如果一旦網卡處理的數據過多時,就會耗費一些CPU資源來做運算,爲了降低CPU網絡傳輸速度過快而導致的CPU壓力上升,也就有了大量傳送減負這個功能,開了他,就會在傳輸速度過高時自動降速,關了他就會發揮網卡最高性能。
  而現在CPU的運算能力不要太好,所以沒必要爲了降低CPU使用率而去放棄高性能的網絡傳輸速度,這完全是一個過時的功能了。實際上標題裏的中斷節流率、中斷模式的作用個人認爲和大量傳送減負的作用是完全一樣的,都是爲了防止網絡傳輸速度過快時而導致CPU使用率上升問題而開發的,比如Intel網卡里這個功能參數就叫做“中斷節流率”,而在說明中也詳細瞭解釋了這個功能的好處和壞處,見下圖:

說明全文如下:
設定控制器調節或延遲中斷生成的速率,以優化網絡吞吐量和 CPU 的使用。默認設置(適應性)根據通信量類型和網絡使用情況動態調節中斷速率。選用另一個設置可能會提高某種配置中的網絡和系統性能。

在沒有中斷調節的情況下,由於系統必須處理大量的中斷,CPU 的使用量將以更高的數據速率增加。中斷調節使網絡驅動器能積累中斷,併發送單個(而不是一系列的)中斷。在較高的數據速率下,高中斷調節設置可能會提高系統功能。在低數據速率下,應選用較低的中斷調解設置,因爲延遲的中斷會導致延遲。

  當你的服務器最差也用Xeon 3430,好一點在用Xeon 5506,更牛b的都開始雙CPU的時候,你覺得還有必要爲了降低CPU鴨梨過大問題,而去降低網卡性能嗎?我的答案是:不需要。當然話分兩頭說,如果你的服務器還是比較爛的CPU,那還是默認不去修改的好,以免上做高峯時,出現服務器CPU使用率高而導致全場秒卡問題,甚至服務端掛掉的問題……
  根據自己非常不嚴禁的測試,關閉該參數,至少可以提升5MB/S的網絡傳輸速度。

硬件效驗和、適應性幀間距調整、TCP/UDP 校驗和
  羅索了幾個小時,終於說到最後一個網卡參數了,從網卡參數描述上,基本大家都能明白,這是一個效驗功能,他的作用也不用多說,實際上就是爲了防止在網絡環境不好的情況下,解決數據包損壞,丟幀的問題。在這裏又要引入2個概念,就是傳說中的TCP和UDP,相信大家對名詞非常熟悉,那麼他們有什麼特點相信不是所有人都瞭解的,至少正在寫文章的我,也不能準確無誤的表達清楚,所以百度了一下TCP和UDP的特點:
TCP:傳輸控制協議,提供的是面向連接、可靠的字節流服務。
當客戶和服務器彼此交換數據前,必須先在雙方之間建立一個TCP連接,之後才能傳輸數據。TCP提供超時重發,丟棄重複數據,檢驗數據,流量控制等功能,保證數據能從一端傳到另一端。
UDP---用戶數據報協議,是一個簡單的面向數據報的運輸層協議。
UDP不提供可靠性,它只是把應用程序傳給IP層的數據報發送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸數據報前不用在客戶和服務器之間建立一個連接,且沒有超時重發等機制,故而傳輸速度很快。
  當然TCP和UDP遠遠不只上面描述的那麼簡單,不過我們畢竟不是搞研發的,懂得道理就行,用我自己的話描述就是:
TCP是個非常靠譜的人,和你說話一定要讓你從頭到尾都聽明白,聽清楚,確保溝通無誤;
而UDP就是個不太靠譜的人,我說我的,你聽你的,我說完了就行,至於你聽懂還是沒聽懂,和我一毛錢關係都沒有。
所以,TCP因爲羅索速度慢,但是可靠,而UDP因爲不羅嗦,完成任務就OVER,所以速度快!
  那這個TCP、UDP和效驗啥關係呢?很簡單,TCP協議本身就有效驗功能,並不需要網卡在中間搞一道,即便需要效驗,也是UDP需要效驗,防止傳輸過程中出現壞包導致的數據損壞問題,TCP完全不需要,而在無盤上來說,只要開機之後,每個數據包都是非常關鍵的,因此大多數無盤都會採取TCP協議來保證可靠性,所以並不需要這個效驗功能,同時,做包效驗也是好要耗費資源運算的,說惡劣一點,爲了這樣一個畫蛇添足的功能而去浪費寶貴的資源,純屬一種浪費!所以無盤上,帶有效驗字樣的網卡參數完全可以關閉掉!
  不過話說回來,做人做事,不能做的太絕,就像說話一樣,也不能說太絕,這個效驗功能雖然看上去絕大多數情況下,是百無一用,但是能說它百無一用是在瞭解他的特性之後,比如,如果是使用UDP協議的軟件,可能在網絡狀況較差的情況下,不開啓效驗功能,就可能導致出問題!
  好了,羅索了這麼多,還是要說一句,任何產品的任何功能都是在特定的環境下產生的,爲了滿足特定的需求產生,所以理論上任何一個功能在功能自身來說都是有用的,至於是否需要用就要取決於環境,打個比方,刀和槍在戰爭中都會用到,但是在暗殺時,你用槍很容易暴露,但是用刀就一定成都上可以保證不被人發現,額,這個例子有點血腥,你也可以理解爲切西瓜,用刀肯定比用槍好……
  今天就到此爲止了,上面大部分內容是來自網絡說明,文案充足由博主完成,當然也帶有博主一些非常流氓的比喻,可能不恰當,引起大家誤會,所以如果有不懂,或者有說錯的地方,希望大家海涵,並提出批評或糾正意見,謝謝!

附上一張來自網維知識庫的網卡參數設置說明,這個設置服務器和客戶機通用:
原文鏈接:http://bbs.icafe8.com/forum.php?mod=viewthread&tid=280990&page=1#pid1523072

 
網卡品牌 參數名稱(中英文對照)   設置建議
Realtek EEE   建議關閉
巨型幀/Jumboframe   建議關閉
流控制/FlowControl   建議關閉
大量傳送負載/OffloadLargesend   建議關閉
環保節能/GreenEthernet   建議關閉
硬件效驗和/OffloadChksum   建議關閉
Intel TCP/IP分載選項 分載接收IP效驗和/ChecksumRxIp 建議關閉
分載接收TCP效驗和/ChecksumRxTcp 建議關閉
分載傳輸IP效驗和/ChecksumTxIp 建議關閉
分載傳輸TCP效驗和/ChecksumTxTcp 建議關閉
分載TCP分段/TcpSegmentation 建議關閉
流程控制/FlowControl   建議關閉
適應性幀間距調整/AdaptiveIFS   建議關閉
中斷節流率/InterruptThrottleRate   建議關閉
巨幀數據包/JumboPacket   建議關閉
Marvell 巨幀包/JumboPacket   建議關閉
卸載 TCP/UDP 校驗和
(IPv4)/TCPUDPChecksumOffloadIPv4
  建議關閉
大量傳送負載 (IPv4)/LsoV1IPv4   建議關閉
中斷模式/InterruptModeration   建議默認
流控制/FlowControl   建議關閉
能量之星/WakeUpSpeed   建議關閉
Atheros 流控制/Flow Control   建議關閉
中斷調整/Interrupt Moderation   建議默認
每秒最大中斷/Max IRQ per Second   30000
接收緩衝區/Number of Receive Buffers   512
任務卸載/Task Offload   建議關閉
Broadcom 硬件效驗和/ChksumOffload   建議關閉
流控制/FlowControl   建議關閉
大量發送卸載/Large Send Offload   建議關閉

更新說明:
2011年12月22日:
Marvell網卡關閉中斷模式後可能會出現客戶機開機後出現白色箭頭。但是由於每款主板或驅動可能會有細微差別,因此對於中斷模式方面設置,建議大家保持默認。如果出現問題了,可以首先對該選項進行調整,例如關閉或開啓。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章