• 用ethtool 命令解决Linux 网卡丢包【转】


    转自:https://blog.csdn.net/chengxuyuanyonghu/article/details/73739516

    生产中有一台Linux设备并发比较大,droped包比较多,尤其是在跑游戏数据包的时候,存在严重的丢包现象,怀疑网卡性能不足,在更换设备前想能不有通过软件方法解决,通过网上一些资料显示,出现这种现象,也有可能是网卡buffer size 太小的原因,遂尝试更改buffer 大小解决,下面的设备运行了64天,丢包超过20多亿 .

    ethtool命令用于获取以太网卡的配置信息,或者修改这些配置

    -a 查看网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。 
    -A 修改网卡中 接收模块RX、发送模块TX和Autonegotiate模块的状态:启动on 或 停用off。 

    -c display the Coalesce information of the specified ethernet card。 
    -C Change the Coalesce setting of the specified ethernet card。
    ​ 
    -g Display the rx/tx ring parameter information of the specified ethernet card。 
    -G change the rx/tx ring setting of the specified ethernet card。 

    -i 显示网卡驱动的信息,如驱动的名称、版本等。 
    -d 显示register dump信息, 部分网卡驱动不支持该选项。
    ​ 
    -e 显示EEPROM dump信息,部分网卡驱动不支持该选项。 
    -E 修改网卡EEPROM byte。 

    -k 显示网卡Offload参数的状态:on 或 off,包括rx-checksumming、tx-checksumming等。 
    -K 修改网卡Offload参数的状态。
    ​ 
    -p 用于区别不同ethX对应网卡的物理位置,常用的方法是使网卡port上的led不断的闪;N指示了网卡闪的持续时间,以秒为单位。 
    -r 如果auto-negotiation模块的状态为on,则restarts auto-negotiation。 

    -S 显示NIC- and driver-specific 的统计参数,如网卡接收/发送的字节数、接收/发送的广播包个数等。 

    -t 让网卡执行自我检测,有两种模式:offline or online。
    ​ 
    -s 修改网卡的部分配置,包括网卡速度、单工/全双工模式、mac地址等。


    查看当前网卡的buffer size情况ethtool -g eth0   

    Ring parameters for eth0:
    Pre-set maximums:
    RX: 4096RX Mini: 0
    RX Jumbo: 0
    TX: 4096
    Current hardware settings:
    RX: 256
    RX Mini: 0
    RX Jumbo: 0
    TX: 256

    由于我的是rx包会有droped的情况

    我们用ethtool -G eth0 rx 2048

    同样对于eth1也是如此ethtool -G eth1 rx 2048

    再看看修改过后的ethtool -g eth0

    Ring parameters for eth0:
    Pre-set maximums:
    RX: 4096
    RX Mini: 0
    RX Jumbo: 0
    TX: 4096
    Current hardware settings:
    RX: 2048
    RX Mini: 0
    RX Jumbo: 0
    TX: 2048

    命令描述:

    ethtool 是用于查询及设置网卡参数的命令。


    使用概要:
    ethtool ethx       //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0、eth1等等
    ethtool –h        //显示ethtool的命令帮助(help)

    ethtool –i ethX    //查询ethX网口的相关信息 
    ethtool –d ethX    //查询ethX网口注册性信息

    ethtool –r ethX    //重置ethX网口到自适应模式
    ethtool –S ethX    //查询ethX网口收发包统计

    ethtool –s ethX [speed 10|100|1000] [duplex half|full]  [autoneg on|off]        //设置网口速率10/100/1000M、设置网口半/全双工、设置网口是否自协商


    使用举例:
    1)[root@Linux /]# ethtool eth1
       Settings for eth1:
            Supported ports: [ TP ]
            Supported link modes:   10baseT/Half 10baseT/Full 
                                    100baseT/Half 100baseT/Full 
                                    1000baseT/Full 
            Supports auto-negotiation: Yes
            Advertised link modes: 10baseT/Half 10baseT/Full 
                                    100baseT/Half 100baseT/Full 
                                    1000baseT/Full 
            Advertised auto-negotiation: Yes
            Speed: 1000Mb/s
            Duplex: Full
            Port: Twisted Pair
            PHYAD: 0
            Transceiver: internal
            Auto-negotiation: on
            Supports Wake-on: umbg
            Wake-on: d
            Link detected: yes
    2)[root@linux /]# ethtool -i eth1
       driver: e1000
       version: 5.0.43-k1
       firmware-version: N/A
       bus-info: 06:08.1
    3)[root@linux /]# ethtool -S eth1
       NIC statistics:
         rx_packets: 58068300
         tx_packets: 87124083
         rx_bytes: 1589713008
         tx_bytes: 2165825901
         rx_errors: 0
         tx_errors: 0
         rx_dropped: 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_fifo_errors: 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

    4)[root@linux /]# ethtool -s eth1 autoneg off speed 100 duplex full


    相关参考:
    1)[root@linux /]# which ethtool        //查询 ethtool 存放的路径
        /sbin/ethtool
    2)[root@linux /]# rpm -qf /sbin/ethtool        //查询 ethtool 的版本信息
       ethtool-1.6-5
    3)将 ethtool 设置永久保存在网络设备的方法
            解决方法一:
            ethtool 设置可通过 /etc/sysconfig/network-scripts/ifcfg-ethX 文件保存,从而在设备下次启动时激活选项。 

    例如:ethtool -s eth0 speed 100 duplex full autoneg off

    此指令将eth0设备设置为全双工自适应,速度为100Mbs。若要eth0启动时设置这些参数, 修改文件/etc/sysconfig/network-scripts/ifcfg-eth0 ,
    ​添加如下一行: 
    ETHTOOL_OPTS="speed 100 duplex full autoneg off"

             解决方法二:
             将ethtool设置写入/etc/rc.d/rc.local之中。

  • 相关阅读:
    鸽巢原理(The Pigeonhole Principle)(抽屉原理)
    VS2010显示行号
    HDU 2546 饭卡
    组合数学之排列组合(Permutations and Combinations)(四种情况)
    php中的$_SERVER方法初识
    重新认识hasLayout——IE浏览器css bug的一大罪恶根源 转
    javascript实现简单的链式调用
    Javascript 静态类的实现
    Object类相关的属性,方法和操作符
    <转>前端开发中的MCRV模式
  • 原文地址:https://www.cnblogs.com/sky-heaven/p/10394095.html
Copyright © 2020-2023  润新知