当前位置: 首页 > news >正文

ethtool,lspci,iperf工具常用命令总结

ethtoollspciiperf 是 Linux 系统中进行网络硬件查看、配置和性能测试的核心命令行工具。下面是它们的常用命令分析和总结:

核心作用总结:

  1. lspci: 侦察兵 - 列出系统所有 PCI/PCIe 总线上的硬件设备信息,主要用于识别网卡型号、制造商、位置等物理硬件信息。
  2. ethtool: 网络医生/调音师 - 查询和配置网络接口控制器(NIC)的参数,用于诊断链路状态、查看驱动信息、统计信息、调整高级功能(如 Offload)等。
  3. 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]),发起测试流量。
  • 常用命令参数 (以 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 指定的目标带宽,尤其是在有丢包时)。

总结与典型工作流

  1. 硬件识别 (What NIC do I have?): lspci | grep -i ethernet -> 找到网卡设备名 (如 00:1f.6) -> lspci -v -s 00:1f.6 / lspci -k -s 00:1f.6 (查看详细信息、驱动)。
  2. 接口状态诊断 (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 设置 (如有性能问题)。
  3. 网络性能测试 (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 极限测试)

记住:

  • lspci 告诉你硬件是什么
  • ethtool 告诉你网卡工作状态如何怎么配置的
  • iperf / iperf3 告诉你网络实际跑起来有多快

熟练掌握这三个工具,是 Linux 系统管理员和网络工程师进行网络配置、故障排查和性能调优的基础技能。

http://www.dtcms.com/a/313071.html

相关文章:

  • 前端面试手撕题目全解析
  • CXGrId中按回车控制
  • 微店所有店铺内的商品数据API接口
  • 宝马集团与SAP联合打造生产物流数字化新标杆
  • 达梦数据库备份与还原终极指南:从基础到增量策略实战
  • [leetcode] 位运算
  • 【网络与爬虫 39】Crawlee现代爬虫革命:TypeScript驱动的智能数据采集框架
  • 井盖识别数据集-2,700张图片 道路巡检 智能城市
  • C的运算符与表达式
  • iNavFlight飞控固件学习-4《LED初始化》
  • MVCC的实现原理
  • git配置公钥/密钥
  • Android XR SDK深度解析:构建下一代沉浸式体验的开发指南
  • 《从原理到实践:MySQL索引优化与SQL性能调优全解析》
  • Vue中:deep()和 ::v-deep选择器的区别
  • JavaScript:编程世界中的“语盲”现象
  • Java,八股,cv,算法——双非研0四修之路day24
  • ulimit参数使用详细总结
  • ELECTRICAL靶机
  • Transformer模型用于MT信号相关性预测与分析
  • python的易物小店交换系统
  • 2106. 摘水果
  • 数据结构中使用到的C语言
  • RocksDb 是什么?levelDB、LSM 树、SSTable又分别是什么?区别呢?
  • Linux 内存调优之如何限制进程、系统级别内存资源
  • 第二章 矩阵
  • 剥离petalinux设备树,使用 dtc 单独编译
  • 主流身份认证协议都有哪些?应用场景有何区别?
  • BRL贝叶斯规则列表
  • 《C++》stack容器详解