zoukankan      html  css  js  c++  java
  • Liunx学习总结(七)--系统状态查看和统计

    sar命令

    sar 是一个非常强大的性能分析工具,它可以获取系统的 cpu/等待队列/磁盘IO/内存/网络等性能指标。功能多的必然结果是选项多,应用复杂,但只要知道一些常用的选项足以。

    语法

    sar [options] [-o filename] [delay [count] ]
    

    选项

    -A:显示系统所有资源运行状况
    -b:显示磁盘IO和tranfer速率信息,和iostat的信息一样,是总体IO统计信息
    -d:显示磁盘在刷新时间间隔内的活跃情况,可以指定一个或多个设备,和-b不同的是,它显示的是单设备的IO、transfer信息。
      :建议配合-p使用显示友好的设备名,否则默认显示带主次设备号的设备名
    -P:显示指定的某颗或某几颗cpu的使用情况。指定方式为,-P 0,1,2,3或ALL。
    -u:显示每颗cpu整体平均使用情况。-u和-P的区别通过下面的示例很容易区分。
    -r:显示内存在刷新时间间隔内的使用情况
    -n:显示网络运行状态。后可接DEV/NFS/NFSD/FULL等多种参数。
      :DEV表示显示网路接口信息,NFS和NFSD分别表示显示NFS客户端服务端的流量信息,FULL表示显示所有信息。
    -q:显示等待队列大小
    -o filename:将结果存入到文件中
    delay:状态刷新时间间隔
    count:总共刷新几次
    

    安装 sar

    yum install sysstat 
    

    将性能收集工具的开关打开

    vi /etc/default/sysstat
    
    ENABLED="true"
    

    启动这个工具来收集系统性能数据:

    /etc/init.d/sysstat start
    

    统计 CPU 使用情况

    [root@VM_0_15_centos /]# sar -P ALL 1 2
    Linux 3.10.0-957.21.3.el7.x86_64 (VM_0_15_centos) 	08/23/2019 	_x86_64_	(1 CPU)
    
    01:28:19 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    01:28:20 PM     all      1.01      0.00      1.01      0.00      0.00     97.98
    01:28:20 PM       0      1.01      0.00      1.01      0.00      0.00     97.98
    
    01:28:20 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
    01:28:21 PM     all      0.00      0.00      0.00      1.00      0.00     99.00
    01:28:21 PM       0      0.00      0.00      0.00      1.00      0.00     99.00
    
    Average:        CPU     %user     %nice   %system   %iowait    %steal     %idle
    Average:        all      0.50      0.00      0.50      0.50      0.00     98.49
    Average:          0      0.50      0.00      0.50      0.50      0.00     98.49
    

    列说明:

    * CPU all 表示统计信息为所有 CPU 的平均值。
    * %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 的值持续低于 10,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。

    统计内存使用情况

    [root@VM_0_15_centos /]# sar -r 1 2
    Linux 3.10.0-957.21.3.el7.x86_64 (VM_0_15_centos) 	08/23/2019 	_x86_64_	(1 CPU)
    
    01:29:00 PM kbmemfree kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
    01:29:01 PM    172072   1710280     90.86    128960   1190316    887248     47.14   1003920    580088       308
    01:29:02 PM    169052   1713300     91.02    128964   1190316    891820     47.38   1006176    580084       376
    Average:       170562   1711790     90.94    128962   1190316    889534     47.26   1005048    580086       342
    

    列说明:

    kbmemfree:这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
    kbmemused:这个值和free命令中的used值基本一致,所以它包括buffer和cache的空间.
    %memused:物理内存使用率,这个值是kbmemused和内存总量(不包括swap)的一个百分比.
    kbbuffers和kbcached:这两个值就是free命令中的buffer和cache.
    kbcommit:保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
    %commit:这个值是kbcommit与内存总量(包括swap)的一个百分比.
    
    可用内存 = free+buffers+cached 
    已用内存 = userd-buffers-cached
    

    统计网络流量

    [root@VM_0_15_centos /]# sar -n DEV 1 2
    Linux 3.10.0-957.21.3.el7.x86_64 (VM_0_15_centos) 	08/23/2019 	_x86_64_	(1 CPU)
    
    01:29:40 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    01:29:41 PM      eth0      3.03      6.06      0.18      0.52      0.00      0.00      0.00
    01:29:41 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    01:29:41 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    01:29:42 PM      eth0      8.91     10.89      0.61      1.31      0.00      0.00      0.00
    01:29:42 PM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    Average:         eth0      6.00      8.50      0.40      0.92      0.00      0.00      0.00
    Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    

    列说明:

    rxpck/s:每秒收到的包数量
    txpck/s:每秒发送的包数量
    rxkB/s:每秒收到的数据,单位为kb
    txkB/s:每秒发送的数据,单位为kb
    rxcmp/s:每秒收到的压缩后的包数量
    txcmp/s:每秒发送的压缩后的包数量
    rxmcst/s:每秒收到的多播包数量
    

    查看队列情况

    [root@VM_0_15_centos /]# sar -q
    Linux 3.10.0-957.21.3.el7.x86_64 (VM_0_15_centos) 	08/23/2019 	_x86_64_	(1 CPU)
    

    列说明:

    runq-sz:等待队列的长度,不包括正在运行的进程
    plist-sz:任务列表中的进程数量,即总任务数
    ldavg-N:过去1分钟、5分钟、15分钟内系统的平均哎
    blocked:当前因为IO等待被阻塞的任务数量
    

    统计磁盘IO情况

    [root@VM_0_15_centos /]# sar -d -p 1 2
    Linux 3.10.0-957.21.3.el7.x86_64 (VM_0_15_centos) 	08/23/2019 	_x86_64_	(1 CPU)
    
    01:30:44 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
    01:30:45 PM       vda      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    01:30:45 PM       sr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    01:30:45 PM       DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
    01:30:46 PM       vda      1.98      0.00    150.50     76.00      0.01      4.50      3.00      0.59
    01:30:46 PM       sr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    Average:          DEV       tps  rd_sec/s  wr_sec/s  avgrq-sz  avgqu-sz     await     svctm     %util
    Average:          vda      1.00      0.00     76.00     76.00      0.00      4.50      3.00      0.30
    Average:          sr0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    

    列说明:

    tps:transfer per second,每秒的transfer速率,一次物理IO请求算一次transfer,但多次逻辑IO请求可能组合起来才算一次transfer。
    rd_sec/s:每秒读取的扇区数,扇区大小为512字节。
    wr_sec/s:每秒写入的扇区数。
    avgrq-sz:请求写入设备的平均大小,单位为扇区。(The average size (in sectors) of the requests that were issued to the device)
    avgqu-sz:请求写入设备的平均队列长度。(The average queue length of the requests that were issued to the device.)
    await:写入设备的IO请求的平均(消耗)时间,单位微秒(The average time for I/O requests issued to the device to be served.)
    svctm:不可信的列,该列未来将被移除,所以不用管
    %util:最重要的一列,显示的是设备的带宽情况。该列若接近100%,说明磁盘速率饱和了。
    
  • 相关阅读:
    负载均衡原理与实践详解 第十六篇 负载均衡网络设计 把负载均衡当作二层交换机还是三层路由器
    谈谈我对技术发展的一点感悟
    解析索引中数据列顺序的选择问题
    构建高性能.NET应用之配置高可用IIS服务器第四篇 IIS常见问题之:工作进程回收机制(上)
    关注分离的艺术(The Art of Separation of Concerns)
    如何修改.net framework
    [WPF Documents 之旅]System.Windows.Documents下的Class Diagram
    [转] 依赖注入&控制反转 oC 容器和Dependency Injection 模式(中文版)
    [WPF疑难]如何禁用窗口上的关闭按钮
    关于书写技术探讨性邮件的一点小小的建议
  • 原文地址:https://www.cnblogs.com/markLogZhu/p/11399475.html
Copyright © 2011-2022 走看看