zoukankan      html  css  js  c++  java
  • Linux 系统性能分析工具 sar

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以
    从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、
    进程活动及IPC有关的活动等。本文主要以CentOS 6.3 x64系统为例,介绍sar命令。

    格式
    sar [options] [-A] [-o file] t [n]

    参数 说明
    t 为采样间隔,默认是秒
    n 为采样次数,默认是1
    -o file 表示将命令结果以二进制格式存放在文件中,file是文件名
    -A 所有报告的总和
    -u 输出CPU使用情况的统计信息
    -v 输出inode,文件和其他内核表的统计信息
    -d 输出每一个块设备的活动信息
    -r 输出内存和交换空间的统计信息
    -b 显示I/O和传送速率的统计信息
    -a 文件读写情况
    -c 输出进程统计信息,每秒创建的进程数
    -R 输出内存页面的统计信息
    -y 终端设备活动情况
    -w 输出系统交换活动信息

    CPU 资源监控

    sar -u  -o test 8 4
    Linux 2.6.32-358.el6.x86_64 (nagios_s1)         11/12/15        _x86_64_        (1 CPU)
    
    16:07:18        CPU     %user     %nice   %system   %iowait    %steal     %idle
    16:07:26        all      0.00      0.00      0.00      0.00      0.00    100.00
    16:07:34        all      0.00      0.00      0.00      0.00      0.00    100.00
    16:07:42        all      0.00      0.00      0.00      0.00      0.00    100.00
    16:07:50        all      0.00      0.00      0.00      0.00      0.00    100.00
    Average:        all      0.00      0.00      0.00      0.00      0.00    100.00
    
    %user   : 显示在用户级别(application)运行使用CPU总时间的百分比。
    %nice   : 显示在用户级别,用于nice操作(进程优先级切换),所占用CPU总时间的百分比
    %system : 在核心级别(kernel) 运行所使用CPU总时间的百分比。
    %iowait : 显示用于等待I/O操作占用CPU总时间的百分比。
    %steal  : 管理程序(hypervisor)为另一虚拟进程提供服务而等待虚拟CPU的百分比。
    %idle   : 显示CPU空闲时间占用CPU总时间的百分比。
    

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

    如果要查看二进制文件 test 中的内容,需键入如下sar命令:
    sar -u -f test


    监控inode、文件和其他内核表

    sar -v 8 4
    Linux 2.6.32-358.el6.x86_64 (nagios_s1)         11/12/15        _x86_64_        (1 CPU)
    
    16:32:40    dentunusd   file-nr  inode-nr    pty-nr
    16:32:48         5296       288      7672         2
    16:32:56         5296       288      7672         2
    16:33:04         5296       288      7672         2
    16:33:12         5296       288      7672         2
    Average:         5296       288      7672         2
    
    dentunusd : 目录高速缓存中未被使用的条目数量
    file-nr   : 文件句柄(file handle) 的使用数量
    inode-nr  : 索引节点句柄(inode handle) 的使用数量
    pty-nr    : 使用的pty数量
    

    监控内存和交换空间

    sar -r 8 4
    Linux 2.6.32-358.el6.x86_64 (nagios_s1)         11/12/15        _x86_64_        (1 CPU)
    
    16:41:15    kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit
    16:41:23       301116    200320     39.95     10688    147824     56648      2.77
    16:41:31       301116    200320     39.95     10688    147824     56648      2.77
    16:41:39       301116    200320     39.95     10688    147824     56648      2.77
    16:41:47       301116    200320     39.95     10688    147824     56648      2.77
    Average:       301116    200320     39.95     10688    147824     56648      2.77
    
    -r     Report memory utilization statistics.  The following values are displayed:
    
    kbmemfree : 这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
    kbmemused : 这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
    %memused  : 这个值是kbmemused和内存总量(不包括swap)的一个百分比.
    kbbuffers :这个值就是free命令中的buffer.
    kbcached  :这个值就是free命令中的cache.
    kbcommit  :保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
    %commit   :这个值是kbcommit与内存总量(包括swap)的一个百分比.
    

    内存分页监控

    sar -B 8 4
    Linux 2.6.32-358.el6.x86_64 (nagios_s1)         11/13/15        _x86_64_        (1 CPU)
    
    11:08:48   pgpgin/s pgpgout/s fault/s majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s %vmeff
    11:08:56    0.00     0.00      4.25    0.00      9.25      0.00     0.00      0.00     0.00
    11:09:04    0.00     0.00      5.25    0.00     10.75      0.00     0.00      0.00     0.00
    11:09:12    0.00     0.00      3.75    0.00      8.89      0.00     0.00      0.00     0.00
    11:09:20    0.00     0.00      3.75    0.00     10.11      0.00     0.00      0.00     0.00
    Average:    0.00     0.00      4.25    0.00      9.75      0.00     0.00      0.00     0.00
    
    Report paging statistics.  The following values are displayed:
    
    pgpgin/s:   表示每秒从磁盘或SWAP置换到内存的字节数(KB)
    pgpgout/s:  表示每秒从内存置换到磁盘或SWAP的字节数(KB)
    fault/s:    每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
    majflts/s:  每秒钟产生的主缺页数
    pgfree/s:   每秒被放入空闲队列中的页个数
    pgscank/s:  每秒被kswapd扫描的页个数
    pgscand/s:  每秒直接被扫描的页个数
    pgsteal/s:  每秒钟从cache中被清除来满足内存需要的页个数
    %vmeff:     每秒清除的页(pgsteal)占总扫描页(pgscank+pgscand)的百分比
    

    什么是缺页
    当CPU请求一个不在RAM中的内存页时,会发生缺页,比如我们从内存读取/写入数据,而数据未在内存,此时都会发生缺页.

    major表示主缺页,主缺页是要求输入/输出到磁盘的缺页.
    minor表示次缺页,次缺页是任何其它的缺页.


    I/O和传送速率监控

     sar -b 8 4
    Linux 2.6.18-308.el5xen (tlsgzsit01)    11/13/2015
    
    12:04:30 PM       tps      rtps      wtps   bread/s   bwrtn/s
    12:04:38 PM     10.92      0.00     10.92      0.00    116.44
    12:04:46 PM      1.75      0.00      1.75      0.00     53.13
    12:04:54 PM      2.23      0.00      2.23      0.00     61.46
    12:05:02 PM      1.25      0.00      1.25      0.00     24.94
    Average:         4.03      0.00      4.03      0.00     63.92
    
    
    tps     : 每秒钟物理设备的 I/O 传输总量
    rtps    : 每秒钟从物理设备读入的数据总量
    wtps    : 每秒钟向物理设备写入的数据总量
    bread/s : 每秒中从物理设备读入的数据量,单位为 块/s
    bwrtn/s : 每秒中从物理设备写入的数据量,单位为 块/s
    

    查看运行队列中的进程数、系统上的进程大小、平均负载等

    sar 与其它命令相比,它能查看各项指标随时间变化的情况;

    sar -q
    Linux 3.10.0-123.el7.x86_64 (localhost.localdomain)     11/02/2017      _x86_64_        (2 CPU)
    
    12:00:01 AM   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15   blocked
    12:10:01 AM         0       150      0.00      0.01      0.05         0
    12:20:01 AM         0       150      0.00      0.01      0.05         0
    12:30:01 AM         2       150      0.00      0.01      0.05         0
    12:40:01 AM         0       150      0.00      0.01      0.05         0
    12:50:01 AM         0       150      0.00      0.01      0.05         0
    01:00:01 AM         1       150      0.00      0.01      0.05         0
    01:10:01 AM         1       150      0.00      0.01      0.05         0
    01:20:01 AM         0       150      0.00      0.01      0.05         0
    01:30:01 AM         0       150      0.00      0.01      0.05         0
    01:40:01 AM         1       150      0.00      0.01      0.05         0
    01:50:01 AM         1       150      0.00      0.01      0.05         0
    02:00:01 AM         0       150      0.00      0.01      0.05         0
    02:10:01 AM         0       150      0.00      0.01      0.05         0
    02:20:01 AM         0       150      0.00      0.01      0.05         0
    02:30:01 AM         0       150      0.00      0.01      0.05         0
    
    runq-sz:运行队列的长度(等待运行的进程数)
    plist-sz:进程列表中进程(processes)和线程(threads)的数量
    ldavg-1:最后1分钟的系统平均负载
    ldavg-5:过去5分钟的系统平均负载
    ldavg-15:过去15分钟的系统平均负载
    
  • 相关阅读:
    查看 lib 库信息
    评委打分(C++ 容器综合练习)
    二阶段12.16
    对搜狗输入法的使用心得
    二阶段12.14
    二阶段12.13
    二阶段12.12
    典型用户描述
    水王(课堂练习)
    一阶段11.21
  • 原文地址:https://www.cnblogs.com/klvchen/p/8945991.html
Copyright © 2011-2022 走看看