博学,审问,慎思,明辨,笃行

导航

Linux 性能监视工具SAR

Linux 性能监视工具SAR  

FROM:http://wlservers.blog.163.com/blog/static/12062230420091012729523/ 

sar安装

    rpm -ivh  sysstat*.rpm  vixie-cron*.rpm

安装后需重启

 sar 既能报告当前数据,也能报告历史数据

不带选项执行会以10分钟为间隔报告自午夜起当天的CPU利用率。

脚本sal收集了这些历史数据,它是sar软件包的一部分,必须设置为定期从cron里运行

sar把自已收集的数据以二进制格式保存在/var/log/sa里

使用 sar -d 可以得到当天磁盘活动的情况汇总

sar -n  DEV 则能给出网络接口的统计信息

sar -A 可以报告所有的信息

sar 适用于快速粗略了解历史信息。

sar 命令行的常用格式: sar [options] [-o file] t [n]

options 为命令行选项,sar命令的选项很多,下面只列出常用选项: 
-A:所有报告的总和。        
-u:CPU利用率        
-v:进程、I节点、文件和锁表状态。        
-d:硬盘使用报告。        
-r:没有使用的内存页面和硬盘块。        
-g:串口I/O的情况。 
-b:缓冲区使用情况。 
-a:文件读写情况。 
-c:系统调用情况。 
-R:进程的活动情况。 
-y:终端设备活动情况。 
-w:系统交换活动。 

每60秒采样一次,连续采样5次,观察CPU 的使用情况,并将采样结果以二进制形式存入当前目录下的文件zhou中,需键入如下命令:

# sar -u -o zhou 60 5

       %usr:CPU处在用户模式下的时间百分比。 
  %sys:CPU处在系统模式下的时间百分比。 
  %wio:CPU等待输入输出完成时间的百分比。 
  %idle:CPU空闲时间百分比。

主要注意%wio和%idle,

%wio的值过高,表示硬盘存在I/O瓶颈,

%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

sar 1 10 > data.txt
//每隔1秒,写入10次,把CPU使用数据保存到data.txt文件中。
sar 1 0 -e 15:00:00 > data.txt
//每隔1秒记录CPU的使用情况,直到15点,数据将保存到data.txt文件中。(-e 参数表示结束时间,注意时间格式:必须为hh:mm:ss格式)
sar 1 0 -r -e 15:00:00 > data.txt
//每隔1秒记录内存使用情况,直到15点,数据将保存到data.txt文件中。
sar 1 0 -n DEV -e 15:00:00 > data.txt
//每隔1秒记录网络使用情况,直到15点,数据将保存到data.txt文件中。

如果要查看二进制文件zhou中的内容,则需键入如下sar命令:

 # sar -u -f zhou

 

每30秒采样一次,连续采样5次,观察核心表的状态,需键入如下命令:

# sar -v 30 5 
显示内容包括:

proc-sz:目前核心中正在使用或分配的进程表的表项数,由核心参数MAX-PROC控制。

inod-sz:目前核心中正在使用或分配的i节点表的表项数,由核心参数MAX-INODE控制。

file-sz: 目前核心中正在使用或分配的文件表的表项数,由核心参数MAX-FILE控 制。

ov:溢出出现的次数。

Lock-sz:目前核心中正在使用或分配的记录加锁的表项数,由核心参数MAX-FLCKRE 控制。


各项值显示格式为 实际使用表项/可以使用的表项数

显示内容表示,核心使用完全正常,三个表没有出现溢出现象,核心参数不需调整,如 
果出现溢出时,要调整相应的核心参数,将对应的表项数加大。

每30秒采样一次,连续采样5次,报告设备使用情况,需键入如下命令:

# sar -d 30 5 
    device: sar命令正在监视的块设备的名字。 
  %busy: 设备忙时,传送请求所占时间的百分比。 
  avque: 队列站满时,未完成请求数量的平均值。 
  r+w/s: 每秒传送到设备或从设备传出的数据量。 
  blks/s: 每秒传送的块数,每块512字节。 
  avwait: 队列占满时传送请求等待队列空闲的平均时间。 
  avserv: 完成传送请求所需平均时间(毫秒)。

在显示的内容中,wd-0是硬盘的名字,

%busy的值比较小,说明用于处理传送请求的有 效时间太少,文件系统效率不高,

一般来讲,%busy值高些,avque值低些,文件系统 的效率比较高,

如果%busy和avque值相对比较高,说明硬盘传输速度太慢,需调整。

每30秒采样一次,连续采样5次,报告缓冲区的使用情况,需键入如下命令:

# sar -b 30 5 
bread/s: 每秒从硬盘读入系统缓冲区buffer的物理块数。 
lread/s: 平均每秒从系统buffer读出的逻辑块数。 
%rcache: 在buffer cache中进行逻辑读的百分比。 
bwrit/s: 平均每秒从系统buffer向磁盘所写的物理块数。 
lwrit/s: 平均每秒写到系统buffer逻辑块数。 
%wcache: 在buffer cache中进行逻辑读的百分比。 
pread/s: 平均每秒请求物理读的次数。 
pwrit/s: 平均每秒请求物理写的次数。

最重要的是%rcache和%wcache两列,它们的值体现着buffer的使用效率,

%rcache的值小于90或者%wcache的值低于65,应适当增加系统buffer的数量,

buffer 数量由核心参数NBUF控制,使%rcache达到90左右,%wcache达到80左右。

但buffer参数影响I/O效率,增加buffer,应在较大内存的情况下,否则系统效率反而得不到提高。

 

每30秒采样一次,连续采样5次,报告串口I/O的操作情况,需键入如下命令:

# sar -g 30 5 
ovsiohw/s:每秒在串口I/O硬件出现的溢出。

ovsiodma/s:每秒在串口I/O的直接输入输出通道高速缓存出现的溢出。

ovclist/s :每秒字符队列出现的溢出。

在显示的内容中,每一列的值都是零,表明在采样时间内,系统中没有发生串口I/O溢出现象。

-a 报告文件读,写报告
   sar –a 5 5
iget/s 每秒由i节点项定位的文件数量 
namei/s 每秒文件系统路径查询的数量 
dirbk/s 每秒所读目录块的数量

这些值越大,表明核心花在存取用户文件上的时间越多,它反映着一些程序和应用文件系统产生的负荷。
一般地,如果iget/s与namei/s的比值大于5,并且namei/s的值大于30,则说明文件系统是低效的。这时需要检查文件系统的自由空间,看看是否自由空间过少。

 

-c 报告系统调用使用情况 s
   ar -c 2 3
scall/s 每秒使用系统调用的总数。一般地,当4~6个用户在系统上工作时,每秒大约30个左右。 sread/s 每秒进行读操作的系统调用数量。 swrit/s 每秒进行写操作的系统调用数量。 fork/s 每秒fork系统调用次数。当4~6个用户在系统上工作时,每秒大约0.5秒左右。 exec/s 每秒exec系统调用次数。 rchar/s 每秒由读操作的系统调用传送的字符(以字节为单位)。 wchar/s 每秒由写操作的系统调用传送的字符(以字节为单位)。*如果scall/s持续地大于300,则表明正在系统中运行的可能是效率很低的应用程序。在比较典型的情况下,进行读操作的系统调用加上进行写操作的系统调用之和,约是scall的一半左右。

 

-m 报告进程间的通信活动(IPC消息和信号灯活动)情况 
  sar -m 4 3
msg/s 每秒消息操作的次数(包括发送消息的接收信息)。 sema/s 每秒信号灯操作次数。*信号灯和消息作为进程间通信的工具,如果在系统中运行的应用过程中没有使用它们,那么由sar命令报告的msg 和sema的值都将等于0.00。如果使用了这些工具,并且其中或者msg/s大于100,或者sema/s大于100,则表明这样的应用程序效率比较低。原因是在这样的应用程序中,大量的时间花费在进程之间的沟通上,而对保证进程本身有效的运行时间必然产生不良的影响。

n 报告命名缓冲区活动情况 sar -n 4 3
c_hits cache命中的数量。 cmisses cache未命中的数量。 (hit %) 命中数量/(命中数理+未命中数量)。*不难理解,(hit %)值越大越好,如果它低于90%,则应该调整相应的核心参数。

-p 报告分页活动 sar -p 5 3
vflt/s 每秒进行页面故障地址转换的数量(由于有效的页面当前不在内存中)。 pflt/s 每秒来自由于保护错误出现的页面故障数量(由于对页面的非法存,取引起的页面故障)。 pgfil/s 每秒通过”页—入”满足vflt/s的数量。 rclm/s 每秒由系统恢复的有效页面的数量。有效页面被增加到自由页面队列上。*如果vflt/s的值高于100,可能预示着对于页面系统来说,应用程序的效率不高,也可能分页参数需要调整,或者内存配置不太合适。

-q 报告进程队列(运行队列和交换队列的平均长度)情况 sar -q 2 3 
 
runq-sz 准备运行的进程运行队列。 %runocc 运行队列被占用的时间(百分比) swpq-sz 要被换出的进程交换队列。 %swpocc 交换队列被占用的时间(百分比)。*如果%runocc大于90,并且runq-sz的值大于2,则表明CPU的负载较重。其直接后果,可能使系统的响应速度降低。如果%swpocc大于20,表明交换活动频繁,将严重导致系统效率下降。解决的办法是加大内存或减少缓存区数量,从而减少交换及页—入,页—出活动。

-r 报告内存及交换区使用情况(没有使用的内存页面和硬盘块) sar -r 2 3
freemem 用户进程可以使用的内存页面数,4KB为一个页面。
freeswp 用于进程交换可以使用的硬盘盘块,512B为一个盘块。

 

-w 系统交换活动 sar -w 2 3
swpin/s 每秒从硬盘交换区传送进入内存的次数。

 bswin/s 每秒为换入而传送的块数。

 swpot/s 每秒从内存传送到硬盘交换区的次数。

 bswots 每秒为换出而传送的块数。

 pswch/s 每秒进程交换的数量。

swpin/s,bswin/s,swpot/s和bswots描述的是与硬盘交换区相关的交换活动。交换关系到系统的效率。交换区在硬盘上对硬盘的读,写操作比内存读,写慢得多,因此,为了提高系统效率就应该设法减少交换。通常的作法就是加大内存,使交换区中进行的交换活动为零,或接近为零。如果swpot/s的值大于1,预示可能需要增加内存或减少缓冲区(减少缓冲区能够释放一部分自由内存空间)。

sar是通过fscanf下面这些文件来得到输出数据的

/* Files */ 
#define PROC "/proc" 
#define PSTAT "stat" 
#define MEMINFO "/proc/meminfo" 
#define PID_STAT "/proc/%ld/stat" 
#define SERIAL "/proc/tty/driver/serial" 
#define FDENTRY_STATE "/proc/sys/fs/dentry-state" 
#define FFILE_NR "/proc/sys/fs/file-nr" 
#define FINODE_STATE "/proc/sys/fs/inode-state" 
#define FDQUOT_NR "/proc/sys/fs/dquot-nr" 
#define FDQUOT_MAX "/proc/sys/fs/dquot-max" 
#define FSUPER_NR "/proc/sys/fs/super-nr" 
#define FSUPER_MAX "/proc/sys/fs/super-max" 
#define FRTSIG_NR "/proc/sys/kernel/rtsig-nr" 
#define FRTSIG_MAX "/proc/sys/kernel/rtsig-max" 
#define NET_DEV "/proc/net/dev" 
#define NET_SOCKSTAT "/proc/net/sockstat" 
#define SADC "sadc" 
#define SADC_PATH "/usr/lib/sa/sadc" 
#define SADC_LOCAL_PATH "/usr/local/lib/sa/sadc" 
#define LOADAVG "/proc/loadavg"

 

CentOS下的参数

#man  sar

-A  相当于 -bBcdqrRuvwWy -I SUM -I XALL -n ALL -P ALL

-b   I/O 传输速率统计

        tps (total number of transfers per second)。 一条传输路径就是一个到物理设备的I/O请求。

        rtps(Total number of read requests per second)。对物理设备的读请求/秒

       wtps                                                                                    写请求/秒

       bread/s (Total amount of date read from the devices in block per second)。每秒从物理块读取的数据量,

                                    块大小是512字节

       bwrtn/s   (Total amount of data written to device in blocks per second)

-B   存储页统计

       pgpgin/s   Total number of kilobytes the system paged in from disk per second.

       pgpgout/s  Total number of kilobytes the system paged out to disk per second.

       fault/s         由系统产生的页错误/秒(主页错误+次页错误),不是由I/O产生

       majflt/s       由系统产生的主页错误/秒,需要从硬盘读取内存页

  -c  进程

       proc/s   每秒产生的时程

-d   块设备的信息

       块设备名称 :dev m-n  m 是指主块设备,n是次块设备。加-p,名称更易读

       tps     每秒传输的数据量

      rd_sec/s  每秒从设备读取的区块数,一个区块512字节

      wr_sec/s 每秒写入设备的区块数。

      avgrq-sz   发送给设备的请求的平均大小(以区块为单位)。

      avgqu-sz   发送给设备的请求队列的平均长度

      await     发送给设备的等待处理的I/O请求的平均时间(毫秒)

      svctm   处理I/O请求的平均时间(毫秒)

      %util      I/O请求发送给设备时,CPU的百分比。

-e [hh:mm:ss] 统计的结束时间

-s [hh:mm:ss]统计的开始时间

-f [filename] 从文件读取统计样本

-N {DEV | EDEV | NFS | SOCK | ALL}

          网络状态统计

          DEV  从网络设备采样

               IFACE        网络接口

              rxpck/s        每秒接收到的包

              txpck/s         每秒发送的包

              rxbyt/s          每秒接收的字节数

              txbyt/s           每秒发送的字节数

              rxcmp/s     txcmp/s   压缩的包

              rxmcst/s    接收的广播包

           EDEV   统计出错的包

               IFACE

                rxerr/s   接收的坏包

                txerr/s     发送时产生的无效包

               coll/s         发送时产生的冲突包

                 rxdrop/s    缓存区泄漏导致的丢失接收到的包

               txdrop/s  

posted on 2014-11-23 22:02  pengdaijun  阅读(315)  评论(0编辑  收藏  举报