一、sar命令

1、简介

        sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。

2、常用选项

-A  显示所有历史数据,通过读取/var/log/sar 目录下的所有文件,并把它们分门别类的显示出来;

-b  通过设备的I/O中断读取设置的吞吐率;

-B 报告内存或虚拟内存交换统计;

-c 报告每秒创建的进程数;

-d 报告物理块设备(存储设备)的写入、读取之类的信息,如果直观一点,可以和p参数共同使用,-dp

-f 从一个二进制的数据文件中读取内容,比如 sar -f filename

-i interval  指定数据收集的时间,时间单位是秒;

-n 分析网络设备状态的统计,后面可以接的参数有 DEV、EDEV、NFS、NFSD、SOCK等。比如-n DEV

-o 把统计信息写入一个文件,比如  -o filename ;

-P 报告每个处理器应用统计,用于多处理器机器,并且启用SMP内核才有效;

-p 显示友好设备名字,以方便查看,也可以和-d 和-n 参数结合使用,比如 -dp 或-np

-r 内存和交换区占用统计;

-R  显示内存状态;

-t 这个选项对从文件读取数据有用,如果没有这个参数,会以本地时间为标准 读出;

-u 报告CPU利用率的参数;

-v 报告inode, 文件或其它内核表的资源占用信息;

-w 报告系统交换活动的信息; 每少交换数据的个数;

-W 报告系统交换活动吞吐信息;

-x 用于监视进程的,在其后要指定进程的PID值;

-X 用于监视进程的,但指定的应该是一个子进程ID;

3、应用举例

3.1、每两秒一次公执行三次报告CPU利用率:

[root@hpf-linux ~]# sar -u 2 3Linux 2.6.32-504.el6.i686 (hpf-linux) 2015年07月18日 _i686_(1 CPU)20时18分49秒     CPU     %user     %nice   %system   %iowait    %steal     %idle20时18分51秒     all      0.00      0.00      1.00      0.00      0.00     99.0020时18分53秒     all      0.00      0.00      0.00      0.00      0.00    100.0020时18分55秒     all      0.00      0.00      0.50      0.00      0.00     99.50平均时间:     all      0.00      0.00      0.50      0.00      0.00     99.50

说明:

CPU:表示机器内所有的CPU;

%user 表示CPU的利用率;

%nice 表示CPU在用户层优先级的百分比,0表示正常;

%system 表示当系统运行时,在用户应用层上所占用的CPU百分比;

%iowait 表示请求硬盘I/0数据流出时,所占用CPU的百分比;

%idle 表示空闲CPU百分比,值越大系统负载越低;

        上例可以用重定向到一个文件并用cat、more、less命令来查看,也可以使用-o filename 来把监控的结果(二进制数据)输出到filename文件内,由于是二进制数据需要用sar -f filename才能查看。

3.2、inode、文件和其他内核表监控:

[root@hpf-linux ~]# sar -v 2 3Linux 2.6.32-504.el6.i686 (hpf-linux) 2015年07月18日 _i686_(1 CPU)20时33分11秒 dentunusd   file-nr  inode-nr    pty-nr20时33分13秒      3957       608      9586         120时33分15秒      3957       608      9586         120时33分17秒      3957       608      9586         1平均时间:      3957       608      9586         1

说明:

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

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

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

pty-nr:使用的pty数量

3.3、内存和交换空间监控:

[root@hpf-linux ~]# sar -r 2 3Linux 2.6.32-504.el6.i686 (hpf-linux) 2015年07月18日 _i686_(1 CPU)20时35分36秒 kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit20时35分38秒    884944    145548     14.12     19144     53368    455568     14.8020时35分40秒    884944    145548     14.12     19144     53368    455568     14.8020时35分42秒    884944    145548     14.12     19144     53368    455568     14.80平均时间:    884944    145548     14.12     19144     53368    455568     14.80

说明:

kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.

kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.

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

kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.

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

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

3.4、内存分页监控:

[root@hpf-linux ~]# sar -B 2 3Linux 2.6.32-504.el6.i686 (hpf-linux) 2015年07月18日 _i686_(1 CPU)20时39分01秒  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff20时39分03秒      0.00      0.00     18.09      0.00     33.17      0.00      0.00      0.00      0.0020时39分05秒      0.00      0.00     19.40      0.00     32.84      0.00      0.00      0.00      0.0020时39分07秒      0.00      6.03     15.58      0.00     33.17      0.00      0.00      0.00      0.00平均时间:      0.00      2.00     17.70      0.00     33.06      0.00      0.00      0.00      0.00

说明:

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)的百分比;

3.5、I/O和传送速率监控:

[root@hpf-linux ~]# sar -b 2 3Linux 2.6.32-504.el6.i686 (hpf-linux) 2015年07月18日 _i686_(1 CPU)20时41分18秒       tps      rtps      wtps   bread/s   bwrtn/s20时41分20秒      0.00      0.00      0.00      0.00      0.0020时41分22秒      0.00      0.00      0.00      0.00      0.0020时41分24秒      0.00      0.00      0.00      0.00      0.00平均时间:      0.00      0.00      0.00      0.00      0.00

说明:

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

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

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

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

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

3.6、进程队列长度和平均负载状态监控:

[root@hpf-linux ~]# sar -q 2 3Linux 2.6.32-504.el6.i686 (hpf-linux) 2015年07月18日 _i686_(1 CPU)20时42分51秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-1520时42分53秒         0        96      0.00      0.00      0.0020时42分55秒         0        96      0.00      0.00      0.0020时42分57秒         0        96      0.00      0.00      0.00平均时间:         0        96      0.00      0.00      0.00

说明:

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

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

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

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

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

3.7、系统交换活动信息监控:

[root@hpf-linux ~]# sar -W 2 3Linux 2.6.32-504.el6.i686 (hpf-linux) 2015年07月18日 _i686_(1 CPU)20时44分23秒  pswpin/s pswpout/s20时44分25秒      0.00      0.0020时44分27秒      0.00      0.0020时44分29秒      0.00      0.00平均时间:      0.00      0.00

说明:

pswpin/s:每秒系统换入的交换页面(swap page)数量

pswpout/s:每秒系统换出的交换页面(swap page)数量

3.8、设备使用情况监控:

[root@hpf-linux ~]# sar -dp 1 1Linux 2.6.32-504.el6.i686 (hpf-linux) 2015年07月18日 _i686_(1 CPU)20时46分49秒       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util20时46分50秒       sr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0020时46分50秒       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0020时46分50秒 vg1-testlv      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00平均时间:       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util平均时间:       sr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00平均时间:       sda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00平均时间: vg1-testlv      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

        

        参数-p可以打印出sda等磁盘设备名称,如果不用参数-p,设备节点则有可能是dev8-0,dev22-0

说明:

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

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

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

avgrq-sz:平均每次设备I/O操作的数据大小(扇区).

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

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

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

%util:I/O请求占CPU的百分比,比率越大,说明越饱和.

3.9、查看网络设备的吞吐情况:

[root@hpf-linux ~]# sar -n DEV  1 1Linux 2.6.32-504.el6.i686 (hpf-linux) 2015年07月18日 _i686_(1 CPU)20时29分33秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s20时29分34秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.0020时29分34秒      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00平均时间:     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00平均时间:      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00

说明:

IFACE:设备名;

rxpck/s:每秒收到的包;

txpck/s:每秒发送的包;

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

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

rxcmp/s:每秒收到数据切割压缩的包总数;

txcmp/s :每秒传输的数据切割压缩的包的总数;

rxmcst/s: 每秒收到的多点传送的包;

3.10、查看SOCK的情况:

[root@hpf-linux ~]# sar -n SOCK 2 3Linux 2.6.32-504.el6.i686 (hpf-linux) 2015年07月18日 _i686_(1 CPU)21时04分10秒    totsck    tcpsck    udpsck    rawsck   ip-frag    tcp-tw21时04分12秒       133         8         4         0         0         021时04分14秒       133         8         4         0         0         021时04分16秒       133         8         4         0         0         0平均时间:       133         8         4         0         0         0

说明:

totsck:使用的套接字总数量

tcpsck:使用的TCP套接字数量

udpsck:使用的UDP套接字数量

rawsck:使用的raw套接字数量

ip-frag:使用的IP段数量

          tcp-tw:TIME_WAIT状态的TCP套接字数量

3.11、针对网络设备汇报其失败情况:

[root@hpf-linux ~]# sar -n EDEV 1 1Linux 2.6.32-504.el6.i686 (hpf-linux) 2015年07月18日 _i686_(1 CPU)21时17分30秒     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s21时17分31秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0021时17分31秒      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00平均时间:     IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s平均时间:        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00平均时间:      eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

说明:

IFACE:LAN接口网络设备的名称

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

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

coll/s:每秒冲突数

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

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

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

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

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

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

        总结:本篇关于sar命令由于实在虚拟机上做的实验,所以很多输出信息都为0。由于sar命令很强大,其能使用的参数较多,所以本篇只是从网上找到关于sar命令的博文进行综合下,同时由于其输出的信息很多所以若要完全掌握sar命令还需要一定的工作经验,关于各输出结果数据的意义及分析这就不多做介绍了。