如何使用 SAR 监控Linux 中的系统性能

计算操作系统技术服务知识库
运行环境
  • CentOS/RHEL
  • Ubuntu
  • veLinux
  • OpenSUSE
  • Debian
什么是SAR
  • SAR 是用于收集和报告系统活动的实用程序。它收集与大多数核心系统功能相关的数据,并将这些指标写入二进制数据文件。
  • SAR 也是一个二进制文件 (/usr/bin/sar),可用于专门查询 sa## 文件(例如:sa01)或从系统请求当前正在运行的统计信息。

收集的信息和统计数据包括

  • CPU / IO / System / Nice / Idle percentages
  • Network Traffic / Network Errors
  • Load Average 和 Run queue
  • Interrupts
  • Memory Free / Cached / Buffered / Swapped
  • Device usage per Major/Minor number
  • SAR 由 sysstat 包提供,该包还提供其他统计报告工具,如 iostat,目前火山引擎提供的官方Linux镜像全部已经安装。

SAR是如何工作的呢?

  • SAR 写入 中的日志文件 /var/log/sa。此目录包含两种类型的文件 - sa## 文件(二进制文件)和 sar## 文件(文本)。
  • 文件末尾的数字对应于文件记录的月份中的某一天。
  • 例如,sa03 文件引用该月的 03 天。
  • 安装 sysstat 软件包时,它会将文件放入 /etc/cron.d/sysstat 中。

使用命令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

第一条命令会每10分钟执行一次;第二条命令会在每天23:53执行一次。 如果 SAR 希望更频繁地收集数据,只需更改 '*/10' 到新的间隔。

SAR命令常用格式

sar [options] [-A] [-o file] [ <interval> [ <count> ] ]
其中:interval为采样间隔,count为采样次数,默认值是1; -o file表示将命令结果以二进制格式存放在文件中,file 是文件名

参数说明

-A:所有报告的总和
-u:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-d:输出每一个块设备的活动信息
-r:输出内存和交换空间的统计信息
-b:显示I/O和传送速率的统计信息-R:输出内存页面的统计信息
-y:终端设备活动情况
-w:输出系统交换活动信息
-B:显示换页状态;
-e:设置显示报告的结束时间
-f:从指定文件提取报告
-i:设状态信息刷新的间隔时间
-p:报告每个CPU的状态
-q:平均负载分析

基本用法

统计CPU使用情况

每间隔1秒钟统计一次总共统计五次,并将采样结果以二进制形式存入当前目录下的文件monitor中,使用命令sar -u -o monitor 1 5如图所示。 图片 其中-o表示以二进制的格式把结果存入到monitor文件中,不能使用cat,more,less等查看。 图片 %user:用户空间的CPU使用 %nice:改变过优先级的进程的CPU使用率 %system:内核空间的CPU使用率 %iowait:表示在一个采样周期内:CPU空闲、并且有仍未完成的I/O请求 %steal:虚拟机的虚拟机CPU使用的CPU %idle:空闲的CPU。

平均负载统计分析

每间隔1秒钟统计一次总共统计五次,使用命令sar -q 1 5,如图所示。 图片 runq-sz:运行队列的长度(等待运行的进程数,每核的CP不能超过3个) plist-sz:进程列表中的进程(processes)和线程数(threads)的数量 ldavg-1:最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推 ldavg-5:最后5分钟的CPU平均负载 ldavg-15:最后15分钟的CPU平均负载

内存统计分析

每间隔1秒钟统计一次总共统计五次,使用命令sar -r 1 5,如图所示。 图片 kbmemfree:空闲的物理内存大小 kbmemused:使用中的物理内存大小 %memused:物理内存使用率 kbbuffers:内核中作为缓冲区使用的物理内存大小,kbbuffers和kbcached:这两个值就是free命令中的buffer和cache. kbcached:缓存的文件大小 kbcommit:保证当前系统正常运行所需要的最小内存,即为了确保内存不溢出而需要的最少内存(物理内存+Swap分区) commit:这个值是kbcommit与内存总量(物理内存+swap分区)的一个百分比的值

查看磁盘IO

每间隔1秒钟统计一次总共统计五次,使用命令sar -b 1 5如图所示。 图片 tps:磁盘每秒钟的IO总数,等于iostat中的tps rtps:每秒钟从磁盘读取的IO总数 wtps:每秒钟从写入到磁盘的IO总数 bread/s:每秒钟从磁盘读取的块总数 bwrtn/s:每秒钟此写入到磁盘的块总数

查看磁盘使用情况

每间隔1秒钟统计一次总共统计五次,使用命令sar -d 1 5如图所示。 图片 DEV 磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直接 tps:每秒I/O的传输总数 rd_sec/s:每秒读取的扇区的总数 wr_sec/s:每秒写入的扇区的总数 avgrq-sz:平均每次次磁盘I/O操作的数据大小 avgqu-sz:磁盘请求队列的平均长度 svctm:I/O的服务处理时间,即不包括请求队列中的时间 %util:I/O请求占用的CPU百分比

网络使用分析

选项-n提供所有网络统计信息。 共有 18 个不同的关键字(如 NFS、IP、DEV、TCP 等)可以与-n选项一起使用来获取相关参数。每个关键字都有近 8-10 个参数要显示。所以在调用中,如果你使用 ALL 关键字,那么输出将是一个巨大的参数列表,不利于问题的排查。此处演示常用的DEV参数。 每间隔1秒钟统计一次总共统计三次,使用命令sar -n DEV 1 5如图所示。 图片 IFACE:它的接口名称。您可以在此处轻松查看 eth0、eth1、环回 (lo) 接口。 rxpck/s:每秒接收的数据包 txpck/s:每秒传输的数据包 rxkB/s:每秒接收的千字节数 txkB/s:每秒传输的千字节数 rxcmp/s:每秒收到的压缩包 txcmp/s:每秒传输的压缩包 rxmcst/s:每秒接收的组播数据包数

常用命令

sar 5 5     //  CPU和IOWAIT统计状态 
sar -b 5 5        // IO传送速率
sar -B 5 5        // 页交换速率
sar -c 5 5        // 进程创建的速率
sar -d 5 5        // 块设备的活跃信息
sar -n DEV 5 5    // 网路设备的状态信息
sar -n SOCK 5 5   // SOCK的使用情况
sar -n ALL 5 5    // 所有的网络状态信息
sar -P ALL 5 5    // 每颗CPU的使用状态信息和IOWAIT统计状态 
sar -q 5 5        // 队列的长度(等待运行的进程数)和负载的状态
sar -r 5 5       // 内存和swap空间使用情况
sar -R 5 5       // 内存的统计信息(内存页的分配和释放、系统每秒作为BUFFER使用内存页、每秒被cache到的内存页)
sar -u 5 5       // CPU的使用情况和IOWAIT信息(同默认监控)
sar -v 5 5       // inode, file and other kernel tablesd的状态信息
sar -w 5 5       // 每秒上下文交换的数目
sar -x 2906 5 5  // 显示指定进程(2906)的统计信息,信息包括:进程造成的错误、用户级和系统级用户CPU的占用情况、运行在哪颗CPU上
sar -y 5 5       // TTY设备的活动状态

本文介绍的SAR命令的日常用法,对于SAR命令的其他用法请参考Linux man手册。 如果您有其他问题,欢迎您联系火山引擎技术支持服务

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论