Linux性能监控命令_sar & 自动保存30天历史信息

简介

     sar 是一个比较全面的性能监控工具,包括cpu、内存、磁盘和网络等信息,并且该命令会每10分钟自动保存一次硬件资源使用情况。如果在执行某方面的性能测试时忘记监控,那么 sar 可以帮助我们查看历史记录。

        

文章目录如下

1. 语法

1.1. 常用参数

2. cpu监控

2.1. 监控系统负载

2.2. 监控CPU利用率

2.3. 监控上下文切换

3. 内存监控

3.1. 监控物理内存

3.2. 监控内存分页

3.3. 监控系统交换活动信息

4. 磁盘监控

4.1. 监控磁盘使用情况

4.2. 监控磁盘 I/O

5. 网络监控

6. 历史监控

7. 总结


        

1. 语法

sar  [ 选项 ]  [ <时间间隔> [ <次数> ] ]

        

1.1. 常用参数

-u:CPU利用率
-r:内存利用率
-R:内存状况
-S:交换空间利用率
-H:交换空间利用率
-b:I/O 和传输速率信息状况
-d:磁盘使用情况
-q:队列长度和平均负载
-n { <关键词> [,...] | ALL } :网络统计信息
-o:保存信息为二进制文件
-f:查看 -o 保存的文件

        

2. cpu监控

2.1. 监控系统负载

  • 通过 sar -q 监测系统的运行队列和负载情况。它提供了有关系统中等待运行的进程数量、平均负载以及执行队列长度等信息。通过分析这些数据,可以评估系统的负载状态,帮助排查性能问题,并合理调整系统资源以优化性能。
sar -q 1 3    # 每 1s 监控一次,共监控 3 次

runq-sz  :运行队列长度(正在等待 CPU 执行的进程数)

plist-sz  :进程队列长度(等待 CPU 时间片的进程数)

ldavg-1  :过去1分钟负载平均值

ldavg-5  :过去5分钟负载平均值

ldavg-15:过去15分钟负载平均值

blocked :阻塞进程数量(目前正在阻塞等待某些事件的进程数量)

        

2.2. 监控CPU利用率

  • 通过 sar -u 来统计系统的CPU使用情况,包括CPU利用率、用户态、内核态、空闲、等待I/O等,以帮助评估系统CPU负载和性能状况。
sar -u 1 3    # 每 1s 监控一次,共监控 3 次

%user     :用户空间占用的CPU

%nice     :改变过优先级进程占用的CPU

%system:内核空间占用的CPU

%iowait  :CPU 等待 IO 的占比(若该占比较高,硬盘可能存在 I/O 瓶颈)

%steal   :管理程序(hypervisor)为另一个虚拟进程提供服务而等待的虚拟CPU占比

%idle     :空闲的CPU(若空闲较大,但系统响应慢,有可能CPU等待内存分配,应适当增加内存容量;若空闲持续低于 1%,则系统的CPU处理能力较低)

        

2.3. 监控上下文切换

sar -w 1 3    # 查看上下文切换情况,每 1s 监控一次,共 3 次

proc/s   :每秒新建进程的数量。

cswch/s:每秒上下文切换的次数。

  • proc/s 表示每秒钟新创建的线程和进程的总数,可以反映系统的任务调度情况。较高的数值可能表示系统正在频繁地创建新的进程或线程。
  • 上下文切换是指在多任务操作系统中,由于 CPU 资源的切换,系统从一个进程或线程切换到另一个进程或线程时所进行的操作。上下文切换在多任务系统中是必要的,但频繁的上下文切换可能会影响系统的性能。cswch/s 可以衡量系统的调度效率和负载情况。较高的值可能表示系统正在频繁进行进程切换,这可能是由于进程数量过多或其他资源限制引起的。

        

3. 内存监控

3.1. 监控物理内存

  • 通过 sar -r 可以查看内存使用情况,包括内存利用率、可用内存、缓存和缓冲区、页面交换等,以帮助评估系统内存压力和性能状况。
sar -r 1 3    # 查看内存使用率,每 1s 监控一次,共 3 次

  • 默认单位:KB 

kbmemfree  :空闲的物理内存

kbmemused:已使用的物理内存

%memused:物理内存使用率

kbbuffers    :已使用的缓冲区大小

kbcached   :已缓存的文件系统大小

kbcommit   :保证当前系统所需内存,为了确保不溢出而需要的内存(RAM + SWAP)

%commit    :可用内存占比(是可用,而不是空闲)

        

3.2. 监控内存分页

  • 通过观察页面交换的频率和量,可以评估系统的内存压力情况。较高的页交换率可能表明系统正在经历内存紧缺的情况。 
sar -B 1 3    # 查看内存分页情况,每隔 1s 监控一次,共 3 次

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    : 清除页占总扫描页的百分比

        

3.3. 监控系统交换活动信息

  • sar -W 可以提供有关系统内存交换的重要信息,有助于评估系统内存压力和性能状况。当pswpinpswpout的值较高或持续增长时,可能需要进一步分析和优化系统的内存使用情况,以避免过度的页面交换和性能瓶颈。
sar -W 1 3    # 查看系统交换活动信息,每隔 1s 监控一次,共 3 次

pswpin/s  :每s平均发生的进程页面交换到内存的次数

pswpout/s:每s平均发生的进程页面从内存交换出去的次数

  • pswpin/s 衡量了进程被从磁盘交换到内存中的频率。较高的值可能意味着系统正经历内存压力,并且需要经常从磁盘加载进程页面到内存中,这可能导致性能下降。
  • pswpout/s 表示了进程页面从内存中被交换到磁盘的频率。较高的值可能表示系统内存不足,需要将不常用的进程页面交换到磁盘以释放内存空间。

        

4. 磁盘监控

4.1. 监控磁盘使用情况

  • 通过 sar -d 来监测和统计系统的磁盘活动情况。它提供了关于磁盘I/O操作的信息,包括读取和写入的速率、传输字节数、I/O请求的等待时间等。通过查看这些数据,可以评估磁盘的使用情况、检测性能瓶颈和磁盘故障,并进行必要的优化和调整。
sar -d 1 3 -p    # 查看磁盘使用情况,每 1s 监控一次,共 3 次
sar -d 1 3       # 输出情况同上,块设备名显示不同

DEV      :块设备名

tps         :每秒 I/O 数

rd_sec/s:每秒读取扇区数

wr_sec/s:每秒写入扇区数

avgrq-sz:平均每次 I/O 操作的数据大小(扇区)

avgqu-sz:磁盘请求队列的平均长度(此值越低时,设备利用率较高)

await      :I/O 请求队列的平均等待时间(单位 ms)

svctm     :I/O 服务处理时间

%util       :I/O 请求占 CPU 百分比,比例越大说明越饱和;接近 100% 时表示带宽已经占满

        

4.2. 监控磁盘 I/O

  • sar -b 用于监测磁盘I/O活动情况。它提供了有关硬盘的传输信息,包括传输速率、传输字节数等。
sar -b 1 3    # 查看 I/O 和传输率,每 1s 监控一次,共 3 次

tps       :每秒物理设备的 I/O 传输总量

rtps      :每秒从物理设备读入的数据总量

wtps     :每秒从物理设备写入的数据总量

bread/s :每秒从物理设备读入的数据量(单位 块/s)

bwrtn/s  :每秒从物理设备写入的数据量(单位 块/s)

        

5. 网络监控

sar -n DEV 1 3    # 查看网络情况,每隔 1s 监控一次,共 3 次
    -n 关键词如下:
        DEV     网卡
        EDEV    网卡 (错误)
        NFS     NFS 客户端
        NFSD    NFS 服务器
        SOCK    Sockets (套接字)        (v4)
        IP      IP 流   (v4)
        EIP     IP 流   (v4) (错误)
        ICMP    ICMP 流 (v4)
        EICMP   ICMP 流 (v4) (错误)
        TCP     TCP 流  (v4)
        ETCP    TCP 流  (v4) (错误)
        UDP     UDP 流  (v4)
        SOCK6   Sockets (套接字)        (v6)
        IP6     IP 流   (v6)
        EIP6    IP 流   (v6) (错误)
        ICMP6   ICMP 流 (v6)
        EICMP6  ICMP 流 (v6) (错误)
        UDP6    UDP 流  (v6)

IFACE    :网卡名

rxpck/s   :每秒接收的包

txpck/s   :每秒发送的包

rxkB/s    :每秒接收的字节数(单位 KB)

txkB/s    :每秒发送的字节数(单位 KB)

rxcmp/s :每秒接收的压缩包

txcmp/s :每秒发送的压缩包

rxmcst/s:每秒接收的多播包

        

6. 历史监控

  • 若操作系统存在 sar 命令,那么系统将自动保存 30 天监控情况
  • 目录为:/var/log/sa/*,如果没开机则无法监控
  • 监控文件以每 10 分钟保存一次
sar -f /var/log/sa/sa04 -u    # 查看4号的CPU使用情况
sar -f /var/log/sa/sa04 -r    # 查看4号的内存使用情况
sar -f /var/log/sa/sa04 -d    # 查看4号的磁盘使用情况
sar -f /var/log/sa/sa04 -b    # 查看4号的I/O使用情况

查看其他资源监控只需要使用 sar -f [需要读取的文件] + [参数] 即可

 注意:系统每10分钟保存一次,所以即使指定每 1 秒输出一次,也是按每 10 分钟输出一次

        

7. 总结

    sar 是一个比较全面的性能监控命令,分析cpu瓶颈可以根据系统负载情况、cpu利用率和上下文切换次数来判断cpu是否出现瓶颈。如果cpu出现瓶颈后,需要查找影响瓶颈的进程,sar 无法做到,这需要其他命令配合使用(top、pidstat)。查看内存压力可以通过 sar 查看物理内存使用情况、内存分页、交换信息等方式来观察,如果需要查找使用内存最大的进程还是需要 top 或 pidstat 来查看。分析磁盘或网络瓶颈都可以使用 sar,支持磁盘读写、磁盘利用率、网络速率等方式监控。

top 命令的用法:https://blog.csdn.net/m0_61066945/article/details/126452494

pidstat 命令的用法:https://blog.csdn.net/m0_61066945/article/details/126568206

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值