性能调优之网络篇 - ethtool 简单用法

以前一直拿ethtool来判断网络的物理连接是否正常,其他功能都没仔细看过,但是ethtool绝不是单单看网卡是否linked这么简单的,今天来分享一下ethtool工具的简单用法。

首先看一下命令帮助:

Usage:
ethtool DEVNAME	Display standard information about device
        ethtool -s|--change DEVNAME	Change generic options
		[ speed 10|100|1000|2500|10000 ]
		[ duplex half|full ]
		[ port tp|aui|bnc|mii|fibre ]
		[ autoneg on|off ]
		[ advertise %%x ]
		[ phyad %%d ]
		[ xcvr internal|external ]
		[ wol p|u|m|b|a|g|s|d... ]
		[ sopass %%x:%%x:%%x:%%x:%%x:%%x ]
		[ msglvl %%d ] 
        ethtool -a|--show-pause DEVNAME	Show pause options
        ethtool -A|--pause DEVNAME	Set pause options
		[ autoneg on|off ]
		[ rx on|off ]
		[ tx on|off ]
        ethtool -c|--show-coalesce DEVNAME	Show coalesce options
        ethtool -C|--coalesce DEVNAME	Set coalesce options
		[adaptive-rx on|off]
		[adaptive-tx on|off]
		[rx-usecs N]
		[rx-frames N]
		[rx-usecs-irq N]
		[rx-frames-irq N]
		[tx-usecs N]
		[tx-frames N]
		[tx-usecs-irq N]
		[tx-frames-irq N]
		[stats-block-usecs N]
		[pkt-rate-low N]
		[rx-usecs-low N]
		[rx-frames-low N]
		[tx-usecs-low N]
		[tx-frames-low N]
		[pkt-rate-high N]
		[rx-usecs-high N]
		[rx-frames-high N]
		[tx-usecs-high N]
		[tx-frames-high N]
		[sample-interval N]
        ethtool -g|--show-ring DEVNAME	Query RX/TX ring parameters
        ethtool -G|--set-ring DEVNAME	Set RX/TX ring parameters
		[ rx N ]
		[ rx-mini N ]
		[ rx-jumbo N ]
		[ tx N ]
        ethtool -k|--show-offload DEVNAME	Get protocol offload information
        ethtool -K|--offload DEVNAME	Set protocol offload
		[ rx on|off ]
		[ tx on|off ]
		[ sg on|off ]
		[ tso on|off ]
		[ ufo on|off ]
		[ gso on|off ]
        ethtool -i|--driver DEVNAME	Show driver information
        ethtool -d|--register-dump DEVNAME	Do a register dump
		[ raw on|off ]
		[ file FILENAME ]
        ethtool -e|--eeprom-dump DEVNAME	Do a EEPROM dump
		[ raw on|off ]
		[ offset N ]
		[ length N ]
        ethtool -E|--change-eeprom DEVNAME	Change bytes in device EEPROM
		[ magic N ]
		[ offset N ]
		[ value N ]
        ethtool -r|--negotiate DEVNAME	Restart N-WAY negotation
        ethtool -p|--identify DEVNAME	Show visible port identification (e.g. blinking)
               [ TIME-IN-SECONDS ]
        ethtool -t|--test DEVNAME	Execute adapter self test
               [ online | offline ]
        ethtool -S|--statistics DEVNAME	Show adapter statistics
        ethtool -h|--help DEVNAME	Show this help

ethtool 直接跟网卡名称,可以查看网卡的所有信息:

Settings for eth0:
	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
	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

可以看到eth0这块网卡是自动协商的,全双工,速率是1000Mb/s,最后一行就是显示你的网卡是否有连接网线的。

ethtool -a eth0:查看eth0网卡的中断设置情况:

Pause parameters for eth0:
Autonegotiate:on
RX:off
TX:off

ethtol -i eth0 :查看网卡的drive name and info:

driver: e1000
version: 7.3.21-k8-NAPI
firmware-version: 
bus-info: 0000:02:01.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

ethtool -S|--statistics eth0:查看网卡的统计信息(包括received and transferred packets):

NIC statistics:
     rx_packets: 45326
     tx_packets: 17215
     rx_bytes: 53883145
     tx_bytes: 1510536
     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: 24
     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: 53883145
     rx_csum_offload_good: 45078
     rx_csum_offload_errors: 0
     alloc_rx_buff_failed: 0
     tx_smbus: 0
     rx_smbus: 0
     dropped_smbus: 0

ethtool -s 可以更改网卡的速率和自动协商等参数:

# ethtool -s eth0 speed 100 autoneg off

# root at vm3 in ~ [14:50:52]
# ethtool eth0 
Settings for eth0:
	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:  Not reported
	Advertised pause frame use: No
	Advertised auto-negotiation: No
	Speed: 100Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	Auto-negotiation: off
	MDI-X: off (auto)
	Supports Wake-on: d
	Wake-on: d
	Current message level: 0x00000007 (7)
			       drv probe link
	Link detected: yes

不过没什么特殊需求还是不要改网卡速率,谁都想越快越好。

最常用的就是下面的用法了,我之前工作上有在生产环境上调节网卡的rs 和tx的值。

ethtool -k eth0, 显示网卡的TCP 协议的offload值,-K 可以针对某个参数做调节:

# ethtool -k eth0 
Features for eth0:
rx-checksumming: off
tx-checksumming: on
tx-checksum-ipv4: off [fixed]
tx-checksum-ip-generic: on
tx-checksum-ipv6: off [fixed]
tx-checksum-fcoe-crc: off [fixed]
tx-checksum-sctp: off [fixed]
scatter-gather: on
tx-scatter-gather: on
tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: on
tx-tcp-segmentation: on
tx-tcp-ecn-segmentation: off [fixed]
tx-tcp6-segmentation: off [fixed]
udp-fragmentation-offload: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: on
tx-vlan-offload: on [fixed]
ntuple-filters: off [fixed]
receive-hashing: off [fixed]
highdma: off [fixed]
rx-vlan-filter: on [fixed]
vlan-challenged: off [fixed]
tx-lockless: off [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-ipip-segmentation: off [fixed]
tx-sit-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off
rx-all: off
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
l2-fwd-offload: off [fixed]
busy-poll: off [fixed]

tcp-segmentation-offload:on 是指大于系统MTU设定的包的tcp 分片工作会交由网卡来处理而不是cpu。

generic-segmentation-offload: on 跟TSO类似,除了TCP的包,其他协议的包也可以用网卡来分片。

rx-checksumming: off 是指禁用received的 checksum。

tx-checksumming: on 是开启transfer的checksum。

生产环境的服务器是都是2个万兆网卡绑定用来接受电信SIG数据的,所以我的调整如下:

 for i in 1 2 3 4;do for j in rx tx;do ethtool -K eth$i $j off;done;done
 for i in 1 2 3 4;do for j in tso gso;do ethtool -K eth$i $j on;done;done

将所有网卡的rx, tx禁用,并开启所有网卡的tso和gso,以提高网络性能。

欢迎补充!

时间: 2024-08-17 14:29:56

性能调优之网络篇 - ethtool 简单用法的相关文章

性能调优之网络篇 - iperf

iperf是一款网络性能测试工具,不紧可以测试TCP,还可以测试UDP,包括检测网络带宽,自由设置MSS大小,tcp nodelay,tcp windows 大小,最新的iperf3.0版本甚至加上禁止tcp slow start的功能. 一般系统默认安装的都是iperf的旧版本,最近版本请到官网下载:https://iperf.fr/iperf-download.php,由于我是ubuntu的系统,所以就下载deb的包来安装. 查看iperf3的帮助信息如下: # iperf3 -h Usag

JVM性能调优实践——JVM篇

前言 在遇到实际性能问题时,除了关注系统性能指标.还要结合应用程序的系统的日志.堆栈信息.GClog.threaddump等数据进行问题分析和定位.关于性能指标分析可以参考前一篇JVM性能调优实践--性能指标分析. JVM的调优和故障处理可以使用JDK的几个常用命令工具.因为本文是基于Docker容器内部的Springboot服务.需要调整一下docker容器的启动参数,才可以使用jmap等工具.jmap命令需要使用Linux的Capability的PTRACE_ATTACH权限.而Docker

性能调优之网络速度检测

Esri提供了一个使用简单的网络速度检测应用,能检测两台电脑直接进行数据包传输的平均速率.可以用于检测以下类似问题: 为何本地电脑ArcMap访问共享文件夹上的数据时特别慢. 为何ArcGIS Server使用共享文件夹上的数据进行服务发布时,服务响应特别慢. 该应用是一个使用JavaScript编写的应用,只需要部署在支持HTML的Web服务器上即可. 笔者使用了以下环境来部署: Tomcat 7 Windows Server 2008 部署完后,访问服务器Tomcat的应用地址(例如:192

性能调优之MySQL篇四:MySQL配置定位以及优化

一.CPU最大性能模式 cpu利用特点 5.1 最高可用4个核 5.5 最高可用24核 5.6 最高可用64核心 一次query对应一个逻辑CPU 你仔细检查的话,有些服务器上会有的一个有趣的现象:你cat /proc/cpuinfo时,会发现CPU的频率竟然跟它标称的频率不一样: #cat /proc/cpuinfo processor : 5 model name : Intel(R) Xeon(R) CPU E5-2620 0 @2.00GHz ... cpu MHz : 1200.000

性能调优:理解Set Statistics Time输出

在性能调优:理解Set Statistics IO输出我们讨论了Set Statistics IO,还有如何帮助我们进行性能调优.这篇文章会讨论下Set Statistics Time,它会告诉我们执行一个查询需要的时间. 我们用一个例子来开始. 1 USE AdventureWorks2008r2 2 GO 3 DBCC dropcleanbuffers 4 DBCC freeproccache 5 6 GO 7 SET STATISTICS TIME ON 8 GO 9 SELECT * 1

<Linux性能调优指南>主要思路流程

网上IBM很早放出的一本免费电子书, 十来年了,参考意义还是很大. 国内有翻译成中文在线阅读的版本. 见如下两个URL Linux Performance and Tuning Guidelines <Linux性能调优指南> https://www.gitbook.com/book/lihz1990/transoflptg/details ========================================= 服务器优化思路 管理变更流程 管理变更和性能优化并不直接相关,但可能是

Spark性能调优——扩展篇

本文要解决的问题: 从更深层次考虑,对Spark进行性能调优. 目的 继基础篇分析了开发调优与资源调优之后,本文作为拓展篇,将深入分析数据倾斜调优与shuffle调优,以解决更加棘手的性能问题. 数据倾斜调优 简述 有时候,大家可能会遇到大数据开发过程中一个比较棘手的问题,那就是数据倾斜,此时Spark作业的性能会比预期差很多,数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的性能. 数据倾斜发生时的现象 绝大多数task执行得都非常快,但个别task执行极慢.

性能调优概述,这是一篇最通俗易懂性能调优的总结!

1. 作者概述 2. 什么是性能调优?(what) 3. 为什么需要性能调优?(why) 4. 什么时候需要性能调优?(when) 5. 什么地方需要性能调优?(where) 6. 什么人来进行性能调优?(who) 7. 怎么样进行性能调优?(How) 8. 总结 硬件配置:CUP Xeon E5620 x 2 8核心, 内存 16G , 硬盘 RAID 10,操作系统: CentOS 6.4 x86_64(64位). 概述 在这篇博文中,我不想用一些抽象的概念去说性能调优的问题,只想用最通俗的

性能调优篇一

性能调优篇一 开篇话题调优 ? 在业务展开到一定情况下,当业务出现等待时间长.不流畅的情况下,这个时候就应该对整体进行调优.性能调优这个话题时一直持续性的被追求,探索更好的架构,更优的配置等等,其实调优这个话题一直存在于一个误区,就是必须在基础架构正确的情况下进行调优会得到更好的效果,点与面都需要调优,不要以为简单调整下配置文件就可以达到很好的效果,其实不然从前端到业务逻辑到负载架构网络容器数据索引内核参数等都需要进行调整,往往单点调优实际效果收益甚微,精准把握短板才能有效提升客户体验. ? 本