【sar命令】
sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
【安装sar】
apt-get install sysstat注意:
使用sar的时候可能会提示:Cannot open /var/log/sysstat/sa02: No such file or directory
Please check if data collecting is enabled in /etc/default/sysstat
解决方法:
1、修改配置文件:vi /etc/default/sysstat
#
# Default settings for /etc/init.d/sysstat, /etc/cron.d/sysstat
# and /etc/cron.daily/sysstat files
#
# Should sadc collect system activity informations? Valid values
# are "true" and "false". Please do not put other values, they
# will be overwritten by debconf!
ENABLED="true"
2、重启sysstat服务
sudo service sysstat restart
【sar命令常用格式】
Usage: sar [ options ] [ <interval> [ <count> ] ]
Main options and reports:
-B Paging statistics
-b I/O and transfer rate statistics
-d Block devices statistics
-F Filesystems statistics
-H Hugepages utilization statistics
-I { <int> | SUM | ALL | XALL }
Interrupts statistics
-m { <keyword> [,...] | ALL }
Power management statistics
Keywords are:
CPU CPU instantaneous clock frequency
FAN Fans speed
FREQ CPU average clock frequency
IN Voltage inputs
TEMP Devices temperature
USB USB devices plugged into the system
-n { <keyword> [,...] | ALL }
Network statistics
Keywords are:
DEV Network interfaces
EDEV Network interfaces (errors)
NFS NFS client
NFSD NFS server
SOCK Sockets (v4)
IP IP traffic (v4)
EIP IP traffic (v4) (errors)
ICMP ICMP traffic (v4)
EICMP ICMP traffic (v4) (errors)
TCP TCP traffic (v4)
ETCP TCP traffic (v4) (errors)
UDP UDP traffic (v4)
SOCK6 Sockets (v6)
IP6 IP traffic (v6)
EIP6 IP traffic (v6) (errors)
ICMP6 ICMP traffic (v6)
EICMP6 ICMP traffic (v6) (errors)
UDP6 UDP traffic (v6)
-q Queue length and load average statistics
-R Memory statistics
-r Memory utilization statistics
-S Swap space utilization statistics
-u [ ALL ]
CPU utilization statistics
-v Kernel tables statistics
-W Swapping statistics
-w Task creation and system switching statistics
-y TTY devices statistics
其中:
<interval>为采样间隔,<count>为采样次数,默认值是1;
options 为命令行选项,sar命令常用选项如下:
- -A:所有报告的总和
- -u:输出CPU使用情况的统计信息
- -v:输出inode、文件和其他内核表的统计信息
- -d:输出每一个块设备的活动信息
- -r:输出内存和交换空间的统计信息
- -b:显示I/O和传送速率的统计信息
- -a:文件读写情况
- -c:输出进程统计信息,每秒创建的进程数
- -R:输出内存页面的统计信息
- -y:终端设备活动情况
- -w:输出系统交换活动信息
【使用说明】
(每10秒采样一次,连续采样3次)1. CPU资源监控
sar -u -o test 10 3
10:52:12 PM CPU %user %nice %system %iowait %steal %idle
10:52:22 PM all 0.50 0.00 0.40 0.30 0.00 98.80
10:52:32 PM all 0.30 0.00 0.30 0.10 0.00 99.30
10:52:42 PM all 0.30 0.00 0.60 0.10 0.00 98.99
Average: all 0.37 0.00 0.44 0.17 0.00 99.03
输出项说明:
- CPU:all 表示统计信息为所有 CPU 的平均值。
- %user:显示在用户级别(application)运行使用 CPU 总时间的百分比。
- %nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
- %system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。
- %iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。
- %steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
- %idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。
1. 若 %iowait 的值过高,表示硬盘存在I/O瓶颈
2. 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
3. 若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。
2. inode、文件和其他内核表监控
sar -v 10 310:55:10 PM dentunusd file-nr inode-nr pty-nr
10:55:20 PM 16010 736 24329 2
10:55:30 PM 16010 736 24329 2
10:55:40 PM 16012 768 24331 2
Average: 16011 747 24330 2
输出项说明:
- dentunusd:目录高速缓存中未被使用的条目数量
- file-nr:文件句柄(file handle)的使用数量
- inode-nr:索引节点句柄(inode handle)的使用数量
- pty-nr:使用的pty数量
3. 内存和交换空间监控
sar -r 10 3
10:49:55 PM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty
10:50:05 PM 225020 792876 77.89 114004 426416 881792 86.63 507408 220108 56
10:50:15 PM 225108 792788 77.88 114008 426432 881792 86.63 507404 220112 120
10:50:25 PM 225108 792788 77.88 114008 426432 881792 86.63 507412 220104 8
Average: 225079 792817 77.89 114007 426427 881792 86.63 507408 220108 61
输出项说明:
- CPU:all 表示统计信息为所有 CPU 的平均值。
- %user:显示在用户级别(application)运行使用 CPU 总时间的百分比。
- %nice:显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
- %system:在核心级别(kernel)运行所使用 CPU 总时间的百分比。
- %iowait:显示用于等待I/O操作占用 CPU 总时间的百分比。
- %steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
- %idle:显示 CPU 空闲时间占用 CPU 总时间的百分比。
4. 内存分页监控
sar -B 10 3
10:58:57 PM pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
10:59:07 PM 0.00 14.14 1474.85 0.00 490.00 0.00 0.00 0.00 0.00
10:59:17 PM 0.00 6.45 3.02 0.00 98.79 0.00 0.00 0.00 0.00
10:59:27 PM 0.00 2.42 1.61 0.00 97.68 0.00 0.00 0.00 0.00
Average: 0.00 7.67 492.50 0.00 228.65 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)的百分比
5. I/O和传送速率监控
sar -b 10 3
11:01:16 PM tps rtps wtps bread/s bwrtn/s
11:01:26 PM 0.30 0.00 0.30 0.00 4.04
11:01:36 PM 2.22 0.00 2.22 0.00 25.81
11:01:46 PM 1.21 0.00 1.21 0.00 23.32
Average: 1.24 0.00 1.24 0.00 17.74
输出项说明:
- tps:每秒钟物理设备的 I/O 传输总量
- rtps:每秒钟从物理设备读入的数据总量
- wtps:每秒钟向物理设备写入的数据总量
- bread/s:每秒钟从物理设备读入的数据量,单位为 块/s
- bwrtn/s:每秒钟向物理设备写入的数据量,单位为 块/s
6. 进程队列长度和平均负载状态监控
sar -q 10 3
11:03:07 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked
11:03:17 PM 1 123 0.00 0.02 0.05 0
11:03:27 PM 1 123 0.00 0.01 0.05 0
11:03:37 PM 1 123 0.00 0.01 0.05 0
Average: 1 123 0.00 0.01 0.05 0
输出项说明:
- runq-sz:运行队列的长度(等待运行的进程数)
- plist-sz:进程列表中进程(processes)和线程(threads)的数量
- ldavg-1:最后1分钟的系统平均负载(System load average)
- ldavg-5:过去5分钟的系统平均负载
- ldavg-15:过去15分钟的系统平均负载
7. 系统交换活动信息监控
sar -W 10 3
11:04:35 PM pswpin/s pswpout/s
11:04:45 PM 0.00 0.00
11:04:55 PM 0.00 0.00
11:05:05 PM 0.00 0.00
Average: 0.00 0.00
输出项说明:
- pswpin/s:每秒系统换入的交换页面(swap page)数量
- pswpout/s:每秒系统换出的交换页面(swap page)数量
8. 设备使用情况监控
sar -d 10 3
11:06:11 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:06:21 PM dev253-0 3.03 0.00 35.56 11.73 0.01 4.80 1.20 0.36
11:06:21 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:06:31 PM dev253-0 0.40 0.00 5.63 14.00 0.00 1.00 1.00 0.04
11:06:31 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:06:41 PM dev253-0 1.01 0.00 14.55 14.40 0.00 0.40 0.40 0.04
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: dev253-0 1.48 0.00 18.56 12.55 0.01 3.45 1.00 0.15
0.00 0.00
输出项说明:
- 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的百分比,比率越大,说明越饱和.
1. avgqu-sz 的值较低时,设备的利用率较高。
2. 当%util的值接近 1% 时,表示设备带宽已经占满。
【其他】
要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来- 怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看
- 怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看
- 怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看