您的位置:首页 > 运维架构 > Linux

Linux 性能监视工具sar

2013-01-09 16:04 295 查看
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

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linux 性能 sar