linux 文件扫描程序 性能,Linux性能优化(三)——sysstat性能监控工具

一、sysstat简介

1、sysstat简介

sysstat提供了Linux性能监控工具集,包括sar、sadf、mpstat、iostat、pidstat等,用于监控Linux系统性能和使用情况。

iostat - 提供CPU统计,存储I/O统计(磁盘设备,分区及网络文件系统)

mpstat - 提供单个或组合CPU相关统计

pidstat - 提供Linux进程级别统计:I/O、CPU、内存等

sar - 收集、报告、保存系统活动信息:CPU、内存、磁盘、中断、网络接口、TTY、内核表等

sadc - 系统活动数据收集器,作为sar后端使用

sa1 - 收集系统活动日常数据,并二进制格式存储,它作为sadc的工具的前端,可以通过cron来调用

sa2 - 生成系统每日活动报告,同样可作为sadc的工具的前端,可以通过cron来调用

sadf - 可以以CSV、XML格式等显示sar收集的性能数据,这样非常方便的将系统数据导入到数据库中,或导入到Excel中来生成图表

nfsiostat-sysstat: 提供NFS I/O统计

cifsiostat: 提供CIFS统计

pidstat输出结果的%wait指标,代表进程等待CPU的时间百分比,systat 11.5.5版本才引入新指标。

2、sysstat安装

sysstat可以通过yum安装

yum install sysstat

下载源码sysstat-11.6.6.tar.xz安装:

http://sebastien.godard.pagesperso-orange.fr/download.html

编译选项配置:

configure

编译:

make

安装:

sudo make install

二、mpstat

1、mpstat简介

mpstat是一个常用的多核CPU性能分析工具,用来实时查看每个CPU的性能指标以及所有CPU的平均指标,数据文件/proc/stat。

mpstat是Multiprocessor Statistics缩写,是实时系统监控工具。

2、mpstat命令

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

-P {cpu l ALL}:表示监控的CPU, cpu在[0,cpu个数-1]中取值

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

count:采样的次数,count只能和delay一起使用

3、mpstat指标展示

4f01e0947e2b58369bbb861c8d25ec62.png

CPU:处理器ID

%usr:在internal时间段里,用户态CPU时间,不包含nice值为负的进程

%nice:在internal时间段里,nice值为负进程的CPU时间。

%sys:在internal时间段里,内核太的CPU时间。

%iowait:internal时间段里,硬盘IO等待时间。

%irq:在internal时间段里,硬中断时间。

%soft:在internal时间段里,软中断时间。

%steal:显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比。

%guest:显示运行虚拟处理器时CPU花费时间的百分比。

%idle:在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间。

三、sar

1、sar简介

sar(System Activity Reporter,系统活动情况报告)是Linux最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘IO、CPU效率、内存使用状况、进程活动及IPC有关的活动等。

2、sar命令

sar [options] [-A] [-o file] t [n]

-A:所有报告的总和

-u:输出CPU使用情况的统计信息

-v:输出inode、文件和其他内核表的统计信息

-d:输出每一个块设备的活动信息

-r:输出内存和交换空间的统计信息

-b:显示IO和传送速率的统计信息

-a:文件读写情况

-c:输出进程统计信息,每秒创建的进程数

-R:输出内存页面的统计信息

-y:终端设备活动情况

-w:输出系统交换活动信息

3、sar常用命令

(1)CPU资源监控

739530b3e97e4b592cec8f9341ec64d9.png

CPU:all表示统计信息为所有CPU的平均值。

%user:显示在用户级别(application)运行使用CPU总时间的百分比。

%nice:显示在用户级别,用于nice操作,所占用CPU总时间的百分比。

%system:在内核态运行所使用CPU总时间的百分比。

%iowait:显示用于等待IO操作占用CPU总时间的百分比。

%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比。

%idle:显示CPU空闲时间占用CPU总时间的百分比。

sar -u -f test

查看二进制文件test内容

(2)文件监控

每10秒采样一次,连续采样3次,观察核心表的状态

sar -v 10 3

99fee5882cb8336ad61fb22dd816cd67.png

dentunusd:目录高速缓存中未被使用的条目数量

file-nr:文件句柄(file handle)的使用数量

inode-nr:索引节点句柄(inode handle)的使用数量

pty-nr:使用pty数量

(3)内存和交换空间监控

sar -r 10 3

每10秒采样一次,连续采样3次,监控内存分页

fcffaf2757c0374529c29572ff58112e.png

kbmemfree:可用内存大小,不包括buffer和cache的空间。

kbmemused:已用内存大小,包括buffer和cache的空间.

%memused:kbmemused和内存总量(不包括swap)的一个百分比。

kbbuffers:

kbcached:

kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)。

%commit:kbcommit与内存总量(包括swap)的一个百分比。

(4)内存分页监控

sar -B 10 3

每10秒采样一次,连续采样3次,监控内存分页

0f57c80fa284f0d1fc027fdf13ed6cc0.png

pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)

pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)

fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)

majflt/s:每秒钟产生的主缺页数.

pgfree/s:每秒被放入空闲队列中的页个数

pgscank/s:每秒被kswapd扫描的页个数

pgscand/s:每秒直接被扫描的页个数

pgsteal/s:每秒钟从cache中被清除来满足内存需要的页个数

%vmeff:每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比

(5)IO监控

sar -b 10 3

每10秒采样一次,连续采样3次,报告缓冲区的使用情况

d7aff5be31aa8f19c0472b05f46c163e.png

tps:每秒钟物理设备的 I/O 传输总量

rtps:每秒钟从物理设备读入的数据总量

wtps:每秒钟向物理设备写入的数据总量

bread/s:每秒钟从物理设备读入的数据量,单位为 块/s

bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s

(6)进程队列和平均负载监控

sar -q 10 3

每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态

c21d0b5a4ac8d9d82dca37d01c5eb209.png

runq-sz:运行队列的长度(等待运行的进程数)

plist-sz:进程列表中进程(processes)和线程(threads)的数量

ldavg-1:最后1分钟的系统平均负载(System load average)

ldavg-5:过去5分钟的系统平均负载

ldavg-15:过去15分钟的系统平均负载

(7)系统交换信息监控

sar -w 10 3

每10秒采样一次,连续采样3次,监控系统交换活动信息

27868db8be3f922c7f75eb9f6516381a.png

(8)设备使用情况监控

sar -d -p 10 3

每10秒采样一次,连续采样3次,报告设备使用情况

9dfa64cbd9b78f674e5f7b9863478cdc.png

DEV:设备名称

tps:每秒从物理磁盘I/O的次数。多个逻辑请求会被合并为一个IO磁盘请求,一次传输的大小是不确定的。

rd_sec/s:每秒读扇区的次数。

wr_sec/s:每秒写扇区的次数。

avgrq-sz:平均每次设备IO操作的数据大小(扇区)。

avgqu-sz:磁盘请求队列的平均长度。

await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒。

svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间。

%util:IO请求占CPU的百分比,比率越大说明越饱和。

(9)网卡监控

sar –n DEV 1 4

-n参数选项:DEV | EDEV | NFS | NFSD | SOCK | ALL 。DEV显示网络接口信息,EDEV显示关于网络错误的统计数据,NFS统计活动的NFS客户端的信息,NFSD统计NFS服务器的信息,SOCK显示套 接字信息,ALL显示所有。

3083479ff7c809eee397a2c216ed6042.png

IFACE:LAN接口

rxpck/s:每秒钟接收的数据包

txpck/s:每秒钟发送的数据包

rxbyt/s:每秒钟接收的字节数

txbyt/s:每秒钟发送的字节数

rxcmp/s:每秒钟接收的压缩数据包

txcmp/s:每秒钟发送的压缩数据包

rxmcst/s:每秒钟接收的多播数据包

四、pidstat

1、pidstat简介

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

2、pidstat命令

pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]

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

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

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

-p:指定进程号

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

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

-T { TASK | CHILD | ALL }:指定pidstat监控的内容。TASK表示报告独立的task,CHILD表示报告进程下所有线程统计信息,ALL表示报告独立的task和task下的所有线程。

-V:版本号

-h:在一行上显示所有活动。

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

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

3、pidstat常用命令

(1)查看所有进程的CPU使用情况

pidstat

pidstat -u -p ALL

3e309e65d47fb29a28c97dbeeb5f83a7.png

PID:进程ID

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

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

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

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

CPU:运行进程的CPU

Command:当前进程对应的命令

(2)查看所有进程的CPU使用情况

pidstat -r

8a80ba563e5f96fde049c96246f6a31d.png

PID:进程标识符

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

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

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

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

Command:task命令名

(3)查看所有进程的IO使用情况

pidstat -d

d6280e7fcfcff5a15c453eb05e31b4bd.png

PID:进程id

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

kB_wr/s:每秒写入磁盘KB

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

COMMAND:task的命令名

(4)查看所有进程的上下文切换情况

pidstat -w

71df4495ea8fef8caf7bac0303ab7f5b.png

PID:进程id

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

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

Command:命令名

(5)查看进程的线程统计信息

pidstat -t

851ed8e96a308c62182f7fc1d01c2348.png

TGID:主线程的标识

TID:线程id

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

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

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

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

CPU:运行进程的CPU

Command:当前进程对应的命令

pidstat -T ALL -p 13671

329a2d29e143f315a70b137caf949a63.png

PID:进程id

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

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

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

Command:命令名

五、iostat

1、iostat简介

iostat是IO statistics(输入/输出统计)缩写,系统级别的IO监控,用于对系统磁盘操作活动进行监视,特点是汇报磁盘活动统计情以及CPU使用情况,缺点是不能对某个进程进行深入分析,只能对系统整体情况进行分析。

2、iostat命令

iostat [ options ] [ <interval> [ <count> ] ]

-c:仅显示显示CPU使用情况;

-d:仅显示显示设备利用率;

-k:显示状态以千字节每秒为单位,而不使用块每秒;

-m:显示状态以兆字节每秒为单位;

-p:显示块设备和所有被使用的其他分区的状态;

-t:显示每个报告产生时的时间;

-V:显示版号并退出;

-x:显示扩展状态。

3、iostat指标展示

b96dcf4d745a68ca0917069ed96cc74a.png

%user:CPU处在用户模式下的时间百分比。

%nice:CPU处在带NICE值的用户模式下的时间百分比。

%system:CPU处在系统模式下的时间百分比。

%iowait:CPU等待输入输出完成时间的百分比。

%steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。

%idle:CPU空闲时间百分比。

tps:设备每秒的传输次数。

kB_read/s:每秒从设备(drive expressed)读取的数据量;

kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;

kB_read:读取的总数据量;

kB_wrtn:写入的总数量数据量;

iostat -d -x -k 1 2

每隔1秒输出磁盘IO的详细情况,总共采样2次。

ae555fa4117ab7373bf15db4d6b8f948.png

rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并

wrqm/s: 每秒对该设备的写请求被合并次数

r/s: 每秒完成的读次数

w/s: 每秒完成的写次数

rkB/s: 每秒读数据量(kB为单位)

wkB/s: 每秒写数据量(kB为单位)

avgrq-sz:平均每次IO操作的数据量(扇区数为单位)

avgqu-sz: 平均等待处理的IO请求队列长度

await: 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)

svctm: 平均每次IO请求的处理时间(毫秒为单位)

%util: 采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

6e1ed462fb4a002f08bc30e6f2315088.png

六、vmstat

1、vmstat简介

vmstat(Virtual Meomory Statistics)是Linux中监控内存的常用工具,可对操作系统的虚拟内存、进程、CPU等的整体情况进行监视。

2、vmstat命令

vmstat [options] [delay [count]]

-a:显示活跃和非活跃内存

-f:显示从系统启动至今的fork数量。

-m:显示slabinfo

-n:只在开始时显示一次各字段名称。

-s:显示内存相关统计信息及多种系统活动数量。

delay:刷新时间间隔。如果不指定,只显示一条结果。

count:刷新次数。如果不指定刷新次数,但指定刷新间隔,会一直刷新。

-d:显示磁盘相关统计信息。

-p:显示指定磁盘分区统计信息。

-S:指定单位显示,k、K、m、M分别代表1000、1024、1000000、1048576字节,默认单位为K。

-V:显示vmstat版本信息。

vmstat [-a] [-n] [-S unit] [delay [ count]]

vmstat [-s] [-n] [-S unit]

vmstat [-m] [-n] [delay [ count]]

vmstat [-d] [-n] [delay [ count]]

vmstat [-p disk partition] [-n] [delay [ count]]

vmstat [-f]

vmstat [-V]

vmstat [options] [delay [count]]

delay:数据采样间隔。如果不指定,返回开启启动以来的均值。

count:刷新数据次数。如果指定delay,但不指定connt,默认一直刷新。

vmstat interval times

每隔interval秒采样一次,共采样times次。

3、vmstat常用命令

4976c8ecb7582d737cd380d4591f2fdf.png

procs:r列显示等待CPU的进程数量,b列显示正在不可中断休眠(等待IO)的进程数量。

memory:swapd列显示被换出磁盘(页面交换)的块的数量,free列显示空闲的(未被使用)块的数量,buff显示正在被用作缓冲区的数量,cache列显示正在被用作操作系统的缓存的数量。

swap:显示交换活动:每秒有多少块正在被换入(从磁盘)和换出(到磁盘)。

io:显示多少块从块设备读取(bi)和写出(bo),通常反映了硬盘IO。

system显示每秒中断(in)和上下文切换(cs)的数量。

cpu显示所有的cpu时间花费在各类操作的百分比,包括执行用户代码(非内核),执行系统代码(内核),空闲以及等待IO。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值