一、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命令还需要一定的工作经验,关于各输出结果数据的意义及分析这就不多做介绍了。