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版本才引入新指标。html
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是一个经常使用的多核CPU性能分析工具,用来实时查看每一个CPU的性能指标以及全部CPU的平均指标,数据文件/proc/stat。
mpstat是Multiprocessor Statistics缩写,是实时系统监控工具。node
mpstat [-P {cpu|ALL}] [internal [count]]
-P {cpu l ALL}:表示监控的CPU, cpu在[0,cpu个数-1]中取值
internal:相邻的两次采样的间隔时间
count:采样的次数,count只能和delay一块儿使用ios
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(System Activity Reporter,系统活动状况报告)是Linux最为全面的系统性能分析工具之一,能够从多方面对系统的活动进行报告,包括:文件的读写状况、系统调用的使用状况、磁盘IO、CPU效率、内存使用情况、进程活动及IPC有关的活动等。express
sar [options] [-A] [-o file] t [n]
-A:全部报告的总和
-u:输出CPU使用状况的统计信息
-v:输出inode、文件和其余内核表的统计信息
-d:输出每个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示IO和传送速率的统计信息
-a:文件读写状况
-c:输出进程统计信息,每秒建立的进程数
-R:输出内存页面的统计信息
-y:终端设备活动状况
-w:输出系统交换活动信息后端
(1)CPU资源监控
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
dentunusd:目录高速缓存中未被使用的条目数量
file-nr:文件句柄(file handle)的使用数量
inode-nr:索引节点句柄(inode handle)的使用数量
pty-nr:使用pty数量
(3)内存和交换空间监控sar -r 10 3
每10秒采样一次,连续采样3次,监控内存分页
kbmemfree:可用内存大小,不包括buffer和cache的空间。
kbmemused:已用内存大小,包括buffer和cache的空间.
%memused:kbmemused和内存总量(不包括swap)的一个百分比。
kbbuffers:
kbcached:
kbcommit:保证当前系统所须要的内存,即为了确保不溢出而须要的内存(RAM+swap)。
%commit:kbcommit与内存总量(包括swap)的一个百分比。
(4)内存分页监控sar -B 10 3
每10秒采样一次,连续采样3次,监控内存分页
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次,报告缓冲区的使用状况
tps:每秒钟物理设备的 I/O 传输总量
rtps:每秒钟从物理设备读入的数据总量
wtps:每秒钟向物理设备写入的数据总量
bread/s:每秒钟从物理设备读入的数据量,单位为 块/s
bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s
(6)进程队列和平均负载监控sar -q 10 3
每10秒采样一次,连续采样3次,监控进程队列长度和平均负载状态
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次,监控系统交换活动信息
(8)设备使用状况监控sar -d -p 10 3
每10秒采样一次,连续采样3次,报告设备使用状况
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显示全部。
IFACE:LAN接口
rxpck/s:每秒钟接收的数据包
txpck/s:每秒钟发送的数据包
rxbyt/s:每秒钟接收的字节数
txbyt/s:每秒钟发送的字节数
rxcmp/s:每秒钟接收的压缩数据包
txcmp/s:每秒钟发送的压缩数据包
rxmcst/s:每秒钟接收的多播数据包缓存
pidstat是sysstat的一个命令,用于监控所有或指定进程的CPU、内存、线程、设备IO等系统资源的占用状况。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:显示命令名和全部参数服务器
(1)查看全部进程的CPU使用状况
pidstat
pidstat -u -p ALL
PID:进程ID
%usr:进程在用户空间占用CPU的百分比
%system:进程在内核空间占用CPU的百分比
%guest:进程在虚拟机占用CPU的百分比
%CPU:进程占用CPU的百分比
CPU:运行进程的CPU
Command:当前进程对应的命令
(2)查看全部进程的CPU使用状况pidstat -r
PID:进程标识符
minflt/s:任务每秒发生的次要错误,不须要从磁盘中加载页
majflt/s:任务每秒发生的主要错误,须要从磁盘中加载页
VSZ:虚拟地址大小,虚拟内存的使用KB
RSS:常驻集合大小,非交换区五里内存使用KB
Command:task命令名
(3)查看全部进程的IO使用状况pidstat -d
PID:进程id
kB_rd/s:每秒从磁盘读取的KB
kB_wr/s:每秒写入磁盘KB
kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。
COMMAND:task的命令名
(4)查看全部进程的上下文切换状况pidstat -w
PID:进程id
Cswch/s:每秒主动任务上下文切换数量
Nvcswch/s:每秒被动任务上下文切换数量
Command:命令名
(5)查看进程的线程统计信息pidstat -t
TGID:主线程的标识
TID:线程id
%usr:进程在用户空间占用CPU的百分比
%system:进程在内核空间占用CPU的百分比
%guest:进程在虚拟机占用CPU的百分比
%CPU:进程占用CPU的百分比
CPU:运行进程的CPU
Command:当前进程对应的命令pidstat -T ALL -p 13671
PID:进程id
msr-ms:任务和子线程在用户级别使用的毫秒数。
system-ms:任务和子线程在系统级别使用的毫秒数。
guest-ms:任务和子线程在虚拟机(running a virtual processor)使用的毫秒数。
Command:命令名
iostat是IO statistics(输入/输出统计)缩写,系统级别的IO监控,用于对系统磁盘操做活动进行监视,特色是汇报磁盘活动统计情以及CPU使用状况,缺点是不能对某个进程进行深刻分析,只能对系统总体状况进行分析。
iostat [ options ] [ <interval> [ <count> ] ]
-c:仅显示显示CPU使用状况;
-d:仅显示显示设备利用率;
-k:显示状态以千字节每秒为单位,而不使用块每秒;
-m:显示状态以兆字节每秒为单位;
-p:显示块设备和全部被使用的其余分区的状态;
-t:显示每一个报告产生时的时间;
-V:显示版号并退出;
-x:显示扩展状态。
%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次。
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队列非空的时间比率
vmstat(Virtual Meomory Statistics)是Linux中监控内存的经常使用工具,可对操做系统的虚拟内存、进程、CPU等的总体状况进行监视。
vmstat [options] [delay [count]]
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。若是不指定,只显示一条结果。
count:刷新次数。若是不指定刷新次数,但指定刷新间隔,会一直刷新。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息。
-S:指定单位显示,k、K、m、M分别表明1000、102四、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次。
procs:r列显示等待CPU的进程数量,b列显示正在不可中断休眠(等待IO)的进程数量。memory:swapd列显示被换出磁盘(页面交换)的块的数量,free列显示空闲的(未被使用)块的数量,buff显示正在被用做缓冲区的数量,cache列显示正在被用做操做系统的缓存的数量。swap:显示交换活动:每秒有多少块正在被换入(从磁盘)和换出(到磁盘)。io:显示多少块从块设备读取(bi)和写出(bo),一般反映了硬盘IO。system显示每秒中断(in)和上下文切换(cs)的数量。cpu显示全部的cpu时间花费在各种操做的百分比,包括执行用户代码(非内核),执行系统代码(内核),空闲以及等待IO。