Linux命令——ethtool

转自:https://www.cnblogs.com/kelamoyujuzhen/p/10116423.html

参考:9 Linux ethtool Examples to Manipulate Ethernet Card (NIC Card)

Fun with ethtool

简介

ethtool允许你修改Ethernet adapter配置,并且这种修改只适用于physical ethernet adapters,这意味着bond0,tun0和任何其他非物理网络设备将无法与ethtool一起使用。

注意:大多数Linux内核将以太网设备标记为ethX,其中X是物理以太网接口的#(从0开始)。

我知道我知道,先从最少使用的东西开始。 但是,嘿,有人可能觉得这很有用,对吗? 在处理内核级别问题时,我可能不得不在10年以上查询驱动程序信息十几次,但有人必须在他们生命中的某个时刻遇到这个问题,让我告诉你,它可能更容易 运行一个命令,而不是通过lsmod挖掘并希望模块正确地拾取驱动程序。

驱动信息 和 统计数据

在处理内核级别的问题时,人们往往会使用lsmod来查看相应驱动是否被加载,使用ethtool可以更优雅的解决这个问题。

-i:Queries the specified network device for associated driver information.

复制代码
复制代码
root@ubuntu:~# ethtool -i ens32
driver: e1000
version: 7.3.21-k8-NAPI
firmware-version: 
expansion-rom-version: 
bus-info: 0000:02:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
复制代码
复制代码

-S(大写):Queries the specified network device for NIC- and driver-spe‐cific statistics.

这个参数可以快速定位 rx/tx问题

复制代码
复制代码
root@ubuntu:~# ethtool -S ens32
NIC statistics:
     rx_packets: 380
     tx_packets: 386
     rx_bytes: 42819
     tx_bytes: 81789
     rx_broadcast: 0
     tx_broadcast: 0
     rx_multicast: 0
     tx_multicast: 0
     rx_errors: 0
     tx_errors: 0
     tx_dropped: 0
     multicast: 0
     collisions: 0
     rx_length_errors: 0
     rx_over_errors: 0
     rx_crc_errors: 0
     rx_frame_errors: 0
     rx_no_buffer_count: 0
     rx_missed_errors: 0
     tx_aborted_errors: 0
     tx_carrier_errors: 0
     tx_fifo_errors: 0
     tx_heartbeat_errors: 0
     tx_window_errors: 0
     tx_abort_late_coll: 0
     tx_deferred_ok: 0
     tx_single_coll_ok: 0
     tx_multi_coll_ok: 0
     tx_timeout_count: 0
     tx_restart_queue: 0
     rx_long_length_errors: 0
     rx_short_length_errors: 0
     rx_align_errors: 0
     tx_tcp_seg_good: 1
     tx_tcp_seg_failed: 0
     rx_flow_control_xon: 0
     rx_flow_control_xoff: 0
     tx_flow_control_xon: 0
     tx_flow_control_xoff: 0
     rx_long_byte_count: 42819
     rx_csum_offload_good: 358
     rx_csum_offload_errors: 0
     alloc_rx_buff_failed: 0
     tx_smbus: 0
     rx_smbus: 0
     dropped_smbus: 0
复制代码
复制代码

跟踪网卡

当一台服务器上有多张网卡,查找具体某一张物理网卡往往十分令人头疼。当然,你可以这么做:从ifconfig中取出MAC地址,将所有电缆插入一个管理型交换机,然后在交换机上将Mac表导出,查看具体Mac指向哪里。 使用ethtool可以更优雅地解决这个问题。

-p:Initiates adapter-specific action intended to enable an oper‐ator to easily identify the adapter by sight. Typically this involves blinking one or more LEDs on the specific network port.

ethtool -p ethX [N] 

其中[N]是闪烁的秒数。 ethtool -p eth0 15使eth0闪烁15秒。此时,太网适配器背面的指示灯闪烁会闪烁。

测试Ethernet Adapter

可以针对物理以太网接口运行一些基本测试,测试有两个选项,一个online test(tests nvram and a link test)和一个offline test(register, memory, loopback, interrupt)。 脱机测试很可能在测试期间使主机离线,因此如果你对生产服务器或只能远程访问的计算机运行此操作,请特别注意。

ethtool -t ethX [offline|online] 
复制代码
复制代码
root@ubuntu:~# ethtool -t ens32 online
The test result is PASS
The test extra info:
Register test  (offline)     0
Eeprom test    (offline)     0
Interrupt test (offline)     0
Loopback test  (offline)     0
Link test   (on/offline)     0

root@ubuntu:~# ethtool -t ens32 offline
The test result is FAIL
The test extra info:
Register test  (offline)     0
Eeprom test    (offline)     0
Interrupt test (offline)     0
Loopback test  (offline)     13
Link test   (on/offline)     0
复制代码
复制代码

一些网卡可能不支持online test 或者 offline test

改变Ethernet 配置

ethtool ethX

检查网卡配置信息

复制代码
复制代码
root@ubuntu:~# ethtool ens32
Settings for ens32:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Supported pause frame use: No
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Full 
    Advertised pause frame use: No
    Advertised auto-negotiation: Yes
    partner advertised link modes:	10baseT/Half 10baseT/Full
                         	        100baseT/Half 100baseT/Full
    Link partner advertised pause frame use: No 
    Link partner advertised auto-negotiation: Yes 
    Speed: 1000Mb/s 
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7) drv probe link
Link detected: yes
复制代码
复制代码

可以得出结论:设备支持TP,最高1000BaseT/Full,自动协商。 Partner(Switch)支持最高100baseT / Full和自动协商。设备的实际设置:100Mb / s,全双工,运行TP,物理地址0,设置为自动协商,启用WoL并检测链路。

如果我网卡的支持链接模式设置为low(例如10/Half由于某种原因)但交换机支持1000baseT / Full,那么可以使用ethtool -s ethX将我的以太网设置更改为1000baseT / Full。几乎所有你看到的东西:ethtool ethX,可以用ethtool -s ethX改变。在这种情况下,您将使用以下内容:

ethtool -S eth0 speed 1000 duplex full autoneg on

 -s(小写):Allows changing some or all settings of the specified network device. All following options only apply if -s was specified.

posted @   Sky&Zhang  阅读(1800)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
历史上的今天:
2018-07-04 DM816X 实现 USB HID Gadget 鼠标键盘功能【转】
2018-07-04 USB-HID鼠标、键盘通讯格式【转】
2018-07-04 关于USBHID协议以及鼠标键盘描述符的解释【转】
2017-07-04 TASK_KILLABLE:Linux 中的新进程状态【转】
2017-07-04 Linux进程的Uninterruptible sleep(D)状态【转】
2017-07-04 计算机底层知识拾遗(十)理解进程调度【转】
2017-07-04 关于EINTR错误的理解【转】
点击右上角即可分享
微信分享提示