Cpu调优 -----mpstat命令

目录

一、mpstat 命令描述

1. 下在mpstat 的软件包

 2、mpstat  的语法格式

2.1  mpstat 命令参数:

3、mpstat 命令的各列含义

4、平均负载信息

二、压力测试工具 stress

1、工具简介

2、参数详解

 三、查看运行中的进程/任务、CPU、内存等的统计信息------pidstat

1、 命令介绍

2、格式

3、常用参数

4、输出信息含义

 四:实验

1、实验目的

2、压力测试查看CPU的使用率

 3、模拟I/O负载 

4、模拟大量进程场景

五、总结


一、mpstat 命令描述

mpstat (multiprocessor state) 可以查看所有cpu的平均负载,也可以查看指定cpu的负载。所以mpstat其实就是主要查看CPU负载的一个工具。是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。

1. 下载mpstat 的软件包

这个命令Linux缺省没有安装,它是Linux性能工具集sysstat中的一个工具,所以我们要装上sysstat,安装方法随不同的系统略有不同

sysstat是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如:CPU 使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行。

centos    系统的安装方法

 2、mpstat  的语法格式

mpstat 的语法:

mpstat	[-p  {ALL}]		[ internal  	[count] ]

2.1  mpstat 命令参数:

p: 指定要吉安空哪个CPU,范围是【0~n~1】,ALL表示监控,所有CPU都监控

internal :相邻两次采样的间隔时间

Count:采样的次数

示例:

 其中:

第一部分:输出首先显示了所有CPU的合计指标,然后显示了每个CPU各项的指标。

第二部分:在结尾处显示所有CPU的平均值

3、mpstat 命令的各列含义

显示参数

                                                          描述

CPU

显示的是某个CPU还是全部CPU    all=全部

%usr

表示用户所有使用的CPU百分比

%nice 

表示使用nice  值的cpu 的百分比

%sys 

表示内核进程使用的cpu 百分比

%iowait

表示等待进行I/O 所使用的cpu时间百分比

%irp

表示用于处理系统终端的cpu百分比

%soft 

表示用于软件中断的cpu百分比

%steal 

虚拟机强制cpu 等待的时间百分比

%guest  

虚拟机占用cpu 时间的百分比

%gnice

cpu  运行niced  guest  虚拟机所花费的时间百分比

%idle 

cpu  的空闲时间的百分比

mpstat主要用在当系统变慢,平均负载增大时,我们想判断到底是CPU的使用率增大了,还是IO压力增大的情况。

4、平均负载信息

当系统变慢,用top 或uptime  来了解系统的负载情况

系统平均负载是指在特定时间间隔内运行队列中的平均进程数

如果单个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的

二、压力测试工具 stress

1、工具简介

 stress是Linux下的一个压力测试工具,可以对cpu、memory(内存)、IO以及磁盘进行压力测试,可以指定负载的cpu个数

2、参数详解

-c : --cpu  产生n个进程,每个进程都反复不停的计算随机数的平方根

-i : --io  产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上

-m :-vm  产生n个进程,每个进程不断分配和释放内存

-t : --timout   在n秒后结束进程

-d : --hadd  产生n个不断执行 write 和unlink函数的进程(创建文件、写入内容、删除文件)

3、 下载压力压力工具软件包

yum install -y epel-release 

注:需要先下载所需要的依赖包否则直接下载stress软件包工具不成功

下载压力测试工具

yum install -y stress

 三、查看运行中的进程/任务、CPU、内存等的统计信息------pidstat

1、 命令介绍

pidstat是sysstat工具中的一个命令,用于监控进程的cpu、内存、线程、IO及上下文切换等系统资源的占用情况。

2、格式

 pidstat [ options ] [ <interval> [ <count> ] ]
     分别是    选项        时间间隔     采集次数

3、常用参数

-u

默认的参数,显示各个进程的CPU使用统计

-r

显示各个进程的内存使用统计

-d

显示各个进程的IO使用情况

-p

指定进程号

-w

显示每个进程的上下文切换情况

-t

显示选择任务的线程的统计信息外的额外信息

-V

版本号

-h

在一行上显示了所有活动,这样其他程序可以容易解析

-L

在SMP环境,表示任务的CPU使用率/内核数量

-l

显示命令名和所有参数

4、输出信息含义

pidstat -u 查看本机全部进程的CPU使用情况

pidstat -u -p [PID] 2 3 每两秒输出一次进程号为PID的进程CPU使用情况,输出3次

  •  UID:用户id
  •  PID:进程id
  •  %user:表示用户进程所使用cpu的百分比
  •  %system:表示内核进程所使用cpu的百分比
  •  %guest:表示运行CPU时所消耗的cpu时间百分比
  •  %wait:表示任务在等待运行时花费的cpu的百分比。
  •  %CPU:表示进程所使用cpu的百分比
  •  CPU:处理进程的cpu编号
  •  Command:进程对应的命令

 注:运行pidstat不加任何选项,统计的信息为系统启动开始的各项统计信息

(1)使用-r选项统计进程内存使用情况

•  minflt/s:从内存中加载数据时每秒出现的次要错误的数目,这些不要求从磁盘载入内存页面
•  majflt/s:从内存中加载数据时每秒出现的主要错误的数目,这些要求从磁盘载入内存页面,一般在内存使用紧张时产生。
•  VSZ:占用的虚拟内存大小,包括进入交换分区的内存
•  RSS:占用的物理内存大小,不包括进入交换分区的内存
•  %MEM:进程使用的物理内存百分比

(2)使用-d选项统计进程IO使用情况

•  kB_rd/s:进程每秒从磁盘读取的数据量(以kB为单位)
•  kB_wr/s:进程每秒向磁盘写入的数据量(以kB为单位)
•  kB_ccwr/s:任务写入磁盘被取消的速率(以kB为单位)
•  iodelay:任务的I/O阻塞延迟,以时钟周期为单位,包括等待同步块 I/O 和换入块 I/O 结束的时间

(3)使用-w选项显示进程的上下文切换情况

•  cswch/s :表示每秒自愿上下文切换的次数
•  nvcswch/s :表示每秒非自愿上下文切换的次数

 注:所谓自愿上下文切换,是指进程无法获得所需的资源导致的上下文切换。
     而非自愿上下文切换,则是指进程由于cpu分配的时间片耗尽,被系统强制调度导致的上下文切换

 (4)使用-t和-p选项显示指定进程的线程

  •  TGID:主线程id
  •  TID: 线程id

 (5)使用-C选项显示符合匹配的进程

 四:实验

1、实验目的

采用stress压力测试工具,模拟CPU 负载的情况,高IO的情况,使用uptime查看平均负载,使用mpstat和pidstat工具,找出负载高的根源。

查看系统平均负载情况uptime

初始信息负载情况

2、压力测试查看CPU的使用率

模拟cpu 负载

压力测试前,cpu的使用率

 使用stress工具进行压力测试

stress  --cpu 2  --timeout  600
 
进行压力测试 对2快cpu 进行增压 持续600s

 产生压力后的信息:显示用户进程 stress对cpu的使用率为100% cpu占用率过高,cpu负载 

pidstat -u 5   查看运行中的进程和任务,每5秒刷新一次

查看运行中的进行和任务,stress对2快cpu使用率过高

 解决问题

kill -9   PID(号)			杀死相应负载过大的进程,释放cpu负载

 3、模拟I/O负载 

使用stress工具进行压力测试

stress --io 10 --timeout 600
 
进行压力测试,产生10个进程,持续600秒
-i : --io  产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上

 mpstat -P ALL 1 2 

显示所有CPU统计的信息,表示每隔1秒,总共2次

注:使用stress无法模拟iowait升高,但sys(表示内核进程使用的 CPU 百分比。)升高。stress -i参数表示通过系统调用sync来模拟IO问题,但sync是刷新内存缓冲区数据到磁盘中,以确保同步。如果内存缓冲区内没多少数据,读写到磁盘中的数据也就不多,没法产生IO压力。使用SSD(固态硬盘)磁盘的环境中尤为明显,iowait一直为0,但因为大量系统调用,导致系统CPU使用率sys升高。

 stress --io 15 --hdd 15 --timeout 600s

-d : --hdd  产生n个不断执行 write 和unlink函数的进程(创建文件、写入内容、删除文件)
 
-i : --io  产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上

mpstat -P ALL 1 2   

显示所有CPU统计的信息,表示每隔1秒,总共2次

Io 读写占用百分比过高

 查看正在进行的进程pid号

找到异常原因

查看是哪个进程导致I/O读写过高

pidstat -d 1 3(-d参数查看各进程io情况)
 
Stress 占用进程导致io读写过高

找到相应进程,将问题进程杀死

解决问题

杀死进程后,mpstat命令查看

4、模拟大量进程场景

当系统中运行进程超出 CPU 运行能力时,就会出现等待 CPU 的进程。比如,我们还是使用 stress,但这次模拟的是 20 个进程

由于系统只有 2个 CPU,因而,系统的 CPU 处于严重过载状态,平均负载高达 16.

接着再运行 pidstat 来看一下进程的情况

pidstat -u 1 2      
 #显示各个进程的CPU使用统计  每1秒刷新一次,总共执行2次

可以通过平均负载知道cpu是处于负载的状况。

 mpstat -P ALL 1 2         
#-P 查看所有cpu   间隔1秒,执行2次

五、总结

cpu使用率是单位时间内cpu繁忙情况的统计,跟系统平均负载不一定完全对应,系统中存在大量等待cpu调度的进程,会使load average平均负载和cpu使用率都升高,mpstat的全称为Multiprocessor Statistics,是一款常用的多核CPU性能分析工具,用来实时查询每个CPU的性能指标,以及所有CPU的平均指标。
 

<think>好的,我现在要处理用户关于TX checksumming offloading的网络配置和性能问题的查询。首先,我需要理解用户的问题核心是什么。用户可能遇到了网络性能问题,或者配置错误,想要了解如何排查和解决与TX checksum offloading相关的问题。 首先,我应该回忆一下什么是TX checksum offloading。这是网卡的一项功能,允许将计算数据包校验和的工作从CPU转移到网卡硬件上,从而减少CPU的负担,提高系统性能。但有时候,启用这个功能可能会导致某些问题,比如校验和错误,尤其是在虚拟化环境或某些驱动不兼容的情况下。 接下来,用户可能需要知道如何检查当前系统的TX checksum offloading状态。这时候,我需要想到在Linux系统中常用的工具是ethtool。使用ethtool -k <interface>可以查看网卡的offloading设置,包括tx-checksumming的状态。例如,用户需要确认tx-checksumming是on还是off。 然后,用户可能需要知道如何启用或禁用这个功能。使用ethtool -K <interface> tx off可以关闭TX checksum offloading。但需要注意的是,修改这些设置可能需要root权限,并且重启后可能会恢复默认,所以需要配置持久化。 另外,用户的问题可能涉及性能分析。启用offloading通常会降低CPU使用率,但如果在某些情况下硬件计算校验和不正确,反而会导致数据包被丢弃,影响网络性能。这时候需要通过工具如tcpdump抓包,检查是否有校验和错误的报文。例如,使用tcpdump -vvv -i <interface>可以查看校验和是否正确。 用户还可能遇到在虚拟化环境中(如VMware、KVM)的问题,因为虚拟网卡的驱动可能对offloading支持不佳,导致校验和错误。这时候建议在虚拟机或宿主机上关闭offloading,或者检查驱动版本是否需要更新。 此外,性能方面,如果确定硬件支持且无错误,开启offloading可以提升性能。但需要平衡CPU和网络吞吐量,特别是在高负载情况下。监控工具如sar、iftop可以帮助用户观察CPU使用率和网络流量变化。 最后,用户可能需要持久化配置,防止重启后设置失效。这可以通过在/etc/rc.local或使用NetworkManager的脚本来实现,具体方法取决于发行版。 总结下来,我需要分步骤解释如何检查、配置、排查问题以及性能,同时引用相关的工具和命令,并确保用户理解每个步骤的目的和可能的影响。同时,需要提醒用户注意不同环境和驱动可能带来的差异,以及在修改配置前的备份和测试建议。</think>### TX校验和卸载(TX Checksum Offloading)配置与排错指南 TX校验和卸载是网卡(NIC)将数据包校验和计算任务从CPU转移到硬件处理的功能[^1],可降低CPU负载并提升网络性能。以下是具体排查和配置步骤: --- #### 一、检查当前状态 1. **查看网卡offloading配置**: ```bash ethtool -k <网卡名称> | grep tx-checksumming ``` - 输出示例:`tx-checksumming: on` 表示已启用 - 若状态异常,需确认网卡型号是否支持该功能(通过`lspci -v`查看) 2. **验证数据包校验和**: ```bash tcpdump -vvv -i <网卡名称> -c 10 -n ``` - 观察输出中的`bad cksum`字段,若存在错误则可能需关闭offloading --- #### 二、配置TX校验和卸载 1. **临时启用/禁用**: ```bash ethtool -K <网卡名称> tx on # 启用 ethtool -K <网卡名称> tx off # 禁用 ``` 2. **持久化配置(以Ubuntu为例)**: ```bash # 编辑网络接口配置文件 echo 'ethtool -K eth0 tx off' >> /etc/network/if-up.d/offload-config chmod +x /etc/network/if-up.d/offload-config ``` --- #### 三、性能建议 1. **CPU与吞吐量平衡**: - 高带宽场景(如10Gbps+)建议开启offloading以降低CPU使用率 - 低带宽场景可关闭offloading,避免硬件计算延迟影响实时性应用 2. **虚拟化环境注意**: - VMware/KVM虚拟机中可能出现校验和错误,需在宿主机和客户机同时关闭offloading - 使用`virtio`驱动时,检查驱动版本是否支持`csum offload`功能 --- #### 四、常见问题排查 | 现象 | 可能原因 | 解决方法 | |---------------------|--------------------------|----------------------------| | 网络吞吐量下降 | offloading导致校验和错误 | 关闭tx-checksumming并测试 | | TCP重传率升高 | 硬件校验和计算错误 | 更新网卡固件或驱动程序 | | 虚拟机丢包 | 虚拟化层offloading不兼容 | 在虚拟网卡设置中禁用offloading | --- #### 五、监控工具推荐 1. **CPU负载**:`mpstat -P ALL 2` 2. **网络统计**:`ethtool -S <网卡名称>`(关注`tx_csum_offload_errors`) 3. **抓包分析**:`tcpdump -i <网卡名称> -w dump.pcap`(用Wireshark分析校验和) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值