zoukankan      html  css  js  c++  java
  • Linux-IO监控

    系统级IO监控

    iostat

    先进行安装

    yum install -y sysstat
    

    iostat [ options ] [ <interval> [ <count> ] ]

    • options 操作项,
    • interval指定统计时间间隔,
    • count总共输出次数

    • -c 参数,可以用来插卡部分cpu状态信息
    [root@localhost ~]# iostat -c
    Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 	12/21/2019 	_x86_64_	(2 CPU)
    
    avg-cpu:  %user   %nice %system %iowait  %steal   %idle
               0.08    0.00    0.09    0.00    0.00   99.83
    
    • -d 参数,显示设备(磁盘)使用状态
    • -m 参数,以兆字节每秒显示统计数据,而不是以块或千字节每秒显示统计数据。显示的数据仅在内核2.4及更高版本中有效。
    • -k 参数,某些使用block为单位的列强制使用Kilobytes为单位
      -** -x 参数**,输出更多详细信息

    [root@localhost ~]# iostat -xdm 1
    Linux 3.10.0-1062.el7.x86_64 (localhost.localdomain) 	12/21/2019 	_x86_64_	(2 CPU)
    
    Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
    scd0              0.00     0.00    0.00    0.00     0.00     0.00   114.22     0.00    1.39    1.39    0.00   1.00   0.00
    sda               0.00     0.02    0.21    0.39     0.01     0.02    69.98     0.00    0.29    0.42    0.22   0.19   0.01
    dm-0              0.00     0.00    0.17    0.41     0.00     0.01    66.84     0.00    0.32    0.49    0.25   0.19   0.01
    dm-1              0.00     0.00    0.00    0.00     0.00     0.00    49.78     0.00    0.15    0.15    0.00   0.09   0.00
    
    • r/s每秒发送给设备的读请求数量
    • w/s 每秒发送给设备的的写请求数量
    • rMB/s 每秒从设备中读取多少 MBs
    • wMB/s 每秒往设备中写入多少 MBs
    • await 分发给设备的 I/O 请求的平均响应时间(单位是毫秒)
    • %util 分发给设备的 I/O 请求的运行时间所占的百分比。(设备的带宽利用率)

    %util设备饱和会发生在这个值接近 100%
    另外一种说明: 代表磁盘繁忙程度。100% 表示磁盘繁忙,0% 表示磁盘空闲。
    但是注意磁盘繁忙不代表磁盘(带宽)利用率高
    在统计时间内所有处理 I/O 时间,除以总共统计时间。例如,如果统计间隔 1 秒,该设备有 0.8 秒在处理 I/O,而 0.2 秒闲置,那么该设备的 %util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是 100% 表示设备已经接近满负荷运行了(当然如果是多磁盘,即使 %util 是 100%,因为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)

    进程级IO监控

    iotop 和 pidstat

    • iotop 顾名思义, IO 版的 top
    • pidstat 顾名思义, 统计进程(pid)的 stat,进程的 stat 自然包括进程的 IO 状况

    解决问题:

    1. 当前系统哪些进程在占用 IO,百分比是多少?
    2. 占用 IO 的进程是在读?还是在写?读写量是多少?
    [root@localhost ~]# pidstat -d 1
    [root@localhost ~]# pidstat -u -r -d -t 1    
    # -u CPU 使用率
    # -r 缺页及内存信息
    # -d IO 信息
    # -t 以线程为统计单位
    # 1  1 秒统计一次
    
    

    但是也没有办法跟业务层的 read, write 联系在一起,同时颗粒度较粗,没有办法告诉你,当前进程读写了哪些文件?耗时?大小?

    文件级IO监控

    • 文件级 IO 监控可以配合/补充”业务级和进程级” IO 分析
    • 文件级 IO 分析,主要针对单个文件,回答当前哪些进程正在对某个文件进行读写操作

    lsof 告诉你当前文件由哪些进程打开

    # 如果没有,下载
    yum install lsof
    
    # 当前目录当前由 bash 和 lsof 进程打开
    [root@localhost ~]# lsof ./
    COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
    bash     1548 root  cwd    DIR  253,0      240 33574977 .
    bash     1570 root  cwd    DIR  253,0      240 33574977 .
    lsof    42749 root  cwd    DIR  253,0      240 33574977 .
    lsof    42750 root  cwd    DIR  253,0      240 33574977 .
    
    

    lsof 命令只能回答静态的信息,并且“打开”并不一定“读取”,
    对于 cat,echo 这样的命令,打开和读取都是瞬间的,lsof 很难捕捉

    参考

    https://blog.csdn.net/zhengchaooo/article/details/80116130
    https://jaminzhang.github.io/os/Linux-IO-Monitoring-and-Deep-Analysis/

  • 相关阅读:
    combobox只读代码
    winform中相对路径和绝对路径的获取
    C#中启动外部应用程序
    C#winfrom中应用程序只启动一次代码
    测试计划详细版
    如何编写有效的测试计划
    产品经理,如何面对一句话需求?
    需求评审-软件测试最有效的阶段
    分享一套好用的功能测试用例编写框架
    selenium加载配置文件
  • 原文地址:https://www.cnblogs.com/AganRun/p/12079083.html
Copyright © 2011-2022 走看看