sar 简介
sar(System Activity Reporter, 系统活动情况报告): 是用于监控Linux系统各个性能的优秀工具,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
全面性
使用sar命令作为linux系统性能监控, 可以以下命令
top
top命令能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
vmstat
vmstat命令是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计
iostat
iostat 命令是 I/O statistics(输入/输出统计)的缩写,用来报告系统的 CPU 统计信息和块设备及其分区的 IO 统计信息
sar 安装
sar命令属于sysstat工具包
linux centos系统通过下面的命令
yum install sysstat
sar命令
输入sar --help可以得到以上的提示
sar 命令由3部分组成
sar [ options ] [ <interval> [ <count> ] ]
options(非必填 默认-u)
操作选项, 根据需要选择相应的操作类型 常用类型:
-A:所有报告的总和
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息
-a:文件读写情况
-c:输出进程统计信息,每秒创建的进程数
-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息
-n 的用法
当需要查看网络时 options由两部分组成
sar -n DEV
即sar -n 网络参数
网络参数有以下26种:
DEV 网卡
EDEV 网卡 (错误)
NFS NFS 客户端
NFSD NFS 服务器
SOCK Sockets (套接字) (v4)
IP IP 流 (v4)
EIP IP 流 (v4) (错误)
ICMP ICMP 流 (v4)
EICMP ICMP 流 (v4) (错误)
TCP TCP 流 (v4)
ETCP TCP 流 (v4) (错误)
UDP UDP 流 (v4)
SOCK6 Sockets (套接字) (v6)
IP6 IP 流 (v6)
EIP6 IP 流 (v6) (错误)
ICMP6 ICMP 流 (v6)
EICMP6 ICMP 流 (v6) (错误)
UDP6 UDP 流 (v6)
-o 的用法
-o命令 表示将sar操作的结果 存储到文件中, 保存的是sar日志, 直接vim打开会显示乱码 需要通过sar -f 命令打开 具体用法: 在完成的sar命令后 加上-o file(文件名)
sar 5 3 -o test
间隔5s 抽样3次 将cpu结果存储到当前路径的test文件
打开test文件
sar -f test
interval(非必填 默认10分钟)
采样时间间隔,表示多少秒采样一次数据, 单位秒
sar -u 10
表示每10s 采样一次cpu使用情况
执行后 会每10s打印一次cpu信息
count (非必填 默认连续采样)
采样次数 如果不设置采样次数 会按照采样间隔一直输出 如果设定了采样次数 执行指定次数后结束命令
sar -u 10 3
以10s为间隔 采样3次
sar命令执行结果详解
cpu使用情况 sar -u
| 参数 | 释义 |
|---|---|
| CPU | all表示统计信息为所有 CPU 的平均值。 |
| %user | 显示在用户级别(application)运行使用 CPU 总时间的百分比。 |
| %nice | 显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。 |
| %system | 在核心级别(kernel)运行所使用 CPU 总时间的百分比。 |
| %iowait | 显示用于等待I/O操作占用 CPU 总时间的百分比。 |
| %steal | 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。 |
| %idle | 显示 CPU 空闲时间占用 CPU 总时间的百分比。 |
内存使用情况 sar -r
| 参数 | 释义 |
|---|---|
| kbmemfree | 剩余内存总量 |
| kbavail | 可用内存总量,可用内存≈剩余内存+buffer+cache |
| kbmemused | 使用的内存总量,使用量=总内存-剩余内存-buffer-cache-slab |
| kbbuffers | 被内核用来作为buffer的内存量 |
| kbcached | 被内核用来作为cache的内存量 |
| kbcommit | 当前工作负载下,可以保证不出现内存不足的内存量 |
| %commit | 指kbcommit占内存/swap的百分率 |
| kbactive | 当前活跃内存量。除非万不得已,这部分内存才会被回收 |
| kbinact | 当前非活跃内存总量,当内存不足时,这部分内存最容易被内核收回 |
| kbdirty | 脏页大小,脏页指的是暂存于内存还没来得及持久化到硬盘的数据。可以使用sync刷入硬盘 |
inode、文件和其他内核表监控 sar -v
| 参数 | 释义 |
|---|---|
| dentunusd | 目录高速缓存中未被使用的条目数量 |
| file-nr | 系统使用的文件句柄数 |
| inode-nr | 系统使用的inode处理程序数 |
| pty-nr | 打开的伪终端数,即几个人登陆了系统 |
不同于file-nr, 如果需要查看所有(系统 + 用户)的文件句柄数 使用命令
lsof | awk '{print $2}'| wc -l
I/O和传送速率监控 sar -b
| 参数 | 释义 |
|---|---|
| tps | 每秒钟物理设备的 I/O 传输总量, 一次传输就是加到物理设备的一次I/O请求,由于多次逻辑请求可以合并为单次的I/O请求,所以一次传输的大小是不确定的 |
| rtps | 每秒钟从物理设备读入的数据总量 |
| wtps | 每秒钟向物理设备写入的数据总量 |
| bread/s | 每秒钟从物理设备读入的数据量,单位为 块/s 块的大小等同于一个扇区的大小,512字节 |
| bwrtn/s | 每秒钟向物理设备写入的数据量,单位为 块/s |
进程队列长度和平均负载状态监控 sar -q
| 参数 | 释义 |
|---|---|
| runq-sz | 运行队列的长度(等待运行的进程数,等待cpu调度的任务数) |
| plist-sz | 进程列表中进程(processes)和线程(threads)的数量 |
| ldavg-1 | 最后1分钟的系统平均负载(System load average) |
| ldavg-5 | 过去5分钟的系统平均负载 |
| ldavg-15 | 过去15分钟的系统平均负载 |
| blocked | 表示等待I/O完成而被阻塞的任务总数,不为0则需要留意I/O是否存在性能瓶颈 |