Intel(R) 乙太網網路連線的 Linux 基本驅動程式¶
Intel 千兆 Linux 驅動程式。版權所有 (c) 1999 - 2013 Intel Corporation。
目錄¶
識別您的介面卡
命令列引數
速度和雙工配置
額外配置
支援
識別您的介面卡¶
有關如何識別您的介面卡的更多資訊,請參閱以下位置的介面卡和驅動程式 ID 指南:
有關最新的適用於 Linux 的 Intel 網路驅動程式,請訪問以下網站。在搜尋欄位中,輸入您的介面卡名稱或型別,或使用左側的網路連結搜尋您的介面卡
命令列引數¶
除非另有說明,否則每個引數的預設值通常是推薦設定。
- 注意事項
有關 AutoNeg、Duplex 和 Speed 引數的更多資訊,請參閱本文件中的“速度和雙工配置”部分。
有關 InterruptThrottleRate、RxIntDelay、TxIntDelay、RxAbsIntDelay 和 TxAbsIntDelay 引數的更多資訊,請參閱以下應用筆記:http://www.intel.com/design/network/applnots/ap450.htm
AutoNeg¶
(僅支援帶有銅連線的介面卡)
- 有效範圍:
0x01-0x0F, 0x20-0x2F
- 預設值:
0x2F
此引數是一個位掩碼,用於指定介面卡通告的速度和雙工設定。使用此引數時,不得指定 Speed 和 Duplex 引數。
- 注意
有關 AutoNeg 引數的更多資訊,請參閱本自述檔案中的“速度和雙工”部分。
Duplex¶
(僅支援帶有銅連線的介面卡)
- 有效範圍:
0-2(0=自動協商,1=半雙工,2=全雙工)
- 預設值:
0
這定義了資料允許流動的方向。可以是單向或雙向。如果 Duplex 和鏈路夥伴都設定為自動協商,則板卡會自動檢測正確的雙工模式。如果鏈路夥伴被強制(全雙工或半雙工),則 Duplex 預設為半雙工。
FlowControl¶
- 有效範圍:
0-3(0=無,1=僅接收,2=僅傳送,3=接收和傳送)
- 預設值:
從 EEPROM 讀取流控制設定
此引數控制乙太網 PAUSE 幀的自動生成 (Tx) 和響應 (Rx)。
InterruptThrottleRate¶
(Intel(R) 82542、82543 或 82544 型介面卡不支援)
- 有效範圍:
0,1,3,4,100-100000(0=關閉,1=動態,3=動態保守,4=簡化平衡)
- 預設值:
3
驅動程式可以限制介面卡為傳入資料包每秒生成的中斷量。它透過向介面卡寫入一個基於介面卡每秒將生成的最大中斷量的值來實現這一點。
將 InterruptThrottleRate 設定為大於或等於 100 的值將使介面卡每秒最多傳送指定數量的中斷,即使有更多資料包進入。這減少了系統上的中斷負載,並可以在高負載下降低 CPU 利用率,但由於資料包處理速度較慢,會增加延遲。
驅動程式之前的預設行為是假定 InterruptThrottleRate 的靜態值為 8000,這為所有流量型別提供了一個良好的後備值,但在小資料包效能和延遲方面有所欠缺。然而,硬體每秒可以處理更多的小資料包,因此,我們實現了一種自適應中斷節制演算法。
自 7.3.x 版本以來,驅動程式具有兩種自適應模式(設定 1 或 3),它根據接收到的流量動態調整 InterruptThrottleRate 值。在確定上一時間幀中的傳入流量型別後,它會將 InterruptThrottleRate 調整為適合該流量的適當值。
該演算法每隔一個時間間隔將傳入流量分類。一旦確定了類別,InterruptThrottleRate 值就會進行調整,以最適合該流量型別。定義了三個類別:“批次流量”,用於大量正常大小的資料包;“低延遲”,用於少量流量和/或大量小資料包;以及“最低延遲”,用於幾乎完全是小資料包或最小流量。
在動態保守模式下,對於屬於“批次流量”類別的流量,InterruptThrottleRate 值設定為 4000。如果流量屬於“低延遲”或“最低延遲”類別,InterruptThrottleRate 會逐步增加到 20000。此預設模式適用於大多數應用程式。
對於叢集或網格計算等低延遲至關重要的情況,當 InterruptThrottleRate 設定為模式 1 時,演算法可以進一步減少延遲。在此模式下,其操作與模式 3 相同,對於“最低延遲”類別的流量,InterruptThrottleRate 將逐步增加到 70000。
在簡化模式下,中斷率基於 TX 和 RX 流量的比率。如果每秒位元組速率近似相等,則中斷率將降至每秒 2000 箇中斷。如果流量主要是傳送或主要是接收,則中斷率可能高達 8000。
將 InterruptThrottleRate 設定為 0 會關閉任何中斷節制,並可能改善小資料包延遲,但通常不適用於大吞吐量流量。
- 注意
InterruptThrottleRate 優先於 TxAbsIntDelay 和 RxAbsIntDelay 引數。換句話說,最小化接收和/或傳送的絕對延遲不會強制控制器生成超過中斷節流率允許的中斷。
- 警告
如果您正在使用 Intel(R) PRO/1000 CT 網路連線(控制器 82547),將 InterruptThrottleRate 設定為大於 75,000 的值,在某些網路條件下可能會導致介面卡掛起(停止傳輸)。如果發生這種情況,系統事件日誌中會記錄 NETDEV WATCHDOG 訊息。此外,控制器會自動重置,從而恢復網路連線。為了消除掛起的可能性,請確保 InterruptThrottleRate 不大於 75,000 且不設定為 0。
- 注意
當 e1000 以預設設定載入並同時使用多個介面卡時,CPU 利用率可能會非線性增加。為了在不影響整體吞吐量的情況下限制 CPU 利用率,我們建議您按如下方式載入驅動程式
modprobe e1000 InterruptThrottleRate=3000,3000,3000
這將把驅動程式的第一個、第二個和第三個例項的 InterruptThrottleRate 設定為 3000 中斷/秒。每秒 2000 到 3000 中斷的範圍適用於大多數系統,並且是一個很好的起點,但最佳值將取決於具體的平臺。如果 CPU 利用率不是問題,請使用 RX_POLLING (NAPI) 和預設驅動程式設定。
RxDescriptors¶
- 有效範圍:
基於 82542 和 82543 的介面卡為 48-256
所有其他支援的介面卡為 48-4096
- 預設值:
256
此值指定驅動程式分配的接收緩衝區描述符數量。增加此值允許驅動程式緩衝更多傳入資料包,但會增加系統記憶體利用率。
每個描述符為 16 位元組。每個描述符也分配一個接收緩衝區,其大小可以是 2048、4096、8192 或 16384 位元組,具體取決於 MTU 設定。最大 MTU 大小為 16110。
- 注意
MTU 指定幀大小。它僅需為巨型幀設定。根據可用的系統資源,請求更高數量的接收描述符可能會被拒絕。在這種情況下,請使用較小的數量。
RxIntDelay¶
- 有效範圍:
0-65535(0=關閉)
- 預設值:
0
此值以 1.024 微秒為單位延遲接收中斷的生成。如果針對特定的網路流量進行適當調整,減少接收中斷可以提高 CPU 效率。增加此值會給幀接收增加額外延遲,並可能最終降低 TCP 流量的吞吐量。如果系統報告接收丟棄,則此值可能設定得過高,導致驅動程式耗盡可用的接收描述符。
- 警告
當將 RxIntDelay 設定為非 0 值時,介面卡在某些網路條件下可能會掛起(停止傳輸)。如果發生這種情況,系統事件日誌中會記錄 NETDEV WATCHDOG 訊息。此外,控制器會自動重置,從而恢復網路連線。為了消除掛起的可能性,請確保 RxIntDelay 設定為 0。
RxAbsIntDelay¶
(此引數僅在 82540、82545 及更高版本介面卡上支援。)
- 有效範圍:
0-65535(0=關閉)
- 預設值:
128
此值以 1.024 微秒為單位,限制了生成接收中斷的延遲。僅當 RxIntDelay 非零時才有用,此值確保在設定的時間內接收到初始資料包後會生成中斷。適當的調整,結合 RxIntDelay,可能會改善特定網路條件下的流量吞吐量。
Speed¶
(此引數僅在帶有銅連線的介面卡上支援。)
- 有效設定:
0, 10, 100, 1000
- 預設值:
0(在所有支援的速度下自動協商)
Speed 將線路速度強制設定為以兆位元每秒 (Mbps) 為單位的指定值。如果未指定此引數或將其設定為 0,並且鏈路夥伴設定為自動協商,則板卡將自動檢測正確速度。當 Speed 設定為 10 或 100 時,也應設定 Duplex。
TxDescriptors¶
- 有效範圍:
基於 82542 和 82543 的介面卡為 48-256
所有其他支援的介面卡為 48-4096
- 預設值:
256
此值是驅動程式分配的傳輸描述符數量。增加此值允許驅動程式排隊更多傳輸。每個描述符為 16 位元組。
- 注意
根據可用的系統資源,請求更高數量的傳輸描述符可能會被拒絕。在這種情況下,請使用較小的數量。
TxIntDelay¶
- 有效範圍:
0-65535(0=關閉)
- 預設值:
8
此值以 1.024 微秒為單位延遲傳輸中斷的生成。如果針對特定的網路流量進行適當調整,減少傳輸中斷可以提高 CPU 效率。如果系統報告傳輸丟棄,則此值可能設定得過高,導致驅動程式耗盡可用的傳輸描述符。
TxAbsIntDelay¶
(此引數僅在 82540、82545 及更高版本介面卡上支援。)
- 有效範圍:
0-65535(0=關閉)
- 預設值:
32
此值以 1.024 微秒為單位,限制了生成傳輸中斷的延遲。僅當 TxIntDelay 非零時才有用,此值確保在設定的時間內將初始資料包傳送到線路上後會生成中斷。適當的調整,結合 TxIntDelay,可能會改善特定網路條件下的流量吞吐量。
XsumRX¶
(82542 型介面卡不支援此引數。)
- 有效範圍:
0-1
- 預設值:
1
值“1”表示驅動程式應為接收到的資料包(UDP 和 TCP)啟用 IP 校驗和解除安裝到介面卡硬體。
Copybreak¶
- 有效範圍:
0-xxxxxxx(0=關閉)
- 預設值:
256
- 用法:
modprobe e1000.ko copybreak=128
驅動程式在將所有小於或等於此大小的資料包上交給堆疊之前,將其複製到新的 RX 緩衝區。
此引數與其他引數不同,它是一個應用於所有驅動程式例項的單個引數(而非 1,1,1 等),並且在執行時也可透過 /sys/module/e1000/parameters/copybreak 獲取
SmartPowerDownEnable¶
- 有效範圍:
0-1
- 預設值:
0(停用)
允許 PHY 在低功耗狀態下關閉。使用者可以在支援的晶片組中關閉此引數。
速度和雙工配置¶
三個關鍵字用於控制速度和雙工配置。這些關鍵字是 Speed、Duplex 和 AutoNeg。
如果板卡使用光纖介面,這些關鍵字將被忽略,並且光纖介面板卡僅以 1000 Mbps 全雙工模式連結。
對於銅纜板卡,這些關鍵字的互動方式如下
預設操作是自動協商。如果鏈路夥伴設定為自動協商,則板卡會通告所有支援的速度和雙工組合,並以最高通用速度和雙工模式進行連結。
如果 Speed = 1000,則啟用有限自動協商,並且僅通告 1000 Mbps(1000BaseT 規範要求自動協商)。
如果 Speed = 10 或 100,則應同時設定 Speed 和 Duplex。自動協商將被停用,並且 AutoNeg 引數被忽略。夥伴也應被強制。
當需要對自動協商過程進行更多控制時,使用 AutoNeg 引數。當您希望控制在自動協商過程中通告哪些速度和雙工組合時,應使用此引數。
該引數可以指定為十進位制或十六進位制值,具體取決於下面的點陣圖。
位位置 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
十進位制值 |
128 |
64 |
32 |
16 |
8 |
4 |
2 |
1 |
十六進位制值 |
80 |
40 |
20 |
10 |
8 |
4 |
2 |
1 |
速度 (Mbps) |
不適用 |
不適用 |
1000 |
不適用 |
100 |
100 |
10 |
10 |
雙工 |
全雙工 |
全雙工 |
半雙工 |
全雙工 |
半雙工 |
使用 AutoNeg 的一些示例
modprobe e1000 AutoNeg=0x01 (Restricts autonegotiation to 10 Half)
modprobe e1000 AutoNeg=1 (Same as above)
modprobe e1000 AutoNeg=0x02 (Restricts autonegotiation to 10 Full)
modprobe e1000 AutoNeg=0x03 (Restricts autonegotiation to 10 Half or 10 Full)
modprobe e1000 AutoNeg=0x04 (Restricts autonegotiation to 100 Half)
modprobe e1000 AutoNeg=0x05 (Restricts autonegotiation to 10 Half or 100
Half)
modprobe e1000 AutoNeg=0x020 (Restricts autonegotiation to 1000 Full)
modprobe e1000 AutoNeg=32 (Same as above)
請注意,當使用此引數時,不得指定 Speed 和 Duplex。
如果鏈路夥伴被強制設定為特定的速度和雙工模式,則不應使用此引數。相反,請使用前面提到的 Speed 和 Duplex 引數將介面卡強制設定為相同的速度和雙工模式。
額外配置¶
巨型幀¶
透過將 MTU 更改為大於預設值 1500 的值來啟用巨型幀支援。使用 ifconfig 命令增加 MTU 大小。例如
ifconfig eth<x> mtu 9000 up此設定不會在重啟後保留。如果您新增以下內容,可以使其永久生效
MTU=9000到檔案 /etc/sysconfig/network-scripts/ifcfg-eth<x>。此示例適用於 Red Hat 發行版;其他發行版可能將此設定儲存在不同的位置。
- 注意事項
在某些巨型幀環境中可能會觀察到吞吐量效能下降。如果出現這種情況,增加應用程式的套接字緩衝區大小和/或增加 /proc/sys/net/ipv4/tcp_*mem 條目值可能會有所幫助。有關更多詳細資訊,請參閱特定的應用程式手冊和 /usr/src/linux*/Documentation/ networking/ip-sysctl.txt。
巨型幀的最大 MTU 設定為 16110。此值與最大巨型幀大小 16128 相符。
不支援在 10 或 100 Mbps 下使用巨型幀,這可能導致效能不佳或鏈路丟失。
基於 Intel(R) 82542 和 82573V/E 控制器的介面卡不支援巨型幀。它們對應於以下產品名稱
Intel(R) PRO/1000 Gigabit Server Adapter Intel(R) PRO/1000 PM Network Connection
ethtool¶
驅動程式利用 ethtool 介面進行驅動程式配置和診斷,以及顯示統計資訊。此功能需要 ethtool 版本 1.6 或更高版本。
ethtool 的最新版本可從以下網址獲取:https://kernel.linux.club.tw/pub/software/network/ethtool/
啟用區域網喚醒 (WoL)¶
WoL 透過 ethtool 實用程式配置。
WoL 將在下次關機或重啟期間在系統上啟用。對於此驅動程式版本,為了啟用 WoL,在關機或重啟系統時必須載入 e1000 驅動程式。
支援¶
有關一般資訊,請訪問 Intel 支援網站:http://support.intel.com
如果在支援的核心和支援的介面卡上釋出的原始碼中發現問題,請將與該問題相關的具體資訊透過電子郵件傳送至 intel-wired-lan@lists.osuosl.org。