学习目标:
每天掌握一个服务器调优性能
学习内容:
一 网络调优相关:
ethtool工具:
参考文章如下:
【ethtool】ethtool 网卡诊断、调整工具、网卡性能优化| 解决丢包严重_ethtool -g-CSDN博客
上文含具体参数及含义,比较简洁明了
https://blog.csdn.net/bandaoyu/article/details/115556372
ethtool 网卡诊断和调整工具总结_查看网卡信息-CSDN博客
改变网络接口速度和协商方式miitool和ethtool_怎么看接口的协商模式-CSDN博客
如何使用 ethtool 命令管理以太网卡 | Linux 中国 - 知乎
https://www.jianshu.com/p/ee1d1ae73241
通过ethtool命令解决网络的卡顿、时延、断断续续、路由带*****识别错误_register-dump-CSDN博客
Linux系统下查看网卡配置和网络流量监控指令:ifconfig、ethtool_linux_乘凉~-GitCode 开源社区
具体使用方法参考链接这些文章,此处记录我认为关键,容易忽略的点:
1:ifconfig和ethtool区别
ifconfig命令用于在软件层面统计网络数据,而ethtool是从硬件层面查看或者修改网络数据,所以关于数据包会有出入.
由于软件统计数据和硬件统计数据在设计上是在包处理链的不同时刻增加的,因此很有可能传入的数据包在被硬件统计之后,但在到达软件统计数据之前就被丢弃了(很可能是组播数据包),而在相反的方式中,在传输过程中,FCS字节被添加在中间,TSO skb将被分割,头字节被添加。因此,使用ifconfig(软件)和ethtool(硬件)从用户空间收集的统计数据不能进行比较。
命令使用:
1、ifconfig(Interface Configuration):
功能:用于查看、配置、启用或禁用网络接口的IP地址、MAC地址、网络状态等信息。
语法:ifconfig [接口名] [选项]
常用选项:
接口名:指定要配置或显示信息的网络接口,如eth0、wlan0等。若不指定接口名,则默认显示所有活动的接口信息。
up:启用指定接口。
down:禁用指定接口。
使用示例:
显示所有网络接口的信息:ifconfig
显示指定接口的信息:ifconfig eth0
启用指定接口:ifconfig eth0 up
禁用指定接口:ifconfig eth0 down
2、ethtool:
功能:用于查询和设置以太网接口的链接状态、速度、双工模式、驱动程序信息等。
语法:ethtool [选项] [接口名]
常用选项:
接口名:指定要查询或设置的以太网接口名,如eth0、eth1等。
-s:设置接口的某些属性,如速度、双工模式等。
使用示例:
显示指定接口的链接状态、速度等信息:ethtool eth0
查看以太网接口是否启用自动协商:ethtool eth0 | grep Auto-negotiation
禁用以太网接口的自动协商:ethtool -s eth0 autoneg off
2.用ifconfig命令查看网卡信息时,关注这三个参数,如果后面有数值,则需要调优
Rx errors,总的收包错误数量,包括帧错误(校验,太长,同步等等),Ring buffer溢出, 网卡丢包,内存不足等等。
Rx dropped,数据包已经进入了 Ring Buffer,但是由于内存不够等系统原因,导致在拷贝到内存的过程中被丢弃。
Rx overruns,由于CPU无法及时的处理报文,导致Ring buffer被耗完,从而网卡直接丢包。
- RX overruns :接收时,由于速度过快而丢失的数据包数
- Linux之(21)ifconfig命令_loop txqueuelen 1000 (本地环回)-CSDN博客
- 上文介绍了ifconfig用法,包括网卡下配置多个通段地址.
3.一些关于ethtool可调优的参数及其含义
3.1下面是展示指定网卡设备的停止帧信息:
onceday->~:# ethtool -a eth1
Pause parameters for eth1:
Autonegotiate: on
RX: off
TX: off
这三个参数也可进行设置,含义如下:
autoneg on|off(开启或关闭停止帧自动协商)
rx on|off(开启或关闭RX停止帧)
tx on|off(开启或关闭TX停止帧)
停止帧是以太网协议用来降低对端发包速率的,避免丢包过多。
3.2关闭TSO和GSO
禁用网络接口的offload特性
ethtool -K eth0 tx off sg off tso off gro off
在一些网卡调优参数中,关闭了TSO,和GSO为了提升网卡转发效率,从而把数据包分段的工作交给CPU来完成.
1、TSO(transimit segment offload)是针对tcp而言的,是指协议栈可以将tcp 分段的操作offload到硬件的能力,本身需要硬件的支持。当网卡具有TSO能力时,上层协议栈可以直接下发一个超过MTU数据包,而把数据包拆分的动作交给硬件去做,节省cpu资源。除了TSO,内核还有一个GSO,GSO不区分协议类型,GSO默认是开启的,GSO是在软件上实现的一种延迟分段的技术,相比TSO,GSO最终还是需要协议栈自己完成分段的处理。
即使网卡没有TSO能力,传输层依然可以封装一个超过MTU的数据包,等数据包发送给驱动之前,检查网卡是否有TSO能力,如果没有,再调用ip层和传输层的分段处理函数完成数据包的分段处理,通过这样,内核将数据包的分段延迟到了dev链路层,提升数据包处理效率。当支持GSO/TSO时,skb的数据存放格式如下所示,在skb->end后,存在一个skb_share区域,skb的非线性区数据就存放在这里,GSO/TSO分段的处理就是要把skb数据(包括线性区、非线性区)按gso_size的大小进行分割处理;本文以虚拟网卡为例,介绍TSO的整体流程。具体内核实现可看原文
————————————————
原文链接:https://blog.csdn.net/zgy666/article/details/106817333
4.查看协议负载信息:
ethtool -k eth0
输出的信息中on表示当前对应特性开启了,off表示对应的特性没有开启。一般后面还会有一个中括号,里面放着一些额外的信息,如下:
fixed,表示该特性是固定的,也就是当前on/off状态不可改变。
request on,表示该特性应该被打开,但是当前状态是关闭。
request off,表示该特性应该被关闭,但是当前状态是打开。
5.找到对应网卡
物理服务器通常有最少4块网卡:此命令用于判断找出网卡
ethtool -P eth0
6.ethtool修改网卡信息:临时和永久
该命令只是临时设置,如果网卡重启就失效了,如果想要永久保存应该配置 /etc/sysconfig/network-scripts/ifcfg-ethx 文件
将 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之中。
ethtool -s eth0 speed 100 duplex full autoneg off.
————————————————
原文链接:https://blog.csdn.net/bandaoyu/article/details/115556372
二 整体性能分析及调优
看这一篇,就能分析出性能瓶颈了
Linux操作系统性能调优_linux系统性能调优-CSDN博客
学习时间:
- 周一至周五下午 1点—3点
学习产出:
提示:这里统计学习计划的总量