sar ( system activity reporter ,系统活动情况报告)命令是系统维护的重要工具,主要用于帮助我们掌握系统资源的使用情况,可以从多方面对系统的活动进行报告,报告内容包括:文件的读写情况、系统调用的使用情况、磁盘 I/O 、 CPU 效率、内存使用状况、进程活动及与 IPC 有关的活动等。
sar 通过 cron 定时调用执行以收集和记录信息,默认情况下, Linux 每 10 分钟运行一次 sar 命令来收集信息,如果你认为时间跨度太长,不容易发现性能问题,你也可以更改调度任务的间隔,修改 /etc/cron.d/sysstat 即可。
[root@lsqdb ~]# cat /etc/cron.d/sysstat
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 1 1
# 0 * * * * root /usr/lib64/sa/sa1 600 6 &
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
然后重启 crond 生效。
/etc/init.d/crond restart
sar 命令的常用格式如下。
sar [ options... ] [ <interval> [ <count> ] ]
sar 如果不加参数,则默认是读取历史统计信息,你可以指定 interval 和 count 对当前的系统活动进行统计。其中参数的具体说明如下。
interval 为采样间隔, count 为采样次数,默认值是 1 。
options 为命令行选项, sar 命令常用的选项分别如下:
·-A :所有报告的总和。
·-u :输出 CPU 使用情况的统计信息。
·-v :输出 inode 、文件和其他内核表的统计信息。
·-d :输出每一个块设备的活动信息,一般添加选项 -p 以显示易读的设备名。
·-r :输出内存和交换空间的统计信息。
·-b :显示 I/O 和传送速率的统计信息。
·-c :输出进程的统计信息,每秒创建的进程数。
·-R :输出内存页面的统计信息。
·-y :终端设备的活动情况。
·-w :输出系统交换活动的信息,即每秒上下文切换次数。
常用命令:
sar -B 2 10 --监控内存,知道mem的繁忙程度
sar -b 2 10 --监控I/O,知道I/O的繁忙程度
sar -n DEV 1 --监控网络,知道network的繁忙程度
sar -q 2 10 --监控队列,知道cpu的繁忙程度
sar -d 10 3 --监控磁盘,知道disk的繁忙程度
如下是一些 sar 使用的例子。
(1)CPU 资源监控
例如,每 10s 采样一次,连续采样 3 次,观察 CPU 的使用情况,并将采样结果以二进制的形式存入当前目录下的文件 test 中,需要键入如下命令:
sar -u -o test 10 3
[oracle@lsqdb ~]$ sar -u -o test 10 3
Linux 4.1.12-37.4.1.el6uek.x86_64 (lsqdb) 08/02/2023 _x86_64_ (2 CPU)
10:52:11 AM CPU %user %nice %system %iowait %steal %idle
10:52:21 AM all 0.05 0.00 0.05 0.05 0.00 99.85
10:52:31 AM all 0.15 0.00 0.05 0.00 0.00 99.80
10:52:41 AM all 0.10 0.00 0.00 0.00 0.00 99.90
Average: all 0.10 0.00 0.03 0.02 0.00 99.85
输出项说明如下:
·CPU : all 表示统计信息为所有 CPU 的平均值。我们可以使用 sar-P n 查看某颗 CPU 。
·%user :显示在用户级别运行和使用 CPU 总时间的百分比。
·%nice :显示在用户级别,用于 nice 操作,所占用 CPU 总时间的百分比。
·%system :在核心级别( kernel )运行所占用 CPU 总时间的百分比。
·%iowait :显示用于等待 I/O 操作所占用 CPU 总时间的百分比。
·%idle :显示 CPU 空闲时间所占用 CPU 总时间的百分比。
问题分析:
1 )若 %iowait 的值过高,则表示硬盘存在 I/O 瓶颈。
2 )若 %idle 的值很高但系统响应很慢时,有可能是 CPU 正在等待分配内存,此时应加大内存容量。
3 )若 %idle 的值持续低于 10 ,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU 。
(2)查看网络的统计
语法是 sar -n KEYWORD 。
KEYWORD 常用的值及说明具体如下。
·DEV :显示网络设备统计,如 eth0 、 eth1 等。
·EDEV :显示为网络设备错误统计。
·NFS :显示 NFS 客户端活动统计。
·ALL :显示所有统计信息。
如下命令可查看网络设备的吞吐,数据每秒更新一次,总共更新 5 次。
sar -n DEV 1 5
[root@lsqdb ~]# sar -n DEV 1 5
Linux 4.1.12-37.4.1.el6uek.x86_64 (lsqdb) 08/02/2023 _x86_64_ (2 CPU)
03:27:19 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
03:27:20 PM eth1 0.00 0.00 0.00 0.00 0.00 0.00 0.00
03:27:20 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00
03:27:20 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
03:27:21 PM eth1 1.04 1.04 0.06 0.43 0.00 0.00 0.00
03:27:21 PM lo 6.25 6.25 0.35 0.35 0.00 0.00 0.00
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
Average: eth1 1.04 1.04 0.06 0.35 0.00 0.00 0.00
Average: lo 1.24 1.24 0.07 0.07 0.00 0.00 0.00
输出项说明。
· 第一字段:时间。
·IFACE :设备名。
·rxpck/s :每秒收到的包。
·txpck/s :每秒传输的包。
·rxbyt/s :每秒收到的所有包的体积。
·txbyt/s :每秒传输的所有包的体积。
·rxcmp/s :每秒收到的数据切割压缩的包的总数。
·txcmp/s :每秒传输的数据切割压缩的包的总数。
·rxmcst/s :每秒收到的多点传送的包。
可以使用 grep 命令对输出进行过滤,命令如下。
sar -n DEV 2 5|grep eth1
如果想知道网络设备错误报告,也就是用来查看设备故障的。应该用 EDEV 命令;比如下面的例子。
sar -n EDEV 2 5
(3)内存分页监控
例如,每 10s 采样一次,连续采样 3 次,监控内存分页,命令及输出结果如下。
sar -B 10 3
10:45:04 AM pgpgin/s pgpgout/s fault/s majflt/s
10:45:14 AM 606.19 3648.35 13893.21 0.00
10:45:24 AM 626.17 3726.67 525.97 0.00
10:45:34 AM 557.36 3734.53 1.50 0.00
Average: 596.60 3703.17 4810.10 0.00
输出项说明如下。
·pgpgin/s :表示每秒从磁盘或 SWAP 置换到内存的字节数( KB )。
·pgpgout/s :表示每秒从内存置换到磁盘或 SWAP 的字节数( KB )。
·fault/s :每秒钟系统产生的缺页数,即主缺页与次缺页之和( major+minor )。
·majflt/s :每秒钟产生的主缺页数,这会导致将数据从磁盘加载到内存,因此需要留意。
(4)I/O 和传送速率监控
例如,每 10s 采样一次,连续采样 3 次,需要键入如下命令。
sar -b 10 3
[root@lsqdb ~]# sar -b 1 3
Linux 4.1.12-37.4.1.el6uek.x86_64 (lsqdb) 08/02/2023 _x86_64_ (2 CPU)
03:19:46 PM tps rtps wtps bread/s bwrtn/s
03:19:47 PM 5.26 0.00 5.26 0.00 50.53
03:19:48 PM 6.25 0.00 6.25 0.00 200.00
03:19:49 PM 0.00 0.00 0.00 0.00 0.00
Average: 3.83 0.00 3.83 0.00 83.62
输出项说明如下。
·tps :每秒钟物理设备的 I/O 传输总量。
·rtps :每秒钟从物理设备读入的数据总量。
·wtps :每秒钟向物理设备写入的数据总量。
·bread/s :每秒钟从物理设备读入的数据量,单位为块 /s 。
·bwrtn/s :每秒钟向物理设备写入的数据量,单位为块 /s 。
(5)进程队列长度和平均负载状态监控
例如,每 10s 采样一次,连续采样 3 次,监控进程队列长度和平均负载状态,命令如下。
sar -q 10 3
[root@lsqdb ~]# sar -q 1 3
Linux 4.1.12-37.4.1.el6uek.x86_64 (lsqdb) 08/02/2023 _x86_64_ (2 CPU)
03:21:26 PM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
03:21:27 PM 0 151 0.02 0.03 0.05
03:21:28 PM 1 151 0.02 0.03 0.05
03:21:29 PM 0 151 0.02 0.03 0.05
Average: 0 151 0.02 0.03 0.05
输出项说明如下。
·runq-sz :运行队列的长度(等待运行的进程数)。
·plist-sz :进程列表中进程( processes )和线程( threads )的数量。
·ldavg-1 :最后 1 分钟的系统平均负载( system load average )。
·ldavg-5 :过去 5 分钟的系统平均负载。
·ldavg-15 :过去 15 分钟的系统平均负载。
(6)系统交换活动信息监控
例如,每 10s 采样一次,连续采样 3 次,监控系统交换活动信息,命令如下。
sar -W 10 3
[root@lsqdb ~]# sar -W 1 3
Linux 4.1.12-37.4.1.el6uek.x86_64 (lsqdb) 08/02/2023 _x86_64_ (2 CPU)
03:25:54 PM pswpin/s pswpout/s
03:25:55 PM 0.00 0.00
03:25:56 PM 0.00 0.00
03:25:57 PM 0.00 0.00
Average: 0.00 0.00
输出项说明如下。
·pswpin/s :每秒系统换入的交换页面( swap page )数量。
·pswpout/s :每秒系统换出的交换页面数量。
(7)设备使用情况监控
例如,每 10s 采样一次,连续采样 3 次,报告设备使用情况,需要键入如下命令。
sar -d 10 3 -p
其中,参数 -p 可以打印出 sda 、 hdc 等易读的磁盘设备名称,如果不使用参数 -p ,设备节点则有可能是 dev8-0 、 dev22-0 这样的形式。
[root@lsqdb ~]# sar -d 1 3 -p
Linux 4.1.12-37.4.1.el6uek.x86_64 (lsqdb) 08/02/2023 _x86_64_ (2 CPU)
03:29:38 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
03:29:39 PM sda 3.03 0.00 96.97 32.00 0.00 0.33 0.33 0.10
03:29:39 PM dm-0 3.03 0.00 96.97 32.00 0.00 0.33 0.33 0.10
Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: sda 1.68 0.00 40.27 24.00 0.00 0.20 0.20 0.03
Average: dm-0 2.01 0.00 40.27 20.00 0.00 0.17 0.17 0.03
输出项说明如下。
·tps :每秒从物理磁盘 I/O 的次数。多个逻辑请求会被合并为一个 I/O 磁盘请求,一次传输的大小是不确定的。
·rd_sec/s :每秒读扇区的次数。
·wr_sec/s :每秒写扇区的次数。
·avgrq-sz :发送到设备的请求的平均大小,单位为扇区。
·avgqu-sz :磁盘请求队列的平均长度。
·await :从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列的等待时间,单位是毫秒。
·svctm :系统处理每次请求的平均时间,不包括在请求队列中消耗的时间。
·%util : I/O 请求占 CPU 的百分比,比率越大,说明越饱和。
问题分析
1)avgqu-sz 的值较低时,设备的利用率较高。
2)当 %util 的值接近 100% 时,表示设备带宽已经占满。
(8)查看历史统计信息
有时我们希望能够看到历史性能统计信息,可以进入目录 /var/log/sa ,使用 sar–f saXX 命令查看历史数据,例如,
sar -f sa22
默认将显示整天的数据。我们可以加上 -s 选项指定特定时间段的数据,例如,
sar -q -f sa13 -s 14:00:00 | head -n 10
以上命令将只显示 13 日 14 点之后的 load 的统计数据,且只显示最前面的 10 条记录。
(9)输出 inode 、文件和其他内核表的统计信息
sar -v 10 3
输出项说明如下。
·dentunusd :目录高速缓存中未被使用的条目数量。
·file-nr :文件句柄( file handle )的使用数量。
·inode-nr :索引节点句柄( inode handle )的使用数量。
要想判断系统的瓶颈问题,有时需要将几个 sar 命令选项结合起来。
· 怀疑 CPU 存在瓶颈,可用 sar-u 和 sar-q 等来查看。
· 怀疑内存存在瓶颈,可用 sar-B 、 sar-r 和 sar-W 等来查看。
· 怀疑 I/O 存在瓶颈,可用 sar-b 、 sar-u 和 sar-d 等来查看。
标签:10,03,0.00,使用,sar,工具,CPU,PM
From: https://www.cnblogs.com/shunqian/p/17602035.html