Linux系统检测工具sysstat使用实战

版权声明:博客搬运自个人博客www.bigxiangbaobao.com,转载须经本人同意 https://blog.csdn.net/Zx_SSSS/article/details/79789139

用sysstat工具对某机顶盒系统进行性能分析,从cpu性能,内存,网络流量三个方面进行测试.
sysstat是linux系统下的一个软件包,包含一组监测系统性能以及效率的工具,它的主要用途是观察服务负载,比如CPU和内存的占用率、网络的使用率以及磁盘写入和读取速度等。

参数和命令介绍:

sar 的命令格式为:

sar [ -A ] [ -b ] [ -B ] [ -c ] [ -d ] [ -i interval ] [ -p ] [ -q ]
[ -r ] [ -R ] [ -t ] [ -u ] [ -v ] [ -V ] [ -w ] [ -W ] [ -y ]
[ -n { DEV | EDEV | NFS | NFSD | SOCK | ALL } ]
[ -x { pid | SELF | ALL } ] [ -X { pid | SELF | ALL } ]
[ -I { irq | SUM | ALL | XALL } ] [ -P { cpu | ALL } ]
[ -o [ filename ] | -f [ filename ] ]
[ -s [ hh:mm:ss ] ] [ -e [ hh:mm:ss ] ]
[ interval [ count ] ]

其中:
interval : 为取样时间间隔
count : 为输出次数,若省略此项,默认值为 1
常用选项:

选项 说明
-A  等价于 -bBcdqrRuvwWy -I SUM -I XALL -n ALL -P ALL
-b  显示I/O和传送速率的统计信息
-B  输出内存页面的统计信息
-c  输出进程统计信息,每秒创建的进程数
-d  输出每一个块设备的活动信息
-i interval     指定间隔时长,单位为秒
-p  显示友好设备名字,以方便查看,也可以和-d 和-n 参数结合使用,比如 -dp 或-np
-q  输出进程队列长度和平均负载状态统计信息
-r  输出内存和交换空间的统计信息
-R  输出内存页面的统计信息
-t  读取 /var/log/sa/saDD 的数据时显示其中记录的原始时间,如果没有这个参数使用用户的本地时间
-u  输出CPU使用情况的统计信息
-v  输出inode、文件和其他内核表的统计信息
-V  输出版本号信息
-w  输出系统交换活动信息
-W  输出系统交换的统计信息
-y  输出TTY设备的活动信息
-n {DEV|EDEV|NFS|NFSD|SOCK|ALL}     分析输出网络设备状态统计信息。
DEV     报告网络设备的统计信息
EDEV    报告网络设备的错误统计信息
NFS     报告 NFS 客户端的活动统计信息
NFSD    报告 NFS 服务器的活动统计信息
SOCK    报告网络套接字(sockets)的使用统计信息
ALL     报告所有类型的网络活动统计信息
-x {pid|SELF|ALL}   输出指定进程的统计信息。
pid     用 pid 指定特定的进程
SELF    表示 sar 自身
ALL     表示所有进程
-X {pid|SELF|ALL}   输出指定进程的子进程的统计信息
-I {irq|SUM|ALL|XALL}   输出指定中断的统计信息。
irq     指定中断号
SUM     指定输出每秒接收到的中断总数
ALL     指定输出前16个中断
XALL    指定输出全部的中断信息
-P {cpu|ALL}    输出指定 CPU 的统计信息
-o filename     将输出信息保存到文件 filename
-f filename     从文件 filename 读取数据信息。filename 是使用-o 选项时生成的文件。
-s hh:mm:ss     指定输出统计数据的起始时间
-e hh:mm:ss     指定输出统计数据的截至时间,默认为18:00:00

1、输出CPU使用情况的统计信息

# sar -u
12:00:01 AM CPU     %user     %nice   %system   %iowait    %steal     %idle
12:10:01 AM all      0.02      0.00      0.14      0.01      0.00     99.84
12:20:01 AM all      0.02      0.00      0.12      0.01      0.00     99.86
12:30:01 AM all      0.01      0.00      0.12      0.01      0.00     99.86
Average:    all      0.03      0.00      0.13      0.01      0.00     99.84

输出项说明:
CPU all 表示统计信息为所有 CPU 的平均值。
%user 显示在用户级别(application)运行使用 CPU 总时间的百分比。
%nice 显示在用户级别,用于nice操作,所占用 CPU 总时间的百分比。
%system 在核心级别(kernel)运行所使用 CPU 总时间的百分比。
%iowait 显示用于等待I/O操作占用 CPU 总时间的百分比。
%steal 管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟 CPU 的百分比。
%idle 显示 CPU 空闲时间占用 CPU 总时间的百分比。

若 %iowait 的值过高,表示硬盘存在I/O瓶颈 若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量 若 %idle 的值持续低于 10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是CPU。

2、输出内存页面的统计信息

# sar -B
12:00:01 AM  pgpgin/s pgpgout/s   fault/s  majflt/s
12:10:01 AM      0.00      4.17      9.74      0.00
12:20:01 AM      0.00      2.71      2.24      0.00
12:30:01 AM      0.00      2.69      2.25      0.00
Average:         0.00      3.17      4.07      0.00

输出项说明:
pgpgin/s 每秒钟从磁盘读入的系统页面的 KB 总数
pgpgout/s 每秒钟向磁盘写出的系统页面的 KB 总数
fault/s 系统每秒产生的页面失效(major + minor)数量
majflt/s 系统每秒产生的页面失效(major)数量

3、输出内存和交换空间的统计信息

# sar -r
12:00:01 AM kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree kbswpused  %swpused  kbswpcad
12:10:01 AM    262068    253408     49.16     43884    156456   1048568         0      0.00         0
12:20:01 AM    261572    253904     49.26     44580    156448   1048568         0      0.00         0
12:30:01 AM    260704    254772     49.42     45124    156472   1048568         0      0.00         0
Average:       259551    255925     49.65     46453    156470   1048568         0      0.00         0

输出项说明:
kbmemfree 可用的空闲内存数量,单位为 KB
kbmemused 已使用的内存数量(不包含内核使用的内存),单位为 KB
%memused 已使用内存的百分数
kbbuffers 内核缓冲区(buffer)使用的内存数量,单位为 KB
kbcached 内核高速缓存(cache)数据使用的内存数量,单位为 KB
kbswpfree 可用的空闲交换空间数量,单位为 KB
kbswpused 已使用的交换空间数量,单位为 KB
%swpused 已使用交换空间的百分数
kbswpcad 交换空间的高速缓存使用的内存数量

4、 输出系统交换的统计信息

# sar -W
12:00:01 AM  pswpin/s pswpout/s
12:10:01 AM      0.00      0.00
12:20:01 AM      0.00      0.00
12:30:01 AM      0.00      0.00
Average:         0.00      0.00

输出项说明:
pswpin/s 每秒系统换入的交换页面(swap page)数量
pswpout/s 每秒系统换出的交换页面(swap page)数量

5、输出进程队列长度和平均负载状态统计信息

# sar -q
12:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
12:10:01 AM         0        85      0.02      0.01      0.00
12:20:01 AM         0        85      0.01      0.00      0.00
12:30:01 AM         0        85      0.03      0.01      0.00
Average:            0        85      0.01      0.00      0.00

输出项说明:
runq-sz 运行队列的长度(等待运行的进程数)
plist-sz 进程列表中进程(processes)和线程(threads)的数量
ldavg-1 最后1分钟的系统平均负载(System load average)
ldavg-5 过去5分钟的系统平均负载
ldavg-15 过去15分钟的系统平均负载

6、输出网络设备状态的统计信息

# sar -n DEV
12:00:01 AM     IFACE   rxpck/s   txpck/s   rxbyt/s   txbyt/s   rxcmp/s   txcmp/s  rxmcst/s
12:10:01 AM      eth0      0.59      0.92     41.57    893.98      0.00      0.00      0.00
12:20:01 AM      eth0      0.55      0.88     37.50    859.56      0.00      0.00      0.00
12:30:01 AM      eth0      0.55      0.86     38.17    871.98      0.00      0.00      0.00
Average:         eth0      0.29      0.42     21.05    379.29      0.00      0.00      0.00

输出项说明:
IFACE 网络设备名
rxpck/s 每秒接收的包总数
txpck/s 每秒传输的包总数
rxbyt/s 每秒接收的字节(byte)总数
txbyt/s 每秒传输的字节(byte)总数
rxcmp/s 每秒接收压缩包的总数
txcmp/s 每秒传输压缩包的总数
rxmcst/s 每秒接收的多播(multicast)包的总数

部分测试数据

该部分测试数据为测试中的一部分且都是统计出来的平均值,更多数据请参考测试数据附件。
CPU相关数据
播放前:

[root@luckxiang /]# sar -u -q 3 100 
Linux 2.6.27.55 (luckxiang)        01/01/15        _csky_  (1 CPU)
Average:        CPU     %user     %nice   %system   %iowait    %steal     %idle
Average:        all      0.96      0.00      7.96      0.00      0.00     91.08

Average:      runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
Average:            2        79      1.37      1.30      1.25         0

播放中:

[root@luckxiang /]# sar -u -q 3 100 
Linux 2.6.27.55 (luckxiang)        01/01/15        _csky_  (1 CPU)
 Average:        CPU     %user     %nice   %system   %iowait    %steal     %idle
Average:        all      4.74      0.00     18.43      0.00      0.00     76.83

Average:      runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
Average:            3        86      1.30      1.30      1.25         0

内存相关数据:
播放前:

[root@luckxiang /]# sar -r -B -W 3 100 
Linux 2.6.27.55 (luckxiang)        01/01/15        _csky_  (1 CPU)

Average:     pswpin/s pswpout/s
Average:         0.00      0.00

Average:     pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
Average:         0.00      0.00    553.47      0.00    155.36      0.00      0.00      0.00      0.00

Average:    kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
Average:        26609     39071     59.49      5904     13360    264302    402.41      9918     15368         0

播放中:

[root@luckxiang /]# sar -r -B -W 3 100 
Linux 2.6.27.55 (luckxiang)        01/01/15        _csky_  (1 CPU)
Average:     pswpin/s pswpout/s
Average:         0.00      0.00

Average:     pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
Average:         0.00      0.00    549.03      0.00    181.96      0.00      0.00      0.00      0.00

Average:    kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
Average:        21805     43875     66.80      5904     13360    293345    446.63     14403     15368         0

流量相关数据:

客户提供的测试链接
[root@luckxiang /]# sar -n DEV 2 100 |grep -E 'ra0|IFACE'
Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
Average:          ra0    174.68     43.86    194.59      3.68      0.00      0.00      0.00      0.00
云端链接:
[root@luckxiang /]# sar -n DEV 2 100 |grep -E 'ra0|IFACE'
Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
Average:          ra0    128.38     65.23     89.67      6.65      0.00      0.00      0.00      0.00
有线连接:
Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
Average:         eth0    129.17     41.48    178.44      2.67      0.00      0.00      0.00      0.00

在测试2中,我观察了内存,CPU和流量数据,不同的播放源,对CPU的消耗是不一样的,内存也有充足的剩余空间,播放普通视频CPU空闲时间百分比比较高,播放M3U8视频CPU空闲时间百分比基本为0。补充测试了连接有线的情况,结果差别很大,最大能到1M多,慢的时候和wifi差不多,在有线网速很快的情况下,播放M3U8格式的凤凰视频的时候,也多次出现了缓冲的情况。而播放普通视频则没有出现缓冲。

根据测试分析如下:
是否CPU在播放M3U8格式视频的时候处理能力不够。M3U8格式视频播放的时候,基本上都是隔4,5秒才会下载一次数据,样机也基本上是隔4,5秒取一次数据,我觉得可以关注下M3U8格式视频的解析过程,是不是这个地方解析的时候存在瓶颈,解析太慢导致缓存耗尽,还是说多线程下载过程中影响了当前播放下载线程的速度,所以需要确认两个点,一个是客户测试用的是什么连接,一个是M3U8处理流程是怎么样子的。

猜你喜欢

转载自blog.csdn.net/Zx_SSSS/article/details/79789139