Linux常用性能分析工具–sar
sar是一个优秀的一般性能监视工具,它可以输出Linux所完成的几乎所有工作的数据。sar命令在sysetat rpm中提供。 sar可以显示CPU、运行队列、磁盘I/O、分页(交换区)、内存、CPU中断、网络等性能数据
安装sar
在Linux上,用yum安装,命令为:
yum install sysstat
安装完成后可以输入 sar -help查看是否安装成功。
用sar进行性能分析
sar的常用参数以及其含义:
参数 | 含义 |
---|---|
-A | 所有报告的总和 |
-u | CPU利用率 |
-v | 进程、I节点、文件和锁表状态 |
-d | 硬盘使用报告 |
-r | 没有使用的内存页面和硬盘块 |
-g | 串口I/O的情况 |
-b | 缓冲区使用情况 |
-a | 文件读写情况 |
-c | 系统调用情况 |
CPU统计数据分析
sar -u输出显示cpu信息。-u选项是sar的默认选项。该输出以百分比显示CPU情况 sar -u 1 10 (每隔一秒输出一次,共输出10次)
字 段 | 说 明 |
---|---|
CPU | CPU编号,all表示统计信息是所有CPU平均值 |
%user | 在用户模式中运行进程所花的时间 |
%nice | 显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比 |
%system | 在内核模式(系统)中运行进程所花的时间 |
%iowait | 没有进程在该CPU上执行时,处理器等待I/O完成的时间 % iowait的值过高,表现硬盘存在I/O瓶颈 |
%idle | 没有进程在该CPU上执行的时间,即CPU空闲时间 ;%idle值标高,表现CPU较空闲; 如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量 |
网络统计数据分析
sar -n DEV显示网络信息。 sar -n DEV 1 10 (每隔一秒输出一次,共输出10次)
字段 | 说明 |
---|---|
IFACE | LAN接口 |
rxpck/s | 每秒钟接收到的数据包 |
txpck/s | 每秒钟发送出去的数据包 |
rxkB/s | 每秒钟接收到的字节数 |
txkB/s | 每秒钟发送出去的字节数 |
rxcmp/s | 每秒钟接收到的压缩数据包 |
txcmp/s | 每秒钟发送出去的压缩数据包 |
rxmcst/s | 每秒钟接收到的多播数据包 |
用sar分析网络更多的是用于流量和包量的检测和异常发现。详细分析还是tcpdump+wireshark方便。
磁盘统计信息分析
sar -d 查看磁盘统计信息
字段 | 说明 |
---|---|
DEV | 设备名称 |
rd_sec/s | 每秒完成的读I/O设备次数 |
wr_sec/s | 每秒完成的写I/O设备次数 |
avgrq-sz | 平均每次设备I/O操作的数据大小 |
avgqu-sz | 平均I/O队列长度 |
await | 平均每次设备I/O操作的等待时间(毫秒) |
svctm | 平均每次设备I/O操作的服务时间(毫秒) |
%util | 一秒中有百分之多少的时间用于I/O操作 |
%util的值比较小,说明用于处理传送请求的有效时间太少,文件系统效率不高;一般来讲,%util值高些,await值低些,文件系统的效率比较高;如果%util和await值相对比较高,说明硬盘输出速度太慢,需调整。
内存统计信息分析
sar -r用来查看内存统计信息
字段 | 说明 |
---|---|
kbmemfree | 空闲内存空间 |
kbmemused | 已用内存空间 |
%memused | 已用内存占比 |
kbbuffers | buffer空间 |
kbcached | cache空间 |
kbcommit | 保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)。 |
%commit | kbcommit与内存总量的百分比 |
kbdirty | dirty内存信息 |
IO统计信息分析
sar -b 用来查看IO统计信息
字段 | 说明 |
---|---|
tps | 每秒钟物理设备的 I/O 传输总量 |
rtps | 每秒钟从物理设备读入的数据总量 |
wtps | 每秒钟向物理设备写入的数据总量 |
bread/s | 每秒钟从物理设备读入的数据量,单位为 块/s |
bwrtn/s | 每秒钟向物理设备写入的数据量,单位为 块/s |
进程队列长度和平均负载状态信息
sar -q查看进程队列信息和平均负载状态信息
字段 | 说明 |
---|---|
runq-sz | 运行队列的长度(等待运行的进程数) |
plist-sz | 进程列表中进程(processes)和线程(threads)的数量 |
ldavg-1 | 过去1分钟的系统平均负载 |
ldavg-5 | 过去5分钟的系统平均负载 |
ldavg-15 | 过去15分钟的系统平均负载 |