linux sysstat相关工具sar、iostat等介绍

@简介:

Sysstat是linux系统上的状态查看工具,包含监测系统性能及效率的一组工具,这些工具对于我

们收集系统性能数据,比如CPU使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于

我们判断系统是否正常运行,是提高系统运行效率、安全运行服务器的得力助手;

Sysstat 软件包集成如下工具:

iostat : reports CPU statistics and input/output statistics for devices, partitions

              and network filesystems.

              报告cpu使用率以及硬盘网络的吞吐量。

mpstat:reports individual or combined processor related statistics.

              提供单个处理器或多个处理器相关数据;

pidstat:reports statistics for Linux tasks (processes) : I/O, CPU, memory, etc.

              报告linux上的进程io、cpu、内存等的使用率。

sar:      collects, reports and saves system activity information (CPU, memory,

              disks, interrupts, network interfaces, TTY, kernel tables,etc.)

              工具负责收集、报告并存储系统活跃的信息;

sadc:    is the system activity data collector, used as a backend for sar.是系统动态

              数据收集工具,收集的数据被写一个二进制的文件中,它被用作sar工具的后端;

sa1:      collects and stores binary data in the system activity daily data file. It is a

              front end to sadc designed to be run from cron.

              工具负责收集并存储每天系统动态信息到一个二进制的文件中。它是通过计划任务工具

              cron来运行,是为sadc所设计的程序前端程序;

sa2:      writes a summarized daily activity report. It is a front end to sar designed

              to be run from cron.

              工具负责把每天的系统活跃性息写入总结性的报告中。它是为sar所设计的前端 ,要通

      过cron来调用

sadf:    displays data collected by sar in multiple formats (CSV, XML, etc.) This is

              useful  to load performance data into a database, or import them in a

              spreadsheet to make graphs.

              显示被sar通过多种格式收集的数据;

nfsiostat: reports input/output statistics for network filesystems (NFS).

               报告nfs的吞吐率。

cifsiostat:reports CIFS statistics. 统计cifs的使用情况。

@安装:

在centos上可以通过yum安装Sysstat

yum install sysstat

但是安装的不是最新版本,好多功能没有,所以建议用源代码安装。

首先下载最新版sysstat-9.1.5.tar.gz

wget http://pagesperso-orange.fr/sebastien.godard/sysstat-9.1.5.tar.gz

tar zxvf sysstat-9.1.5.tar.gz

cd sysstat-9.1.5

./configure

make

make install

如果没有指定--prefix,默认安装在/usr/local下。

Sysstat 通过a1 和sa2收集系统信息,如果要把收到的信息自动保存到文件中,必须通过cron

为sa1 和sa2 做计划任务。通过crontab –e 添加如下内容。

# Run system activity accounting tool every 10 minutes

*/10 * * * * root /usr/lib/sa/sa1 -d 1 1

# 0 * * * * root /usr/lib/sa/sa1 -d 600 6 &

# Generate a daily summary of process accounting at 23:53

53 23 * * * root /usr/lib/sa/sa2 –A

@Sysstat 工具集介绍:

通用参数说明:这些命令中,有些事收集统计,有些事报告显示统计,有些收集的同时也能报

告收集到的信息,下面每个命令都有说明。

 

统计采集的命令会把结果写入文件,如果文件不指定,则写入默认位置

 

既能统计也能显示报告的命令把结果写到控制台,同时也可以用参数指定写入的文件,这些要显

示的统计可能来自当前统计,也可能来自以前统计保存的文件;

 

只能显示报告的命令需要指定读取的文件,如果文件不存在则会从默认位置读取。

【注】默认位置,通常在/var/log/sa/sadd文件中,dd表示当前的天数,如sa1,如果指定的文

件名为”-”,也表示默认位置

 

这些命令中大部分都有[ interval [ count ] ] 可选

参数,interval参数定义统计或显示统计的间隔,count参数定义了统计或显示统计的个数;在

显示统计信息的时候

**如果不指定interval参数或者指定为0,

    **则当统计信息来源以前保存的文件,则显示文件所有内容;

    **如果来源于目前当前的的统计,则只显示一次;

**如果指定了interval,count没有指定或为0,

    **如果要显示的统计来源来自文件,则按照interval间隔显示文件全部内容。

    **如果文件内容来自当前命令的统计,则不停的统计统计并显示。

**如果指定了interval、count,则按照interval间隔显示count次。

pidstat:(报告)

pidstat [ -C comm ] [ -d ] [ -h ] [ -I ] [ -l ] [ -p { pid [,...] | SELF | ALL } ] [ -r ]

[ -s ] [ -t ] [ -T { TASK | CHILD | ALL } ] [ -u ] [ -V ] [ -w ] [ interval [ count ] ]

-d 统计io状况
-C string 只显示名字中包含string的进程
-I 在smp环境中,显示每个cpu的占用率
-l 显示进程命令的名字以及参数
-p 进程pid
-r 报告页错误和内存使用情况。
-s 报告栈的使用情况。
-t 报告进程相关的线程情况
-T 定义监视的类型(TASK:只统计指定进程;CHILD:统计指定进程以及子进程;ALL统计指定进程所属的进程及其所有子进程)
-u 报告cpu使用率
-d:显示io统计

PID:进程pid

kB_rd/s:每秒钟进程读磁盘的字节数(kB)

kB_wr/s:每秒钟进程写磁盘的字节数(KB)

kB_ccwr/s:写磁盘被取消的字节数。

Command:进程的命令名

-r:显示页中断和内存信息

PID:进程pid

minflt/s:每秒钟产生的次中断

majflt/s:每秒钟产生的主中断

VSZ:使用的虚拟内存(KB)

RSS:实际驻留"在内存中"的内存数

Command:进程的命令名

-s:堆栈使用情况

pid:进程pid

StkSize:为进程堆栈预留的内存大小,

StkRef:用作堆栈的内存大小。

Command:进程的命令名

-u:报告cpu的使用率

PID :进程pid

%usr :用户态级cpu的使用率

%system :系统级的cpu使用率

%guest :运行虚拟处理器消耗的cpu。

%CPU :cpu的占用率

CPU :进程占用的cpu编号

Command:进程的命令字

-w:进程切换统计(只有在内核大于2.6.23才有用) sadc :(采集并写入文件)

位于 /usr/lib/sa目录中,sadc 是把数据写在一个二进制的文件中,需要用sadf工具来显示保存

的内容;/usr/local/lib/sa/sadc [ -C comment ] [ -S { INT | DISK | SNMP | IPV6 |

POWER | XDISK | ALL | XALL } ] [ -F ] [ -L ] [ -V ] [ interval [ count ] ] [ outfile ]

-F  强制把数据写入文件;

-L  在写或者删除文件的时候获得独占锁,如果有不能获得锁,会在下一个间隔重试获得锁。防

止多个进程同时写文件,导致文件损坏。

-S { INT | DISK | SNMP | IPV6 | POWER | XDISK | ALL | XALL }:指定哪种数据要被

sadc收集。

-V 版本信息

interval 表示时间间隔,单位是秒,比如3 ;

count 统计数据的次数,也是一个数字;

outfile 输出统计到outfile文件;

sadc在interval间隔内抽样系统数据count次,并以二进制形式写入outfile或标准输出,如果输入

文件设置为-,则使用sysstat默认的路径,通常在/var/log/sa/sadd文件中,dd表示当前的天数,

如sa1。默认sadc收集除了中断和磁盘以为的所有的数据,如果要收集磁盘和中断数据,必须用-S

明确指明。当count参数没有指定时,sadc永远不停的写入收集到的数据;当count和interval都

没有指定的时候,会创建一个空文件。XDISK是DISK的一个扩展,它比DISK多统计分区的信息。

ALL包括除了XDISK,XALL包括所有。

sar :(收集报告并保存)
-A 显示所有历史数据
-b io吞吐率的统计
-B 报告页信息
-d 报告物理块设备(存储设备)的写入、读取之类的信息,如果直观一点,可以和p参数共同使用,-dp
-f 从一个二进制的数据文件中读取内容
-i interval  指定数据收集的时间,时间单位是秒
-e[ hh:mm:ss ] 设置结束的时间
-n 显示网络统计
-o 把统计信息写入一个文件
-P 报告每个处理器应用统计,用于多处理器机器,并且启用SMP内核才有效;
-p 显示友好设备名字,以方便查看
-q 显示运行队列的统计和负载
-r 显示内存使用情况
-R 显示内存统计
-S 显示交换分区统计
-t 这个选项对从文件读取数据有用,如果没有这个参数,会以本地时间为标准读出
-u 报告CPU利用率的参数
-v 报告inode, 文件或其它内核表的资源占用信息;

sar可以收集、报告、存储系统活动信息。具体分一下情况:

##当不指定interval参数,会全部显示以前收集到的文件内容。如果指定-f标志,sar从-f指定

     的以前保存的文件中提取内容,然后写入标准输出,如果没有指定-f标志,将从默认的日报文

     件(/var/log/sadd)读取。如果-f指定的文件或者默认位置没有文件,则提示没有那个文件目

     录或目录错误。

##当指定interval参数,如果指定了count则以interval为间隔显示count条,接下来说要显示

     的数据来源:果指定-f标志,sar从-f指定的以前保存的文件中提取内容,然后写入标准输出

    (-f -表示默认位置);如果没有指定-f标志,将从系统收集信息并显示到控制台,如果指定了

     -o标志,收集的数据同时会写到-o指定的文件中(-o -表示默认位置)和控制台。

 

如果没有-P标志,sar报告系统范围中整体cpu的使用的平均值;反之如果指定了-P标志,sar将只

报告某个cpu的使用状况;当-P ALL标志指定,每个单独的cpu和整体所有cpu的使用情况都被报告。

 

如果同时需要采样和统计报告,为sar指定输出文件将使得这很便利,运行如下命令:

sar -o datafile interval count >/dev/null 2>&1 &

所有被捕获的数据会以二进制形式写入datafile中,这些数据可以用sar  -f显示,如果不指定count参数,则文件

-b:io相关:

tps  :每秒总共的物理设备的请求次数

rtps :每秒总共的物理设备的写请求次数

wtps :每秒的io写请求次数

bread/s :每秒的io读请求扇区数(1扇区=512byte)

bwrtn/s :每秒的io写请求扇区数

-B:页相关信息

pgpgin/s :每秒系统从磁盘置入的字节数(KB)

pgpgout/s :每秒系统置出到磁盘上的字节数(KB)

fault/s  :每秒钟系统产生的页中断(major + minor)。

majflt/s  :每秒产生的主中断次数(见【注】)。

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

pgscank/s :每秒被页面交换守护进程kswapd扫描的页个数。

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

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

%vmeff:每秒清除的页占总扫描页的百分比。

-d:报告块设备相关信息

DEV :设备名

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

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

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

avgrq-sz  :平均的请求扇区数。

avgqu-sz :设备的平均请求的队列长度。

await  :平均每次io花费的时间(包括服务时间的队列等待时间)

svctm :(这个参数不准确,在将来版本中会去掉)

%util:一秒中有百分之多少的时间用于I/O 操作

-m { keyword [,...] | ALL }:报告cpu、风扇、电源、温度 相关信息。 -n { keyword [,...] | ALL }:显示网络统计信息

keyword 值:DEV, EDEV, NFS, NFSD, SOCK, IP, EIP, ICMP, EICMP, TCP, ETCP, UDP,

SOCK6, IP6, EIP6, ICMP6, EICMP6 and UDP6

**DEV:

IFACE :网络接口的名字

rxpck/s :每秒收到的包数量

txpck/s :每秒发出的包的数量

rxkB/s :每秒收到的字节数(KB)

txkB/s :每秒发出的字节数(KB)

rxcmp/s :每秒收到的压缩包的数量

txcmp/s :每秒发出的压缩包的数量。

rxmcst/s :每秒收到的广播包的数量。

**EDEV:网络错误的信息

IFACE :网络接口的名字

rxerr/s :每秒收到的非法包的个数

txerr/s :每秒发出的非法包的数量

coll/s :遭遇冲突的发送包数量。

rxdrop/s :因为缓冲充满,每秒钟丢弃的已接收数据包数

txdrop/s :因为缓冲充满,每秒钟丢弃的已发送数据包数

txcarr/s :发送数据包时,每秒载波错误数

rxfram/s :每秒接收数据包的帧对齐错误数

rxfifo/s :接收的数据包每秒FIFO过速的错误数

txfifo/s :发送的数据包每秒FIFO过速的错误数

**SOCK:套接字信息

totsck:使用的套接字总数量

tcpsck:使用的TCP套接字数量

udpsck:使用的UDP套接字数量

rawsck:使用的raw套接字数量

ip-frag:使用的IP分片数量

tcp-tw:time_wait的套接字数量

**IP:

irec/s :每秒收到的数据包(包括错误)

fwddgm/s :每秒收到非本机终点ip包(即包的终点ip不是本机)

idel/s :每秒收到的成功递送的ip用户协议包。

orq/s :每秒应答的ip用户协议包。

asmrq/s :每秒收到的需要重组的ip分片。

asmok/s :每秒成功重组的数据包。

fragok/s :本机上每秒被分片的数据包

fragcrt/s :每秒产生的ip分片数

**TCP:

active/s :tcp连接从CLOSED状态迁移到SYN-SENT状态的次数。

passive/s :tcp连接从LISTEN状态迁移到SYN-RCVD状态的次数。

iseg/s :每秒收到的数据片段。

oseg/s :每秒发送的数据片段。

**UDP:

idgm/s  :每秒收到的数据报的个数

odgm/s  :每秒发送的数据报个数

noport/s :每秒钟收到的,其指定端口没有应用程序的数据报个数

idgmerr/s :每秒钟收到的,不能被递送的,除了其指定端口没有应用程序的数据报个数

-q:显示运行队列长度和负载

runq-sz :运行队列的长度,即等待 CPU 以便运行的内核线程数。通常,此值应小于 2。如果此值持续偏高,

则表明系统可能计算密集 (CPU-bound)。

plist-sz :任务队列中的任务个数

ldavg-1:系统最后1分钟的平均负载

ldavg-5 :系统最后5分钟的平均负载

ldavg-15:系统最后15分钟的平均负载

-r:显示内存统计

kbmemfree:可用的内存数(kB),即未被分配的内存。

kbmemused:使用的内存,不包括内核自己使用的内存

%memused:内存使用百分比

kbbuffers :被内核用作buffer缓冲的内存

kbcached :被内核用作cache缓冲的内存

kbcommit  :保证当前工作所需要的内存(KB)

%commit:当前需要的内存占总内存的百分比。

-R:内存统计

frmpg/s:  每秒被释放的内存页数,负值表示系统已经分配了的内存页数。注意:依据机器体系的不同,内存页

的大小有4kB或8kB

bufpg/s :每秒系统用于buffers的附加的内存页数。负值表示较少的页数用于系统buffers

campg/s : 每秒系统用于cached的附加的内存页数。负值表示较少的页数用于系统cached

-S:交换分区的统计

kbswpfree:空闲的交换分区(KB)

kbswpused:使用的交换分区(KB)

%swpused:交换分区使用百分比

kbswpcad:用于cache的swap内存数

%swpcad:用于cache的swap内存百分比

-W :交换分区的统计

pswpin/s:每秒钟换入的交换页数量。

pswpout/s:每秒钟置出的交换页数量。

-w:报告进程的创建和调度信息

proc/s:每秒创建的进程。

cswch/s:没秒上下文交换的进程。

-v:显示索引节点,文件和其他内核表。

dentunusd:在目录条目中没有使用的缓冲条目。

file-nr:被系统使用的文件句柄数量。

inode-nr:使用的索引节点数量。

pty-nr:正在使用的pty数量。

-u [ ALL ]:显示cpu统计

%user :用户态使用的cpu百分比,不包括虚拟处理器。

%usr :用户态使用的cpu百分比,包括虚拟处理器。

%nice :用户态nice优先级进程占用的cpu百分比。

%sys :内核态占用的cpu百分比。

%iowait :有突出io请求、cpu空闲的百分比。

%steal  :cpu等待系统进程调度的百分比。

%irq  :花费在硬件中断上的cpu百分比。

%soft :花费在软件中断上的cpu百分比。

%guest  :花费在运虚拟处理器的cpu百分比。

%idle:没有io操作、cpu处于空闲的cpu百分比。

【注】缺页中断可分为主缺页中断(Major Page Fault)和次缺页中断(Minor Page Fault),

要从磁盘读取数据而产生的中断是主缺页中断;数据已经被读入内存并被缓存起来,从内存缓存

区中而不是直接从硬盘中读取数据而产生的中断是次缺页中断。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章