• Linux 性能调优IO篇:工具命令篇


    磁盘 I/O

    iostat 是最常用的磁盘 I/O 性能观测工具,它提供了每个磁盘的使用率、IOPS、吞吐量等各种常见的性能指标,当然,这些指标实际上来自 /proc/diskstats。

    # -d -x表示显示所有磁盘I/O的指标

    iostat -d -x 1

    磁盘性能的衡量标准,必须要提到五个常见指标,也就是我们经常用到的,使用率、饱和度、IOPS、吞吐量以及响应时间等。这五个指标,是衡量磁盘性能的基本指标。

    • 使用率,是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。
    • 饱和度,是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。
    • IOPS(Input/Output Per Second),是指每秒的 I/O 请求数。
    • 吞吐量,是指每秒的 I/O 请求大小。
    • 响应时间,是指 I/O 请求从发出到收到响应的间隔时间。

    这些指标中,你要注意:%util ,就是我们前面提到的磁盘 I/O 使用率;r/s+ w/s ,就是 IOPS;rkB/s+wkB/s ,就是吞吐量;r_await+w_await ,就是响应时间。在观测指标时,也别忘了结合请求的大小( rareq-sz 和 wareq-sz)一起分析。

    进程IO

    pidstat -d 1

    从 pidstat 的输出你能看到,它可以实时查看每个进程的 I/O 情况,包括下面这些内容。

    • 用户 ID(UID)和进程 ID(PID) 。
    • 每秒读取的数据大小(kB_rd/s) ,单位是 KB。
    • 每秒发出的写请求数据大小(kB_wr/s) ,单位是 KB。
    • 每秒取消的写请求数据大小(kB_ccwr/s) ,单位是 KB。
    • 块 I/O 延迟(iodelay),包括等待同步块 I/O 和换入块 I/O 结束的时间,单位是时钟周期。

    iotop

    它是一个类似于 top 的工具,你可以按照 I/O 大小对进程排序,然后找到 I/O 较大的那些进程。

    安装

    wget http://guichaz.free.fr/iotop/files/iotop-0.4.4.tar.gz    
    tar zxf iotop-0.4.4.tar.gz    
    cd iotop-0.4.4
    python setup.py build    
    python setup.py install    

    其他常用命令

    实时显示正在产生I/O的进程或线程

    iotop -o

    输出5次,间隔2秒,输出到屏幕

    iotop -botq -n 5 -d 2

    dstat

    多功能系统资源统计生成工具( versatile tool for generating system resource statistics)。在获取的信息上有点类似于top、free、iostat、vmstat等多个工具的合集,官方解释为vmstat、iostat、ifstat等工具的多功能替代品。

    dstat的用法如下:

    dstat [-afv] [options..] [delay [count]]

    使用 dstat -h查看全部选项,这里不逐一列举,下面简单介绍下常用选项

    常用选项如下:

    # 直接跟数字,表示#秒收集一次数据,默认为一秒;dstat 5表示5秒更新一次
    -c,--cpu   统计CPU状态,包括 user, system, idle(空闲等待时间百分比), wait(等待磁盘IO), hardware interrupt(硬件中断), software interrupt(软件中断)等;
    -d, --disk 统计磁盘读写状态
    -D total,sda 统计指定磁盘或汇总信息
    -l, --load 统计系统负载情况,包括1分钟、5分钟、15分钟平均值
    -m, --mem 统计系统物理内存使用情况,包括used, buffers, cache, free
    -s, --swap 统计swap已使用和剩余量
    -n, --net 统计网络使用情况,包括接收和发送数据
    -N eth1,total  统计eth1接口汇总流量
    -r, --io 统计I/O请求,包括读写请求
    -p, --proc 统计进程信息,包括runnable、uninterruptible、new
    -y, --sys 统计系统信息,包括中断、上下文切换
    -t 显示统计时时间,对分析历史数据非常有用
    --fs 统计文件打开数和inodes数

    其中有两项功能很实用

    • 同时查看 CPU 和 I/O 这两种资源的使用情况,便于对比分析。
    • # 间隔1秒输出10组数据
      $ dstat 1 10
      You did not select any stats, using -cdngy by default.
      --total-cpu-usage-- -dsk/total- -net/total- ---paging-- ---system--
      usr sys idl wai stl| read  writ| recv  send|  in   out | int   csw
        0   0  96   4   0|1219k  408k|   0     0 |   0     0 |  42   885
        0   0   2  98   0|  34M    0 | 198B  790B|   0     0 |  42   138
        0   0   0 100   0|  34M    0 |  66B  342B|   0     0 |  42   135
        0   0  84  16   0|5633k    0 |  66B  342B|   0     0 |  52   177
        0   3  39  58   0|  22M    0 |  66B  342B|   0     0 |  43   144
        0   0   0 100   0|  34M    0 | 200B  450B|   0     0 |  46   147
        0   0   2  98   0|  34M    0 |  66B  342B|   0     0 |  45   134
        0   0   0 100   0|  34M    0 |  66B  342B|   0     0 |  39   131
        0   0  83  17   0|5633k    0 |  66B  342B|   0     0 |  46   168
        0   3  39  59   0|  22M    0 |  66B  342B|   0     0 |  37   134
    • 找出系统中消耗cpu、io、内存最大的进程。
    dstat --top-mem --top-io --top-cpu

    输出结果解析

    usr:用户空间的程序所占百分比;
    sys:系统空间程序所占百分比;
    idel:空闲百分比;
    wai:等待磁盘I/O所消耗的百分比;
    hiq:硬中断次数;
    siq:软中断次数;
    -- CPU使用信息统计
    
    
    read:磁盘读带宽
    writ:磁盘写带宽
    -- 磁盘使用信息统计
    
    
    recv:网络收包带宽
    send:网络发包带宽
    -- 网络使用信息统计
    
    
    in: page in(换入)
    out:page out(换出)
    -- 内存分页统计:值较大表明系统正在使用大量的交换空间,通常情况下当系统已经开始用交换空间的时候,就说明你的内存已经不够用了,或者说内存非常分散,理想情况下page in(换入)和page out(换出)的值是0 0int:中断次数 
    csw:上下文切换
    -- 其他系统信息:这一栏中较高的统计值通常表示大量的进程造成拥塞,需要对CPU进行关注。服务器一般情况下都会运行运行一些程序,所以这项总是显示一些数值。
  • 相关阅读:
    【转载】Java性能优化之JVM GC(垃圾回收机制)
    RobotFramework自动化测试框架-DatabaseLibrary库的使用(对数据库的操作)
    Linux性能分析工具top命令详解
    RobotFramework自动化测试框架-移动手机自动化测试Element Attribute Should Match关键字的使用
    RobotFramework自动化测试框架-移动手机自动化测试Get Network Connection Status和Set Network Connection Status关键字的使用
    RobotFramework自动化测试框架-移动手机自动化测试Get Element Location关键字的使用
    在linux下,怎么去查看一个运行中的程序, 到底是占用了多少内存
    RobotFramework自动化测试框架-移动手机自动化测试Click Element At Coordinates关键字的使用
    RobotFramework自动化测试框架-移动手机自动化测试Click A Point关键字的使用
    RobotFramework自动化测试框架-移动手机自动化测试Click Element关键字的使用
  • 原文地址:https://www.cnblogs.com/-wenli/p/13771665.html
Copyright © 2020-2023  润新知