ethtool,lspci,iperf工具常用命令总结
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 系统管理员和网络工程师进行网络配置、故障排查和性能调优的基础技能。