系统调优 mpstat,iostat,stress,pidstat,lsof,命令详解

目录

一,mpstat

1.1mpstat概述

 二,压力测试 stress

stress参数

常用参数

压力测试

三,lostat命令

 四,pidstat

五,lsof命令


一,mpstat

1.1mpstat概述

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

2,命令安装

他是linux性能工具集sysstat中的一个工具,所以需要装上sysstat。

 命令语法格式

mpstat基本用法:

mpstat  -P CPU编号

mpstat -P ALL 5 每五秒统计一次所以CPU的平均负载

应用实战

主要用于分析多CPU的平均负载高的原因

计算密集导致平均负载高

IO导致平均负载高

等待CPU调度导致平均值负载高

mpstat经常配合pdistat等其他命令一起分析系统性能瓶颈。

mpstat的语法

mpstat    [-P {|ALL}]     [internal    [count]]

-P :指定要监控那个CPU,范围是[0~n-1],ALL表示监控所有CPU

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

count:采样次数

[root@kya ~]# mpstat -P ALL 4 4     -P ALL 选项指示该命令显示所有CPU的统计信息

                                     4 4 该指令每隔4秒运行一次,一个运行4次

Linux 3.10.0-957.el7.x86_64 (kya) 	2022年07月13日 	_x86_64_	(1 CPU)

10时18分00秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10时18分04秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10时18分04秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

10时18分04秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10时18分08秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10时18分08秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

10时18分08秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10时18分12秒  all    0.00    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.75
10时18分12秒    0    0.00    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.75

10时18分12秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
10时18分16秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
10时18分16秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

平均时间:  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
平均时间:  all    0.00    0.00    0.06    0.00    0.00    0.00    0.00    0.00    0.00   99.94
平均时间:    0    0.00    0.00    0.06    0.00    0.00    0.00    0.00    0.00    0.00   99.94
[root@kya ~]# 

各列的含义

  • %user: 表示用户态所使用 CPU 的百分比。
  • %nice: 表示使用 nice 命令对进程进行降级时 CPU 的百分比。
  • %sys: 表示内核进程使用的 CPU 百分比。
  • %iowait: 表示等待进行 I/O 所使用的 CPU 时间百分比。
  • %irq: 表示用于处理系统中断的 CPU 百分比。
  • %soft: 表示用于软件中断的 CPU 百分比。
  • %steal:虚拟机强制CPU等待的时间百分比。
  • %guest: 虚拟机占用CPU时间的百分比。
  • %idle: CPU 的空闲时间的百分比。
     

 平均负载查看

  • 使用uotime命令可以查看系统的平均负载
  • 当系统变慢,用top或uptime来了解系统的负载情况。
  • 系统平均负载是指在特定时间间隔内运行队列中的平均进程数
  • 如果单个CPU过去一分钟平均负载不大于3的话,那么系统的性能是良好的。2核是6依次类推

 二,压力测试 stress

stress是linux下的一个压力测试工具,可以对cpu memory内存,IO已经磁盘进行压力测试,可以指定负载的CPU个数

yum -y install epel-release 安装epel软件库

 yum -y install stress    安装软件包

stress参数

-ccpu产生n个进程,每个进程都反复不停的计算随机数的平方根
-iio产生n个进程,每个进程反复调用 将内存上的内容写到硬盘上
-mvm产生n个进程,每个进程不断分配和释放内存
-ttimout在n秒后结束进程
-d

hdd

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

三,进程性能查看pidstat

pidstat是一个常用的进程性能分析工具,用来实时查看进程的cpu,内存。IO以及上下文切换等性能指标。

常用参数

选项描述
-u默认的参数,显示各个进程的CPU使用统计
-r显示各个进程的内存使用统计
-r显示各个进程的IO使用情况
-p指定进程号
-w显示每个进程的上下文切换情况
-t显示选择任务的线程的统计信息外的额外信息
-V版本号
-h在一行上显示了所有活动,这样其他程序可以容易解析。
-I(大写)在SMP环境,表示任务的CPU使用率/内核数量
-l显示命令名和所有参数

压力测试

 

 

 

 模拟I/O负载

 

三,lostat命令

Iostat主要用于输出磁盘io和cpu的统计信息

Iostat命令语法

Iostat 【选项】【时间间隔】【次数】

-c: 显示CPU使用情况
-d: 显示磁盘使用情况
-N: 显示磁盘阵列(LVM) 信息
-n: 显示NFS 使用情况
-k: 以 KB 为单位显示
-m: 以 M 为单位显示
-t: 报告每秒向终端读取和写入的字符数和CPU的信息
-V: 显示版本信息
-x: 显示详细信息
-p:[磁盘] 显示磁盘和分区的情况

Iostat使用

显示所有设别负载情况

cpu属性说明:

user:CPU处在用户模式下的时间百分比。
nice:CPU处在带NICE值的用户模式下的时间百分比。
system:CPU处在系统模式下的时间百分比。
iowait:CPU等待输入输出完成时间的百分比。
steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。
idle:CPU空闲时间百分比。

磁盘属性说明:

device:磁盘名称
tps:每秒钟发送到的I/O请求数.
Blk_read/s:每秒读取的block数.
Blk_wrtn/s:每秒写入的block数.
Blk_read:读入的block总数.
Blk_wrtn:写入的block总数.

2,iostat1 5

间隔1秒,总共显示五次

 iostat -d 2

每隔两秒,显示一次设备统计信息

 iostat -x sda sdb 2 3

每隔两秒显示一次sda sdb 两个设备的扩展统计信息,共输出3次

rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
r/s: 每秒完成的读 I/O 设备次数。即 rio/s
w/s: 每秒完成的写 I/O 设备次数。即 wio/s
rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
wkB/s: 每秒写K字节数。是 wsect/s 的一半。

avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
avgqu-sz: 平均I/O队列长度。

r_await:每个读操作平均所需的时间
不仅包括硬盘设备读操作的时间,还包括了在kernel队列中等待的时间。
w_await:每个写操作平均所需的时间
不仅包括硬盘设备写操作的时间,还包括了在kernel队列中等待的时间。

  • await: 平均每次设备I/O操作的等待时间 (毫秒)。

svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
%util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比

  • iostat -m
  • 以M为单位显示所以信息

  • iostat  -d -x  1 1
  • 查看设备使用率(%util),相应时间(await)

 总结:iostat命令主要用于输出磁盘信息,可以和许多选项搭配其中相对重要的选项为-d显示磁盘使用情况,-k以kb为单位显示,-m以m为单位显示-x查看详细信息-p显示磁盘和分区的情况

 四,pidstat

pidstat是sysstat工具的一个命令,用于监控全部或指定进程的cpu、内存一、线程、设备IO等系统资源的占用情况。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。

Pidstat安装

pidstat是sysstat软件套件的一部分,sysstat包含很多监控linux系统状态的工具,它能够从大多数linux发行版的软件源中获得。

Yum install -y sysstat

Pidstat使用方法:

Pidstat 【选项】 【时间间隔】【次数】

常用参数:

-u:默认的参数,显示各个进程的cpu使用统计

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

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

-p︰指定进程号

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

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

-T { TASK | CHILD |ALL }

这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。

注意: task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。

-V:版本号

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

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

-:显示命令名和所有参数

查看所有进程的cpu使用情况

Pidstat -u -p ALL-u是默认参数统计cpu的参数,-p参数是显示指定进程,而这里是显示所有进程

PID:进程ID

usr:进程在用户空间占用cpu的百分比

system:进程在内核空间占用cpu的百分比

guest:进程在虚拟机占用cpu的百分比

%CPU:进程占用cpu的百分比

CPU:处理进程的cpu编号

Command:当前进程对应的命令

Cpu使用状况统计

 内存使用状态

pidstat -r

PID:进程标识符

Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页

Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页

VSZ:虚拟地址大小,虚拟内存的使用KB

RSS:常驻集合大小,非交换区五里内存使用KB

Command:task命令名

查看各个进程的io使用情况

pidstat -d

PID:进程id

kB_rd/s:每秒从磁盘读取的KB

kB_wr/s:每秒写入磁盘KB

kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache[11] 的时候会发生。

COMMAND:task的命令名

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

Pidstat -w -p ALL

PID:进程id

Cswch/s:每秒主动任务上下文切换数量

Nvcswch/s:每秒被动任务上下文切换数量

Command:命令名

pidstat -T TASK

 pidstat -T CHILD

 pidstat -T ALL

TASK表示报告独立的task即任务或进程

CHILD关键字表示报告进程下所有线程统计信息。
ALL表示报告独立的task和task下面的所有线程。

PID:进程id

Usr-ms:任务和子线程在用户级别使用的毫秒数。

System-ms:任务和子线程在系统级别使用的毫秒数。

Guest-ms:任务和子线程在虚拟机(running a virtual processor)使用的毫秒数。

Command:命令名

五,lsof命令

lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。

lsof命令使用选项
-p:输出指定进程打开的文件
-l:输出中使用ID代替用户名
-u:输出指定用户打开的文件
-c:输出COMMAND列中包含string的项
-d:输出包含指定描述符的项
fileName:输出打开文件fileName的所有项

输入lsof -p 1:列出1进程打开的文件

 输出的各项信息:
COMMAND : 命令名称
PID : 进程ID
USER : 用户ID号或登录名
FD : 文件描述符
TYPE : 与文件关联结点的类型
DEVICE : 设备号
SIZE/OFF : 文件大小/偏移量,以字节为单位
NODE : 文件结点
NAME : 文件挂载点和文件所在的系统
 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AKA|布鲁克林欧神仙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值