ethtool
、lspci
和 iperf
是 Linux 系統中進行網絡硬件查看、配置和性能測試的核心命令行工具。下面是它們的常用命令分析和總結:
核心作用總結:
lspci
: 偵察兵 - 列出系統所有 PCI/PCIe 總線上的硬件設備信息,主要用于識別網卡型號、制造商、位置等物理硬件信息。ethtool
: 網絡醫生/調音師 - 查詢和配置網絡接口控制器(NIC)的參數,用于診斷鏈路狀態、查看驅動信息、統計信息、調整高級功能(如 Offload)等。iperf
/iperf3
: 測速儀 - 測量網絡帶寬和性能,通過在兩個節點間建立 TCP/UDP 數據流來測試最大吞吐量、丟包率、抖動等。
一、lspci
- 列出 PCI 設備
-
主要用途: 查看系統中所有通過 PCI/PCIe 總線連接的硬件設備,特別用于識別網卡。
-
常用命令:
命令 作用 說明 lspci
列出所有 PCI 設備 信息較簡略 lspci | grep -i ethernet
過濾出所有以太網控制器 最常用!快速找到網卡 lspci -v
列出所有設備詳細信息 (verbose) 包含設備型號、驅動、內存映射等 lspci -vvv
列出所有設備更詳細信息 (very very verbose) 包含更多底層細節 lspci -s [bus:device.function]
查看指定槽位設備信息 如 lspci -s 00:1f.6
lspci -k
列出設備信息并顯示其使用的內核驅動模塊 非常有用,查看網卡驅動 lspci -n
顯示設備的廠商和設備 ID (數字形式) 用于精準識別硬件 lspci -nn
顯示設備的廠商和設備 ID (數字+名稱) 結合了 -n
和名稱顯示lspci -tv
以樹形結構顯示所有設備 顯示設備間的層次關系 -
關鍵輸出解讀 (網卡相關):
Ethernet controller
: 明確標識這是一個以太網控制器。Vendor:
和Device:
后面的 ID (如8086:15b8
) 或名稱 (如Intel Corporation I219-V
) 標識了網卡的具體型號和制造商。Kernel driver in use:
顯示當前加載的驅動模塊 (如e1000e
,igb
,ixgbe
,r8169
)。Kernel modules:
顯示該設備可用的驅動模塊。Subsystem:
設備子系統信息,有時包含 OEM 信息。
二、ethtool
- 以太網設備工具
-
主要用途: 查詢、控制網絡接口驅動和硬件設置,診斷網絡接口狀態和配置。
-
常用命令 (以接口
eth0
為例):命令 作用 說明 ethtool eth0
查看接口基本摘要信息 最常用! 顯示鏈路狀態、速度、雙工模式、端口類型、支持的參數等。第一眼診斷必備! ethtool -i eth0
查看驅動信息 非常常用! 顯示驅動名稱、版本、固件版本、總線信息等。排查驅動問題必備。 ethtool -S eth0
查看詳細的網絡統計信息 診斷丟包、錯誤必備! 顯示收發包計數、錯誤計數、丟棄計數等。關注 rx/tx_errors
,rx/tx_dropped
,rx/tx_fifo_errors
等。ethtool -k eth0
查看 Offload 功能狀態 顯示各種硬件卸載功能 (如 TSO, GSO, GRO, LRO, RX/TX checksum) 是否啟用。性能調優關鍵。 ethtool -K eth0 [feature] on/off
啟用/禁用 Offload 功能 如 ethtool -K eth0 tso off
(禁用 TSO)。謹慎修改!ethtool -g eth0
查看 Ring Buffer 參數 顯示 RX/TX 環緩沖區當前大小和最大值。緩沖區不足可能導致丟包。 ethtool -G eth0 rx [value] tx [value]
設置 Ring Buffer 大小 需要驅動支持。 如 ethtool -G eth0 rx 4096 tx 4096
。優化性能/減少丟包。ethtool -a eth0
查看暫停幀 (Flow Control) 設置 顯示是否啟用自動協商、RX/TX 暫停幀。 ethtool -A eth0 autoneg on/off rx on/off tx on/off
設置暫停幀 需要協商支持。 如 ethtool -A eth0 autoneg on rx on tx on
。ethtool -c eth0
查看 Coalesce (中斷合并) 參數 調整中斷觸發頻率,影響 CPU 占用和延遲。 ethtool -C eth0 ...
設置 Coalesce 參數 參數復雜 (如 adaptive-rx on
,rx-usecs 100
),需謹慎調整。ethtool -p eth0
物理識別 (閃爍網口燈) 讓對應網卡的指示燈閃爍,方便物理定位服務器上的網口。 ethtool -s eth0 speed [10/100/1000] duplex [half/full] autoneg [on/off]
強制設置速度、雙工模式 通常不推薦! 僅在自動協商失敗且確認對端設置時使用。如 ethtool -s eth0 speed 1000 duplex full autoneg off
。ethtool -m eth0
查看模塊診斷信息 (SFP/SFP+/QSFP) 顯示光模塊廠商、型號、序列號、波長、傳輸距離、告警狀態等 (需網卡支持)。 -
關鍵輸出解讀 (
ethtool eth0
):Link detected: yes/no
: 最基礎! 網線是否物理連接上?網卡是否啟用?Speed: 1000Mb/s
: 當前協商速率。是 10M/100M/1000M/10000M 嗎?符合預期嗎?Duplex: Full
: 當前雙工模式。必須是 Full Duplex (全雙工)!Half Duplex (半雙工) 會導致嚴重性能問題。Port: Twisted Pair/FIBRE
: 連接介質類型。銅纜還是光纖?Auto-negotiation: on/off
: 自動協商是否開啟。
三、iperf
/ iperf3
- 網絡性能測試工具
-
主要用途: 在兩臺主機之間進行主動的網絡帶寬測試。
iperf3
是更新的版本,更推薦使用。 -
工作模式:
- 服務端 (Server): 在一臺機器上運行,監聽連接 (
-s
)。 - 客戶端 (Client): 在另一臺機器上運行,連接到服務端 (
-c [server_ip]
),發起測試流量。
- 服務端 (Server): 在一臺機器上運行,監聽連接 (
-
常用命令參數 (以
iperf3
為例):參數 作用 說明 示例 服務端: iperf3 -s
啟動默認服務端 監聽 TCP 5201 端口 iperf3 -s -p [port]
指定監聽端口 iperf3 -s -p 5000
iperf3 -s -D
以守護進程/后臺模式運行 客戶端: iperf3 -c [server_ip]
最基本測試 客戶端連接到服務端進行 TCP 測試 iperf3 -c 192.168.1.100
iperf3 -c [server_ip] -t [seconds]
指定測試時長 (秒) 默認 10 秒 iperf3 -c 192.168.1.100 -t 30
iperf3 -c [server_ip] -P [num]
指定并行連接數 測試多線程/高并發能力 iperf3 -c 192.168.1.100 -P 4
iperf3 -c [server_ip] -R
反向模式 (測上傳) 默認客戶端是發送方 (測下載)。 -R
讓服務端發,客戶端收 (測客戶端上傳/服務端下載)。iperf3 -c 192.168.1.100 -R
iperf3 -c [server_ip] -u -b [bandwidth]
UDP 測試 -u
: 使用 UDP。-b
: 指定目標帶寬 (如10M
,1G
)。測試極限帶寬、丟包率、抖動。iperf3 -c 192.168.1.100 -u -b 1G
iperf3 -c [server_ip] -w [size]
設置 TCP 窗口大小 單位字節 (K, M)。影響 TCP 性能,特別是高延遲網絡 (長肥網絡)。 iperf3 -c 192.168.1.100 -w 2M
iperf3 -c [server_ip] -i [interval]
設置報告間隔 (秒) 默認 1 秒 iperf3 -c 192.168.1.100 -i 2
iperf3 -c [server_ip] -J
輸出 JSON 格式結果 便于腳本解析 iperf3 -c [server_ip] -p [port]
指定服務端端口 iperf3 -c 192.168.1.100 -p 5000
iperf3 -c [server_ip] -B [client_ip]
綁定客戶端源 IP 多網卡時指定用哪個 IP 測試 iperf3 -c 192.168.1.100 -B 192.168.1.50
iperf3 -c [server_ip] -Z
啟用 Zero Copy 可能提升性能 (需系統支持) iperf3 -c [server_ip] -T [title]
設置測試標題 在報告中顯示 -
關鍵輸出解讀 (TCP 測試):
[ ID] Interval Transfer Bitrate
:核心結果行。Interval
: 時間區間。Transfer
: 在此區間內傳輸的數據總量。Bitrate
: 平均帶寬 (bits per second - bps)。Gbits/sec
(Gb/s),Mbits/sec
(Mb/s) 是主要關注指標。
[SUM]
行:當使用-P
指定多個并行連接時,會有一個 SUM 行匯總所有連接的總帶寬。Sender
/Receiver
:指示數據流方向。
-
關鍵輸出解讀 (UDP 測試):
Jitter ms
: 抖動 (延遲變化)。越小越好,實時應用 (如 VoIP, 視頻會議) 非常關注。Lost/Total Datagrams
: 丟包數量和總包數。Lost%
: 丟包率。Bitrate
: 實際達到的平均帶寬 (可能低于-b
指定的目標帶寬,尤其是在有丟包時)。
總結與典型工作流
- 硬件識別 (What NIC do I have?):
lspci | grep -i ethernet
-> 找到網卡設備名 (如00:1f.6
) ->lspci -v -s 00:1f.6
/lspci -k -s 00:1f.6
(查看詳細信息、驅動)。 - 接口狀態診斷 (Is it plugged in? What speed? Any errors?):
ethtool eth0
: 看 Link, Speed, Duplex, Auto-neg。ethtool -i eth0
: 看驅動版本。ethtool -S eth0
: 看錯誤、丟包統計。ethtool -k eth0
: 看 Offload 設置 (如有性能問題)。
- 網絡性能測試 (How fast is the link?):
- 在 Server A:
iperf3 -s -p 5000
- 在 Server B:
iperf3 -c [ServerA_IP] -p 5000 -t 30 -P 4 -i 2
(測試 Server B 到 Server A 的下載/Server A 的上傳) - 在 Server B:
iperf3 -c [ServerA_IP] -p 5000 -t 30 -P 4 -i 2 -R
(測試 Server B 到 Server A 的上傳/Server A 的下載) - (可選) 在 Server B:
iperf3 -c [ServerA_IP] -p 5000 -u -b 1G
(UDP 極限測試)
- 在 Server A:
記住:
lspci
告訴你硬件是什么。ethtool
告訴你網卡工作狀態如何、怎么配置的。iperf
/iperf3
告訴你網絡實際跑起來有多快。
熟練掌握這三個工具,是 Linux 系統管理員和網絡工程師進行網絡配置、故障排查和性能調優的基礎技能。