linux命令-sar-5
sar
sar(System Activity Reporter)是 Linux 系统中全面的性能监控工具,主要用于观察 CPU、内存、磁盘 I/O、网络等服务负载,支持即时查看与累计统计两种模式,其数据存储在 /var/log/sa/saDD(DD 为日期)的二进制文件中,需通过 sar 或 sadf 命令查看。
配置说明
- 
安装 yum -y install sysstat
- 
/etc/sysconfig/sysstat配置文件~]# vim /etc/sysconfig/sysstat HISTORY=28 # 功能:控制 sar 系统活动日志的保留天数。COMPRESSAFTER=31 # 功能: 自动压缩旧日志文件以节省空间。 # 机制: 当日志文件超过 31天 未被修改时,触发压缩(由 sa1 或 sadc 调用)。SADC_OPTIONS="-S DISK" # 功能:调整 sadc(系统活动数据收集器)的监控范围。ZIP="bzip2" # 功能:指定日志压缩工具。 # bzip2:高压缩率(速度较慢),生成 .bz2 文件。 # gzip:速度更快(压缩率稍低),生成 .gz 文件。 # xz:极高压缩率(资源消耗大),适合长期归档。
- 
/etc/cron.d/sysstat计划任务- */10 * * * * root /usr/lib64/sa/sa1 1 1- 作用: 每10分钟执行一次sa1命令,实时采集并存储系统性能数据
- 详细说明: sa1是sadc(系统活动数据收集器)的前端脚本,负责将CPU、内存、磁盘I/O、网络等指标写入二进制文件。
- 数据存储路径: /var/log/sa/saDD(DD为当前日期,如sa30表示当月30日的数据)
- 意义:为sar等工具提供原始数据,用于短期性能分析。
 
- 53 23 * * * root /usr/lib64/sa/sa2 -A- 作用: 每天23:53运行sa2命令,生成当日系统性能摘要报告。
- 详细说明: sa2是sar的前端脚本,调用sar -A生成涵盖CPU、内存、磁盘、网络等全维度统计的文本报告。
- 报告存储路径: /var/log/sa/sarDD(如sar30)
- -A参数等价于-bBdFHqRuvwWy -I SUM -n ALL -P ALL,覆盖绝大多数监控指标
- 意义: 提供长期性能趋势分析的基础数据,便于运维人员定期审查。
 
 
- 
关键目录与文件说明 路径 用途 /var/log/sa/saDD二进制原始数据文件,需用 sar -f或sadf解析/var/log/sa/sarDD文本格式的每日摘要报告,可直接用文本工具查看 /usr/bin/sar 收集、报告或存储信息(CPU、内存、磁盘、中断、网卡、TTY、内核表等等); /usr/lib/sa/sa1收记并存储二进制数据到每天的文件,这是设计来给cron执行一个 sadc的前台程序/usr/lib/sa/sa2生成总结报表,调用 sar
参数说明
使用格式:
sar [options] [-A] [-o file] t [n]
其中t为采样间隔,n为采样次数,默认值是1;-o file表示将命令结果以二进制格式存放在文件中,file是文件名;options为命令行选项,sar常用的选项有以下:
- 
直接使用 - 
命令: sar 2 3说明:每2秒采样一次,连续采样3次,查看CPU的整体使用情况~]# sar 2 2 # 与 sar -u 2 2 一样 Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 2025年10月30日 _x86_64_ (4 CPU) 22时15分33秒 CPU %user %nice %system %iowait %steal %idle 22时15分35秒 all 0.00 0.00 0.00 0.00 0.00 100.00 22时15分37秒 all 0.00 0.00 0.13 0.00 0.00 99.87 平均时间: all 0.00 0.00 0.06 0.00 0.00 99.94
- 
参数说明 名称 说明 %userCPU处在用户模式下的时间百分比;如 iostat和pidstat都有%niceCPU处在带NICE值的用户模式下的时间百分比; %systemCPU处在系统模式下的时间百分比; %iowaitCPU等待输入输出完成时间的百分比; %steal管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比; %idleCPU空闲时间百分比; - 在所有的显示中,我们应主要注意%iowait和%idle,%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。
 
- 在所有的显示中,我们应主要注意
 
- 
CPU
- 
参数 参数 监控资源类别 关键监控指标 示例命令 -uCPU 整体利用率 %user(用户态)、%system(内核态)、%iowait(I/O等待)、%idle(空闲率) sar -u 1 5-P ALL每颗 CPU 核心状态 各核心的负载分布、%steal(虚拟化等待) sar -P ALL 2 3-q系统负载与队列 runq-sz(运行队列)、ldavg-1(1分钟平均负载)、plist-sz(进程总数) sar -q 2 5
- 
命令: sar -P ALL 2 3说明:每2秒采样一次,连续采样3次,查看CPU每个核心的使用情况~]# sar -P ALL 1 2 [root@localhost cron.d]# sar -P ALL 2 1 Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 2025年10月30日 _x86_64_ (4 CPU)22时21分15秒 CPU %user %nice %system %iowait %steal %idle 22时21分17秒 all 0.00 0.00 0.25 0.00 0.00 99.75 22时21分17秒 0 0.00 0.00 0.50 0.00 0.00 99.50 22时21分17秒 1 0.00 0.00 0.00 0.00 0.00 100.00 22时21分17秒 2 0.00 0.00 0.00 0.00 0.00 100.00 22时21分17秒 3 0.00 0.00 0.50 0.00 0.00 99.50平均时间: CPU %user %nice %system %iowait %steal %idle 平均时间: all 0.00 0.00 0.25 0.00 0.00 99.75 平均时间: 0 0.00 0.00 0.50 0.00 0.00 99.50 平均时间: 1 0.00 0.00 0.00 0.00 0.00 100.00 平均时间: 2 0.00 0.00 0.00 0.00 0.00 100.00 平均时间: 3 0.00 0.00 0.50 0.00 0.00 99.50
- 
命令: sar -q 2 3说明:每2秒采样一次,连续采样3次,查看进程队列长度和平均负载状态[root@localhost cron.d]# sar -q 2 1 Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 2025年10月30日 _x86_64_ (4 CPU)22时21分41秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 22时21分43秒 0 139 0.00 0.01 0.05 0 平均时间: 0 139 0.00 0.01 0.05 0参数 说明 runq-sz 运行队列的长度(等待运行的进程数) plist-sz 进程列表中进程(processes)和线程(threads)的数量 ldavg-1 最后1分钟的系统平均负载 ldavg-5 过去5分钟的系统平均负载 ldavg-15 过去15分钟的系统平均负载 blocked 当前阻塞的进程数量,在等待IO完成 
磁盘io
- 
参数 参数 监控资源类别 关键监控指标 示例命令 -b整体 I/O 吞吐 tps(I/O请求数)、rtps(读请求)、wtps(写请求) sar -b 1 6-d块设备详情 await(I/O平均耗时)、avgrq-sz(请求大小)、%util(设备利用率) sar -d -p 2 4
- 
命令: sar -d 1 2说明:每1秒采样一次,连续采样2次,查看块设备使用情况[root@localhost cron.d]# sar -d 1 2 Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 2025年10月30日 _x86_64_ (4 CPU)22时24分48秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 22时24分49秒 dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 22时24分49秒 dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 22时24分49秒 dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 22时24分49秒 dev253-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
- 
命令: sar -d -p 1 2说明:每1秒采样一次,连续采样2次,查看块设备使用情况[root@localhost cron.d]# sar -d -p 1 2 Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 2025年10月30日 _x86_64_ (4 CPU) 22时25分18秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util .... 22时25分19秒 centos-root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 22时25分19秒 centos-swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 .... 平均时间: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util .... 平均时间: centos-root 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均时间: centos-swap 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00~]# lsblk # -p 参数是直接显示设备的名称,而不是 device号 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 200G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 199G 0 part ├─centos-root 253:0 0 191.1G 0 lvm /└─centos-swap 253:1 0 7.9G 0 lvm [SWAP]参数 说明 DEV 磁盘设备 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的百分比,比率越大,说明越饱 
网络
- 
参数 参数 监控资源类别 关键监控指标 示例命令 -n DEV网络接口流量 rxpck/s(收包量)、txpck/s(发包量)、rxkB/s(接收带宽) sar -n DEV 5 3-n TCPTCP 连接状态 active/s(新建连接)、passive/s(被动连接)、retrans/s(重传率) sar -n TCP 1 0
- 
命令: sar -n ALL 2 3说明: -n选项在sar命令中被用来生成网络使用情况的统计报告;使用语法如下为:- 
-n选项使用6个不同的开关:DEV | EDEV | NFS | NFSD | SOCK | ALL。参数 说明 DEV 显示网络接口信息 EDEV 显示关于网络错误的统计数据 NFS 统计活动的NFS客户端的信息 NFSD 统计NFS服务器的信息 SOCK 显示套接字信息 ALL 显示所有5个开关。它们可以单独或者一起使用。 
- 
示例-2 ~]# sar -n ALL 1 2 Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 2025年10月30日 _x86_64_ (4 CPU)11时16分58秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 11时16分59秒 eth0 2.00 1.00 0.12 0.17 0.00 0.00 0.00 11时16分59秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.0011时16分58秒 IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s 11时16分59秒 eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11时16分59秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00参数 说明 IFACE LAN接口网络设备的名称 rxpck/s 每秒钟接收的数据包 txpck/s 每秒钟发送的数据包 rxkB/s 每秒钟接收的字节数 txkB/s 每秒钟发送的字节数 rxcmp/s 每秒钟接收的压缩数据包 txcmp/s 每秒钟发送的压缩数据包 rxmcst/s 每秒钟接收的多播数据包 
- 
示例2: sar -n EDEV 2 3~]# sar -n EDEV 1 2 Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 2025年10月30日 _x86_64_ (4 CPU)平均时间: IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s 平均时间: eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00参数 说明 IFACE LAN接口网络设备的名称 rxerr/s 每秒钟接收的坏数据包 txerr/s 每秒钟发送的坏数据包 coll/s 每秒冲突数 rxdrop/s 因为缓冲充满,每秒钟丢弃的已接收数据包数 txdrop/s 因为缓冲充满,每秒钟丢弃的已发送数据包数 txcarr/s 发送数据包时,每秒载波错误数 rxfram/s 每秒接收数据包的帧对齐错误数 rxfifo/s 接收的数据包每秒FIFO过速的错误数 txfifo/s 发送的数据包每秒FIFO过速的错误数 
- 
示例3: sar -n SOCK 2 3~]# sar -n SOCK 1 2 Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 2025年10月30日 _x86_64_ (4 CPU)14时29分57秒 totsck tcpsck udpsck rawsck ip-frag tcp-tw 14时29分58秒 200 3 1 0 0 0 14时29分59秒 200 3 1 0 0 0 平均时间: 200 3 1 0 0 0参数 说明 totsck 使用的套接字总数量 tcpsck 使用的TCP套接字数量 udpsck 使用的UDP套接字数量 rawsck 使用的RAW套接字数量 ip-frag 当前的IP分片的数目 tcp-tw TCP套接字中处于TIME-WAIT状态的连接数量 
 
- 
内存
- 
参数 参数 监控资源类别 关键监控指标 示例命令 -r内存及交换空间 kbmemfree(空闲内存)、%memused(内存使用率)、kbcached(缓存大小) sar -r 5 4-S交换分区活动 kbswpfree(空闲交换区)、%swpused(交换区使用率) sar -S 3 2-B内存分页 pgpgin/s(换入页)、pgpgout/s(换出页)、%vmeff(页面置换效率) sar -B 10 2
- 
命令: sar -r 2 3说明:每2秒采样一次,连续采样3次,查看内存的使用情况~]# sar -r 2 3 Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 2025年10月30日 _x86_64_ (4 CPU) 09时42分08秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 09时42分10秒 15840116 426696 2.62 2108 154032 240132 0.98 97200 98524 12 09时42分12秒 15840116 426696 2.62 2108 154032 240132 0.98 97200 98524 12 09时42分14秒 15840620 426192 2.62 2108 154000 237244 0.97 96344 98516 12 平均时间: 15840284 426528 2.62 2108 154021 239169 0.98 96915 98521 12参数 说明 kbmemfree 这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间 kbmemused 这个值和 free命令中的used值基本一致,所以它包括buffer和cache的空间%memused 这个值是 kbmemused和内存总量(不包括swap)的一个百分比;kbbuffers 类似free命令中的buffer; kbcached 类似free命令中的cache kbcommit 保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM + swap) %commit 这个值是 kbcommit与内存总量(包括swap)的一个百分比;kbactive 活动内存量 (以千字节计算) (最近使用的内存, 通常不会被收回, 除非绝对必要); kbinact 不活动内存量 (以千字节计算)(最近使用的内存更有资格被用于其他目的); kbdirty 以KB为单位的内存量等待写入磁盘; 
- 
命令: sar -B 2 3说明:每2秒采样一次,连续采样3次,查看内存分页的使用情况~]# sar -B 1 2 Linux 3.10.0-957.el7.x86_64 (localhost.localdomain) 2025年10月30日 _x86_64_ (4 CPU)09时58分08秒 pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff 09时58分09秒 0.00 0.00 65.00 0.00 36.00 0.00 0.00 0.00 0.00 09时58分10秒 0.00 0.00 26.00 0.00 23.00 0.00 0.00 0.00 0.00 平均时间: 0.00 0.00 45.50 0.00 29.50 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)的百分比; 
内核
- 
参数 参数 监控资源类别 关键监控指标 示例命令 -w进程上下文切换 cswch/s(自愿切换)、nvcswch/s(非自愿切换) sar -w 3 2-v内核表状态 dentunusd(未用目录项)、file-nr(文件句柄数)、inode-nr(索引节点数) sar -v 10 2-R内存分配统计 frmpg/s(空闲页释放)、bufgrow/s(缓冲区增长) sar -R 5 3
性能分析小技巧
- 技巧一:要判断系统瓶颈问题,有时需几个sar命令选项结合起来:
- 怀疑CPU存在瓶颈,可用sar -u和sar -q等来查看;
- 怀疑内存存在瓶颈,可用sar -B、sar -r和sar -W等来查看;
- 怀疑I/O存在瓶颈,可用sar -b、sar -u和sar -d等来查看;
 
- 技巧二:巧用sadf命令,转换成各种可读形式高的文件格式,进行线下分析。sar -o会将输出保存为二进制文件,我们可以通过sadf -d将二进制文件进行转换。
