• 查看某一时间段的cpu使用情况,sar(监控系统性能)


    前言

    有的时候,我们要通过对系统的cpu负载等性能数值的查看,来判排查系统产生某种故障(经常死机或者运行速度突然变慢)的原因。但是,简单的top,uptime,w等命令只可以查看当前的负载,而无法查看过去的某一时间段的cpu的负载情况。

    下面就介绍一个用于性能分析的命令,其可以用于查看过去的某一时间段的cpu的负载情况(系统性能)。

    查看某一时间段的cpu使用情况,请直接跳到第七节。

    一、sar概念

    sysstat是Linux 系统中的常用工具包,而sar 是 Linux中sysstat工具包中的用于监控Linux系统性能的工具之一。

    sysstat 工具包中包含两种类型的工具:即时查看工具(iostat、mpstat、sar);累计统计工具(sar)

    因此sar命令,又叫做系统活动情况报告。不仅可以实时查看服务器的性能,还可以做累计统计。

    二、sar可监控的范围

    • 文件的读写情况
    • 系统调用的使用情况
    • 磁盘I/O使用情况
    • CPU的使用统计
    • 内存使用状况
    • 进程活动
    • IPC有关的活动

    三、sar命令使用环境

    sar命令使用格式:

    sar + 命令行选项(可选) + 间隔时间(可选) + 次数(可选)
    

    常用来判断一个系统瓶颈问题

    查询CPU
    可用 sar -u 和 sar -q 等来查看
    
    查询内存
    可用 sar -B、sar -r 和 sar -W 等来查看
    
    查询io
    可用 sar -b、sar -u 和 sar -d 等来查看
    

    四、sar命令累计统计的实现过程

    系统会通过调用 /usr/lib64/sa/ 中的三个工具(sa1 sa2 sadc)来实现,周期地记录当时的系统性能的信息的功能。

    sa1 :收集并将每天的系统性能的信息写入一个二进制的文件中,它是sadc的前端程序

    sa2 :收集每天的系统活跃的信息并写入总结性的文件中,其作为 sar的前端程序

    sadc :收集系统的动态数据的数据并写入一个二进制的文件中,其作为 sar 工具的后端

    五、sar的日志

    sar是由有类似日志切割的功能的,它会依据/etc/cron.d/sysstat中的计划任务,将日志放入/var/log/sa/中

    注:日志为二进制文件,不可使用more、less、vim工具查看,必须使用sar或sadf

    可以根据需求修改该计划任务

    如要查看某一时间段的服务器的性能的其中一个方法就是:使用sar命令,查看当天的日志文件

    sar -f /var/log/sa/sa15

    [root@    lib64]# sar -f /var/log/sa/sa15
    Linux 3.10.0-327.el7.x86_64 (ops-node7)     07/15/2018  _x86_64_    (24 CPU)
    
    12:00:01 AM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    12:10:01 AM     all      1.35      0.00      0.85      0.12      0.00     97.67
    12:20:01 AM     all      1.32      0.00      0.86      0.11      0.00     97.71
    12:30:02 AM     all      1.37      0.00      0.87      0.11      0.00     97.65
    12:40:01 AM     all      1.32      0.00      0.91      0.11      0.00     97.66
    12:50:01 AM     all      1.35      0.00      0.89      0.11      0.00     97.65
    01:00:01 AM     all      1.36      0.00      0.87      0.11      0.00     97.66
    01:10:01 AM     all      1.36      0.00      0.85      0.11      0.00     97.68
    01:20:01 AM     all      1.35      0.00      0.89      0.10      0.00     97.66
    01:30:01 AM     all      1.32      0.00      0.89      0.11      0.00     97.68
    01:40:01 AM     all      1.29      0.00      0.95      0.11      0.00     97.65
    01:50:01 AM     all      1.35      0.00      0.88      0.12      0.00     97.64
    02:00:01 AM     all      1.34      0.00      0.88      0.11      0.00     97.68
    02:10:01 AM     all      1.33      0.00      0.90      0.11      0.00     97.65
    02:20:01 AM     all      1.36      0.00      0.87      0.12      0.00     97.65
    02:30:01 AM     all      1.35      0.00      0.85      0.12      0.00     97.68
    02:40:01 AM     all      1.41      0.00      0.92      0.12      0.00     97.56
    02:50:01 AM     all      1.57      0.00      0.95      0.13      0.00     97.35
    03:00:01 AM     all      4.21      0.00      0.81      0.16      0.00     94.81
    03:10:01 AM     all      2.50      0.00      0.87      0.13      0.00     96.50
    03:20:01 AM     all      1.37      0.00      0.87      0.12      0.00     97.65
    03:30:01 AM     all      1.36      0.00      0.95      0.13      0.00     97.56
    03:40:01 AM     all      1.48      0.00      0.97      0.24      0.00     97.30
    03:50:01 AM     all      1.35      0.01      0.91      0.13      0.00     97.60
    04:00:01 AM     all      1.39      0.00      0.95      0.19      0.00     97.47
    04:10:01 AM     all      1.36      0.00      0.99      0.13      0.00     97.52
    

    注意:

    sar查看性能或其日志时,使用的12/24小时制;日志的切割是昨天晚上12点到今天12点为一天;默认只保留一个月的日志

    六、sar命令参数及输出项详解

    【1】格式

    用法:sar + 选项 + 时间间隔(可选) + 次数 (可选)

    interval: 取样周期,单位是秒
    count:取样次数,默认值为 1
    options:命令行选项
    

    【2】常用选项

    -A           所有报告的总和
    
    -B           输出内存页面的统计信息
    
    -b           输出I/O和传送速率的统计信息
    
    -C           输出进程统计信息及每秒创建的进程数
    
    -d           输出每一个块设备的活动信息
    
    -H           输出交换空间利用率信息
    
    -h           输出帮助信息
    
    -p           输出友好设备名字,以方便查看,常与-d和-n参数结合使用
    
    -q           输出进程队列长度和系统平均负载状态统计信息
    
    -R           输出内存页面的统计信息
    
    -r           输出内存和交换空间的统计信息
    
    -S           输出交换空间利用率信息
    
    -t           读取 /var/log/sa/下的某日志的数据时显示其中记录的原始时间
    
    -u           输出整体CPU使用情况的统计信息
    
    -V           输出版本信息
    
    -v           输出内核表状况统计信息(inode、文件和其他内核表的统计信息)
    
    -W           输出系统交换的统计信息
    
    -w           输出任务创建与系统转换统计信息
    
    -y           输出终端设备的活动信息
    
    
    ----------
    
    -I           输出指定中断的统计信息,后方可加参数{...|SUM|ALL|XALL}   
    ...          指定中断号
    SUM          指定输出每秒接收到的中断总数
    ALL          指定输出前16个中断
    XALL         指定输出全部的中断信息
    
    ----------
    
    -P           输出指定的部分的CPU的统计信息,后方可加参数{cpu|ALL}
    cpu          指定cpu
    ALL          输出单个和整体cpu的统计数据
    
    ----------
    
    -n           输出网络设备(网卡)状态统计信息,后方可加参数{DEV|EDEV|NFS|NFSD|SOCK|ALL}    
    DEV          输出网络设备的统计信息
    EDEV         输出网络设备的错误统计信息
    NFS          输出NFS客户端的活动统计信息
    NFSD         输出NFS服务器的活动统计信息
    SOCK         输出网络套接字的使用统计信息
    ALL          输出所有类型的网络活动统计信息
    
    ----------
    
    -f           从文件中读取数据信息。一般读取sar日志,也可读取-o选项生成的文件,后方要加文件名
    
    -o           将sar的输出信息保存到文件中,后方要加文件名
    
    -i           指定间隔时长,单位为秒
    
    -s           指定输出统计数据的起始时间(格式为hh:mm:ss;例如01:00:00)  
    
    -e           指定输出统计数据的截至时间,通常与-S选项连用。无数值时默认为18:00:00(格式为hh:mm:ss;例如09:00:00)
    
    

    【3】输出项

    <1>cpu的输出

    sar -u

    %usr               CPU在用户模式下,执行进程的时间百分比 
    %nice              CPU在用户模式下,用于nice操作,所占用CPU总时间的百分比 
    %system            CPU处在系统模式(内核态)下,执行进程的时间百分比 
    %iowait            CPU用于等待I/O操作完成(等待输入输出完成),占用CPU总时间的百分比 
    %steal             管理程序为另一个虚拟进程提供服务而等待虚拟CPU的百分比
    %idle              CPU空闲时间百分比
    

    注意:

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

    <2>I/O和传送速率输出

    sar -b

    tps                每秒向磁盘设备请求数据的次数,包括读、写请求,其为rtps与wtps的和。每一次IO下发后会先将多个请求合并为一个I/O磁盘请求,这里tps指请求合并后的请求计数
    rtps               每秒向磁盘设备的读请求次数 
    wtps               每秒向磁盘设备的写请求次数 
    bread/s            每秒钟从物理设备读入的数据量,单位为 块/s 
    bwrtn/s            每秒钟向物理设备写入的数据量,单位为 块/s
    

    <3>设备使用情况输出

    sar -d

    DEV                磁盘设备,加上用参数-p可以打印出sda等磁盘设备名称;如不加参数-p,设备则显示为dev253-0等
    tps                每秒向磁盘设备请求数据的次数,包括读、写请求,其为rtps与wtps的和。每一次IO下发后会先将多个请求合并为一个I/O磁盘请求,这里tps指请求合并后的请求计数
    rd_sec/s           每秒读扇区的次数
    wr_sec/s           每秒写扇区的次数
    avgrq-sz           平均每次设备I/O操作的数据大小(扇区)
    avgqu-sz           磁盘请求队列的平均长度
    await              从请求磁盘到系统处理完,每次请求的平均消耗时间,包括请求队列等待时间(单位是毫秒)
    svctm              系统处理每次请求的平均时间,不包括在请求队列中消耗的时间
    %util              I/O请求占CPU的百分比
    

    <4>网络设备统计信息输出

    sar -n EDEV

    IFACE              网络设备名
    rxpck/s            每秒接收的包数量
    txpck/s            每秒传输的包数量
    rxbyt/s            每秒接收的字节数(单位为byte)
    txbyt/s            每秒传输的字节数(单位为byte)
    rxkB/s             每秒收的数据量(单位为kB)
    txkB/s             每秒发的数据量(单位为kB)
    rxcmp/s            每秒接收压缩包的数量
    txcmp/s            每秒传输压缩包的数量
    rxmcst/s           每秒接收的多播(multicast)包的总数排查网络设备故障
    

    <5>网络设备故障信息输出

    EDEV |egrep ‘eth0|IFACE’ (本次指定了网卡etho0,可填入其他网卡)

    IFACE              网络设备名
    rxerr/s            每秒接收的坏包数量
    txerr/s            传输包时每秒发生错误的数量
    coll/s             传输包时每秒发生冲突的数量
    rxdrop/s           接收包时,每秒丢弃的包的数量(缺乏缓存导致)
    txdrop/s           传输包时,每秒丢弃的包的数量(缺乏缓存导致)
    txcarr/s           传输包时,每秒发生的传输错误的数量
    rxfram/s           接收包时,每秒发生帧校验错误的数量
    rxfifo/s           接收包时,每秒钟缓冲区溢出错误的数量
    txfifo/s           传输包时,每秒钟缓冲区溢出错误的数量
    

    <6>内存分页状态输出

    sar -B

    pgpgin/s         每秒从磁盘空间或交换空间置换到内存的字节数(单位为KB)
    pgpgout/s        每秒从内存置换到磁盘空间或交换空间的字节数(单位为KB)
    fault/s          每秒钟系统产生的缺页数(主缺页加次缺页)
    majflt/s         每秒钟产生的主缺页数
    pgfree/s         每秒被放入空闲队列中的页个数
    pgscank/s        每秒被kswapd扫描的页个数
    pgscand/s        每秒直接被扫描的页个数
    pgsteal/s        每秒钟从cache中被清除来满足内存需要的页个数
    %vmeff           每秒清除的页占总扫描页的百分比
    

    <7>进程队列长度和平均负载状态输出

    sar -q

    runq-sz          运行队列的长度,等待运行的进程数量
    plist-sz         进程列表中进程和线程的数量
    ldavg-1          最后1分钟的系统平均负载
    ldavg-5          过去5分钟的系统平均负载
    ldavg-15         过去15分钟的系统平均负载
    

    <8>内存和交换空间状态输出

    sar -r

    kbmemfree          空闲的内存数量(单位为KB)
    kbmemused          已使用的内存数量,不包含内核使用的内存(单位为KB)
    %memused           已使用内存的百分数
    kbbuffers          内核缓冲区buffer,使用的内存数量(单位为KB)
    kbcached           内核高速缓存cache数据使用的内存数量(单位为KB)
    kbcommit           保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap)
    %commit            kbcommit与所有内存总量的百分比
    

    <9>系统交换活动信息输出

    sar -W

    pswpin/s           每秒系统换入的交换页面数量
    pswpout/s          每秒系统换出的交换页面数量
    

    七、sar使用实例-查看某一时间段的情况

    <1>查看凌晨1点到3点的cpu

    sar -s 01:00:00 -e 03:00:00

    <2>查看凌晨1点到3点的系统的平均负载

    若要看某时间段其他性能,加上对应选项

    sar -s 01:00:00 -e 03:00:00 -q

    <3>查看本月3号的cpu

    注意:

    • 该操作需要去查看sar的日志(第五节已经介绍一次)
    • 默认只保存一个月的
    • sar查看性能或其日志时,注意自己的使用的是12还是24小时制
    • 日志的切割是昨天晚上12点到今天12点为一天
    cd /var/log/sa/
    sar -f sa03
    

    ————————————————
    原文链接:https://blog.csdn.net/GX_1_11_real/article/details/81318197

  • 相关阅读:
    詩与胡說张爱玲
    dragscroll 鼠标拖动滚动页面 userjs
    鼠标拖动控制页面滚动 (可运用于全屏触摸设备)
    给Webbrowser 添加用户脚本
    .net 4 环境调用 .net 2 编译的DLL
    webservice远程测试显示 “测试窗体只能用于来自本地计算机的请求”
    解决WebBrowser.DocumentCompleted事件的多次调用
    能够播放地球上现有的几乎所有格式 - VLC – 支持鼠标手势的播放器
    使 WebBrowser 更简单的插入、调用执行脚本, 可安装 jQuery 脚本的 C# 开源代码 IEBrowser
    “暂时没有对您所在的地区提供下载和试听服务”的解决办法
  • 原文地址:https://www.cnblogs.com/Mrq-t/p/12922204.html
Copyright © 2020-2023  润新知