Linux服务器性能分析命令sar详解

此前,我们已分享过一系列与Linux相关的命令文章,例如爆肝整理!史上超详细Linux命令大全Linux下sudo命令的深层原理以及用法剖析 ,还有Linux命令使用详解之netstat 等。其中,Linux命令使用详解之netstat 属于网络查看类命令。而在本篇文章中,将为大家介绍另一款与网络操作相关的命令。

一、简介

sar,即System Activity Reporter(系统活动情况报告),是当前Linux系统中极为全面的系统性能分析工具之一。它能够从多个维度对系统活动进行详细报告,涵盖文件的读写状况、系统调用的使用情形、磁盘I/O、CPU效率、内存使用状态、进程活动,以及与IPC相关的活动等方面。

二、工具的安装

在Linux系统中安装sar工具,可执行以下命令:

[root@10-27-0-224 ~]# yum install sysstat -y

安装过程可能会出现类似如图1所示的界面:

Linux服务器性能分析命令sar和可视化工具ksar详解(图1)

三、命令语法

sar命令的语法结构如下:

Linux服务器性能分析命令sar和可视化工具ksar详解(图2)

具体参数说明如下:

(一)类型

类型用于指定要获取的指标数据类别。例如,参数-n代表监控网络相关信息。常见的类型参数如下:

-a:文件读写情况
-A:所有报告的总和
-B:分页状况
-b:显示I/O和传送速率的统计信息
-c:输出进程统计信息,每秒创建的进程数
-d:块设备状况
-F [ MOUNT ]:文件系统统计信息
-H:交换空间利用率
-I { <中断> | SUM | ALL | XALL }:中断信息状况
-n:汇报网络情况
-P:设定CPU
-q:队列长度和平均负载
-R:输出内存页面的统计信息
-r [ ALL ]:输出内存和交换空间的统计信息
-S:交换空间利用率信息
-u [ ALL ]:输出CPU使用情况的统计信息
-v:输出inode、文件和其他内核表的统计信息
-W:输出系统交换活动信息
-w:任务创建与系统转换信息
-y:终端设备活动情况

(二)类型参数

部分类型参数带有额外参数,有的则没有。以-n类型为例,若其后跟DEV,表示监控网卡信息。

(三)间隔时间

间隔时间指每次报告之间的时间间隔,单位为秒。通过设置该参数,可以控制sar命令获取数据的频率。

(四)次数

次数用于指定显示报告的次数。例如,若设置时间间隔为2秒,采样次数为3次,那么sar命令将阻塞2×(3 + 1)= 12秒钟,以完成相应次数的数据采集与报告输出。

执行sar命令后,可能会出现类似如图3所示的结果展示界面:

Linux服务器性能分析命令sar和可视化工具ksar详解(图3)

四、案例展示

在实际应用中,若需要分析历史某个时间段内主机的CPU、内存、IO使用情况,可参考以下操作:

(一)SA日志存放目录

SA日志存放于/var/log/sa目录下。

(二)操作命令

使用以下命令进行分析:

sar -B -f _sa30_ -s "22:40:00" -e "22:50:00"

其中,-f用于指定解析具体的sa文件;-s指定开始时间;-e指定结束时间。执行该命令后,结果可能类似如图4所示:

Linux服务器性能分析命令sar和可视化工具ksar详解(图4)

(三)具体指标分析

1. CPU监控信息分析

  • CPU使用率

    通过执行以下命令获取CPU使用率信息:

    [root@10-27-0-224 ~]# sar -u 1 1
    

    执行结果类似如图4所示:

    Linux服务器性能分析命令sar和可视化工具ksar详解(图4)

    字段说明如下:

    %user 用户空间的CPU使用
    %nice 改变过优先级的进程的CPU使用
    %system 内核空间的CPU使用
    %iowait CPU等待IO的百分
    %steal 虚拟机的虚拟机CPU使用的CPU
    %idle 空闲的CPU
    

    在上述显示结果中,重点关注%iowait%idle。当%iowait过高时,表明系统存在I/O瓶颈,即磁盘IO性能无法满足业务需求;若%idle过低,则说明CPU使用率较高,此时需结合内存使用等情况,综合判断CPU是否存在瓶颈。

  • CPU使用状态

    执行以下命令查看CPU使用状态:

    [root@10-27-0-224 ~]# sar -p 1 3
    

    结果展示类似如图5所示:

    Linux服务器性能分析命令sar和可视化工具ksar详解(图5)

    字段说明如下:

    CPU       所有CPU的统计
    %user    用户态的CPU使用统计
    %nice    更改过优先级的进程的CPU使用统计
    %iowait CPU等待IO数据的百分比
    %steal   虚拟机的vCPU占用的物理CPU的百分比
    %idle    空闲的CPU百分比
    
  • CPU负载

    使用sar -q命令查看CPU负载情况,该命令与top命令中的相关参数意义相近。此命令除了显示load值,还会展示等待队列的长度,对于排查排队问题具有重要帮助。执行命令如下:

    [root@10-27-0-224 ~]# sar -q  1 1
    

    结果类似如图6所示:

    Linux服务器性能分析命令sar和可视化工具ksar详解(图6)

    字段说明如下:

    runq-sz    运行队列的长度(等待运行的进程数,每核的CP不能超过3个)
    plist-sz    进程列表中的进程(processes)和线程数(threads)的数量
    ldavg-1   最后1分钟的CPU平均负载,即将多核CPU过去一分钟的负载相加再除以核心数得出的平均值,5分钟和15分钟以此类推
    ldavg-5   最后5分钟的CPU平均负载
    ldavg-15 最后15分钟的CPU平均负载
    
  • 中断

    使用sar -I命令查看中断信息,需注意此处的I为大写。由于中断参数存在不同的换算方式,因此分为默认、SUM、ALL等。执行命令如下:

    [root@10-27-0-224 ~]# sar -I SUM 1 2
    

    结果类似如图7所示:

    Linux服务器性能分析命令sar和可视化工具ksar详解(图7)

    • 上下文切换

    使用sar -w命令查看上下文切换情况。需注意,该命令常与监控swap交换分区使用情况的sar -W(注意大小写)命令混淆。执行结果类似如图8所示:

    Linux服务器性能分析命令sar和可视化工具ksar详解(图8)

2. 内存信息分析

内存主要包括物理内存、虚拟内存以及内核等部分。

  • 内存利用率

    执行以下命令查看内存利用率:

    [root@10-27-0-224 ~]# sar -r 1 1
    

    结果类似如图9所示:

    Linux服务器性能分析命令sar和可视化工具ksar详解(图9)

    字段说明如下:

    kbmemfree   可用的空闲内存大小
    kbmemused  已使用的内存大小(不包含内核使用的内存)
    %memused   已使用内存的百分数
    kbbuffers      内核缓冲区(buffer)使用的内存大小
    kbcached      内核高速缓存(cache)数据使用的内存大小
    kbswpfree    可用的空闲交换空间大小
    kbswpused   已使用的交换空间大小
    %swpused    已使用交换空间的百分数
    kbswpcad     交换空间的高速缓存使用的内存大小
    kbcommit     保证当前系统正常运行所需要的最小内存,即为了确保内存不溢出而需要的最少内存(物理内存+Swap分区)
    commit         这个值是kbcommit与内存总量(物理内存+swap分区)的一个百分比的值
    
  • swap交换分区

    使用sar -S命令查看swap分区的相关信息。若要查看交换分区的使用情况(非容量情况),则需切换到sar -W命令。执行命令如下:

    [root@10-27-0-224 ~]# sar -S 1 1
    

    结果类似如图10所示:

    Linux服务器性能分析命令sar和可视化工具ksar详解(图10)

  • 内核使用情况

    使用sar -v命令查看内核使用情况。在其他命令中,v通常用于展示版本信息,而在sar命令中,该参数用于输出slab区的相关信息,用法较为特殊。执行命令如下:

    [root@10-27-0-224 ~]# sar -v  1
    

    结果类似如图11所示:

    Linux服务器性能分析命令sar和可视化工具ksar详解(图11)

    字段说明如下:

    dentunusd  在缓冲目录条目中没有使用的条目数量
    file-nr        被系统使用的文件句柄数量
    inode-nr    已经使用的索引数量
    pty-nr        使用的pty数量
    
  • 监控内存分页信息

    主要使用sar -B命令监控内存分页信息。执行命令如下:

    [root@10-27-0-224 ~]# sar -B
    

    结果类似如图12所示:

    Linux服务器性能分析命令sar和可视化工具ksar详解(图12)

  • 查看系统swap分区的统计信息

    执行以下命令查看系统swap分区的统计信息:

    [root@10-27-0-224 ~]# sar -W
    

    结果类似如图13所示:

    Linux服务器性能分析命令sar和可视化工具ksar详解(图13)

    字段说明如下:

    pswpin/s 每秒从交换分区到系统的交换页面(swap page)数量
    pswpout/s 每秒从系统交换到swap的交换页面(swap page)的数量
    
  • 查看I/O和传递速率的统计信息

    执行命令如下:

    [root@10-27-0-224 ~]# sar -b
    

    结果类似如图14所示:

    Linux服务器性能分析命令sar和可视化工具ksar详解(图14)

    字段说明如下:

    tps 磁盘每秒钟的IO总数,等于iostat中的tps
    rtps 每秒钟从磁盘读取的IO总数
    wtps 每秒钟从写入到磁盘的IO总数
    bread/s 每秒钟从磁盘读取的块总数
    bwrtn/s 每秒钟此写入到磁盘的块总数
    
  • 磁盘使用详情统计

    执行命令如下:

    [root@10-27-0-224 ~]#  sar -d
    

    结果类似如图15所示:

    Linux服务器性能分析命令sar和可视化工具ksar详解(图15)

    字段说明如下:

    DEV       磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直接
    tps          每秒I/O的传输总数
    rd_sec/s  每秒读取的扇区的总数
    wr_sec/s 每秒写入的扇区的 总数
    avgrq-sz 平均每次次磁盘I/O操作的数据大小(扇区)
    avgqu-sz 磁盘请求队列的平均长度
    await       从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒等于1000毫秒),等于寻道时间+队列时间+服务时间
    svctm I/O的服务处理时间,即不包括请求队列中的时间
    %util I/O请求占用的CPU百分比,值越高,说明I/O越慢
    

4.3 I/O信息

(1)IO信息监控

执行以下命令可对IO信息进行监控:

[root@10-27-0-224 ~]# sar -b 1 2

执行该命令后,结果展示类似如图17所示:

Linux服务器性能分析命令sar详解(图17)

字段说明如下:

tps 磁盘每秒钟的IO总数,等于iostat中的tps
rtps 每秒钟从磁盘读取的IO总数
wtps 每秒钟向磁盘写入的IO总数
bread/s 每秒钟从磁盘读取的块总数
bwrtn/s 每秒钟向磁盘写入的块总数

(2)sar -d命令特性

sar -d命令与iostat命令功能相似,但sar -d命令展示的结果更为丰富。执行命令如下:

[root@10-27-0-224 ~]# sar -d 1

执行结果类似如图18所示:

Linux服务器性能分析命令sar详解(图18)

字段说明如下:

DEV      磁盘设备的名称,如果不加-p,会显示dev253-0类似的设备名称,因此加上-p显示的名称更直观
tps         每秒I/O的传输总数
rd_sec/s 每秒读取的扇区的总数
wr_sec/s 每秒写入的扇区的 总数
avgrq-sz 平均每次磁盘I/O操作的数据大小(扇区)
avgqu-sz 磁盘请求队列的平均长度
await 从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1秒等于1000毫秒),等于寻道时间+队列时间+服务时间
svctm I/O的服务处理时间,即不包括请求队列中的时间
%util I/O请求占用的CPU百分比,值越高,说明I/O越慢

4.4 网络信息

(1) 统计网络信息

执行以下命令可统计网络信息:

[root@10-27-0-224 ~]#  sar -n DEV

执行结果类似如图19所示:

Linux服务器性能分析命令sar详解(图19)

sar -n选项包含6个不同的开关,分别为:DEV,EDEV,NFS,NFSD,SOCK,IP,EIP,ICMP,EICMP,TCP,ETCP,UDP,SOCK6,IP6,EIP6,ICMP6,EICMP6和UDP6 。其中,DEV用于显示网络接口信息;EDEV用于显示网络错误的统计数据;NFS用于统计活动的NFS客户端信息;NFSD用于统计NFS服务器信息;SOCK用于显示套接字信息;ALL用于显示所有5个开关对应的信息。这些开关可单独使用,也可组合使用。

(2) 按特定频率统计网络信息

执行以下命令,可实现每间隔1秒统计一次,总计统计1次:

[root@10-27-0-224 ~]# sar -n DEV 1 1

执行结果类似如图20所示:

Linux服务器性能分析命令sar详解(图20)

字段说明:以下的“average”是在多次统计后的平均值。

IFACE 本地网卡接口的名称
rxpck/s 每秒钟接受的数据包
txpck/s 每秒钟发送的数据包
rxKB/S 每秒钟接受的数据包大小,单位为KB
txKB/S 每秒钟发送的数据包大小,单位为KB
rxcmp/s 每秒钟接受的压缩数据包
txcmp/s 每秒钟发送的压缩包
rxmcst/s 每秒钟接收的多播数据包

(3) 统计网络设备通信失败信息

执行以下命令可统计网络设备通信失败信息:

[root@10-27-0-224 ~]#  sar -n EDEV  1 1

执行结果类似如图21所示:

Linux服务器性能分析命令sar详解(图21)

字段说明如下:

IFACE 网卡名称
rxerr/s 每秒钟接收到的损坏的数据包
txerr/s 每秒钟发送的数据包错误数
coll/s 当发送数据包时,每秒钟发生的冲撞(collisions)数,该数据仅在半双工模式下存在
rxdrop/s 当由于缓冲区满时,网卡设备接收端每秒钟丢掉的网络包的数目
txdrop/s 当由于缓冲区满时,网络设备发送端每秒钟丢掉的网络包的数目
txcarr/s 当发送数据包时,每秒钟载波错误发生的次数
rxfram 在接收数据包时,每秒钟发生的帧对齐错误的次数
rxfifo 在接收数据包时,每秒钟缓冲区溢出的错误发生的次数
txfifo 在发送数据包时,每秒钟缓冲区溢出的错误发生的次数

(4) 统计socket连接信息

执行以下命令可统计socket连接信息:

[root@10-27-0-224 ~]# sar -n SOCK 1 1

执行结果类似如图22所示:

Linux服务器性能分析命令sar详解(图22)

字段说明如下:

totsck 当前被使用的socket总数
tcpsck当前正在被使用的TCP的socket总数
udpsck当前正在被使用的UDP的socket总数
rawsck当前正在被使用于RAW的skcket总数
ip-frag当前的IP分片的数目
tcp-tw TCP套接字中处于TIME-WAIT状态的连接数量

当使用FULL关键字时,其功能相当于上述DEV、EDEV和SOCK三者功能的综合。

(5) TCP连接的统计

执行以下命令可对TCP连接进行统计:

[root@10-27-0-224 ~]#  sar -n TCP 1 3

执行结果类似如图23所示:

Linux服务器性能分析命令sar详解(图23)

字段说明如下:

active/s新的主动连接
passive/s新的被动连接
iseg/s接受的段
oseg/s输出的段

(6) sar -n使用总结

DEV网络接口统计信息
EDEV网络接口错误
NFS NFS客户端
NFSD NFS服务器
SOCK Sockets (套接字) (v4)套接字使用
IP IP流 (v4) IP数据报统计信息
EIP IP流 (v4) (错误) IP错误统计信息
ICMP ICMP流 (v4)
EICMP ICMP流 (v4) (错误)
TCP TCP流 (v4) TCP统计信息
ETCP TCP流 (v4) (错误)TCP错误统计信息
UDP UDP流 (v4)
SOCK6 Sockets (套接字) (v6)
IP6 IP流 (v6)
EIP6 IP流 (v6) (错误)
ICMP6 ICMP流 (v6)
EICMP6 ICMP流 (v6) (错误)
UDP6 UDP流 (v6)

总结

本文聚焦于 Linux 系统下强大的系统性能分析工具 sar 命令。开篇阐述了 sar 在 Linux 性能分析中的重要地位,接着详细讲解了工具的安装步骤。在命令语法部分,对 sar 命令的各参数类型、参数意义、间隔时间及报告次数等进行了全面解析。通过丰富的案例展示,深入探讨了 sar 在多个关键领域的应用:在 CPU 监控方面,涵盖了使用率、使用状态、负载、中断及上下文切换等指标的分析;内存信息分析涉及内存利用率、swap 交换分区、内核使用情况、内存分页及 swap 分区统计等内容;I/O 信息部分展示了如何利用 sar 监控磁盘 IO 总数、读写情况等;网络信息统计则包含网络接口、错误、socket 连接、TCP 连接等多维度的信息获取与解读。本文为读者提供了一套完整的 sar 命令使用指南,助力用户深入了解系统性能状况,为系统优化提供有力依据。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

文章由技术书栈整理,本文链接:https://study.disign.me/article/202510/6.linux-sar-command.md

发布时间: 2025-03-03