• io利用率100%问题


    iostat -mx 1 dm-60 dm-61 dm-62 dm-63 dm-64 dm-65 dm-66 dm-67

    Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util

    dm-60 6.00 0.00 235.00 0.00 118.03 0.00 1028.63 0.40 1.69 1.69 0.00 0.74 17.45
    dm-61 0.00 0.00 231.50 0.00 112.55 0.00 995.71 0.38 1.63 1.63 0.00 0.70 16.30
    dm-62 0.00 0.00 1349.00 0.00 662.08 0.00 1005.14 122.07 92.08 92.08 0.00 0.59 79.10
    dm-63 0.50 0.00 1143.00 0.00 560.10 0.00 1003.57 357.50 271.83 271.83 0.00 0.87 100.00
    dm-64 0.00 0.00 1268.00 0.00 623.26 0.00 1006.66 151.34 115.45 115.45 0.00 0.62 79.10
    dm-65 0.00 0.00 1288.00 0.00 633.29 0.00 1006.98 156.79 121.89 121.89 0.00 0.63 81.10
    dm-66 0.00 0.00 230.50 0.00 112.05 0.00 995.54 0.38 1.66 1.66 0.00 0.71 16.35
    dm-67 0.00 0.00 241.50 0.00 117.05 0.00 992.65 0.39 1.61 1.61 0.00 0.70 17.00

    svctm  值很小,有一块盘的io利用率达到了100%。

    查看iostat的manpage,

    svctm
    The average service time (in milliseconds) for I/O requests that were issued to the device. Warning! Do not trust this field any more. This field will be removed in a future
    sysstat version.

    发现该指标已经不具备参考性了,怎么判断我这块100%利用率的硬盘,耗时情况怎么样呢,写了个脚本如下:

    #!/bin/bash
    
    blktrace -d /dev/$1 -o hh -w 20
    blkparse -i hh -d $1.blktrace.bin
    btt -i $1.blktrace.bin -o /dev/shm/$1-caq
    

      

    一个I/O请求进入block layer之后,可能会经历下面的过程:

    • Remap: 可能被DM(Device Mapper)或MD(Multiple Device, Software RAID) remap到其它设备
    • Split: 可能会因为I/O请求与扇区边界未对齐、或者size太大而被分拆(split)成多个物理I/O
    • Merge: 可能会因为与其它I/O请求的物理位置相邻而合并(merge)成一个I/O
    • 被IO Scheduler依照调度策略发送给driver
    • 被driver提交给硬件,经过HBA、电缆(光纤、网线等)、交换机(SAN或网络)、最后到达存储设备,设备完成IO请求之后再把结果发回。

    采样了20s,看到底哪里比较忙。取数据如下:

    [root@localhost bak]# vi dm-63-caq
    
    ==================== All Devices ====================
    
    ALL MIN AVG MAX N
    --------------- ------------- ------------- ------------- -----------
    Q2Qdm 0.000000025 0.001386351 0.204286857 3553
    Q2Cdm 0.001132298 0.104383169 0.264029949 3554
    
    Q2G 0.000000261 0.000003114 0.001671993 3425
    G2I 0.000000437 0.000053202 0.003102351 3411
    Q2M 0.000000726 0.000001618 0.000004214 129
    I2D 0.000000443 0.000224963 0.014763260 3425
    M2D 0.000000720 0.000284257 0.008655580 115
    D2C 0.001126306 0.104102819 0.254061182 3554
    

      

    可以看到D2C这一行,已经达到了平均104ms的单个io消耗,而这个是可以衡量硬件指标的。

    由于dm-63是一块sas的ssd设备,正常情况下的1143次/s的读,还不应该达到瓶颈,考虑到空间占用也没有达到60%以上,不应该性能这么差。硬件指标偏低,更换硬盘后解决。

    水平有限,如果有错误,请帮忙提醒我。如果您觉得本文对您有帮助,可以点击下面的 推荐 支持一下我。版权所有,需要转发请带上本文源地址,博客一直在更新,欢迎 关注 。
  • 相关阅读:
    struct/enum/union加typedef与不加typedef
    拷贝构造函数、拷贝运算符、析构函数
    TextQuery程序
    动态内存-动态数组
    动态内存
    动态内存
    matlab文件处理
    [leetcode]_Best Time to Buy and Sell Stock I && II
    [leetcode]_Valid Palindrome
    [leetcode]_Pascal's Triangle II
  • 原文地址:https://www.cnblogs.com/10087622blog/p/7301242.html
Copyright © 2020-2023  润新知