zoukankan      html  css  js  c++  java
  • linux的nvme驱动需要关心的统计项

    blk-mq-sysfs.c生成了一些其他的nvme的统计项,

    有多少个online的cpu,在驱动加载的时候会默认生成多少个队列,除非内存不足或者在保留内核中,则会减少。

    [root@localhost mq]# ls
    0 10 12 14 16 18 2 21 23 25 27 29 30 32 34 36 38 4 41 43 45 47 49 50 52 54 56 58 6 61 63 65 67 69 70 72 74 76 78 8
    1 11 13 15 17 19 20 22 24 26 28 3 31 33 35 37 39 40 42 44 46 48 5 51 53 55 57 59 60 62 64 66 68 7 71 73 75 77 79 9

    随便进入一个队列,可以看到如下的打印:

    [root@localhost mq]# cd 0
    [root@localhost 0]# ls
    active  cpu0  cpu_list  dispatched  pending  queued  run  tags

    比如我们要查看nvme3这个设备的io提交情况:

     for i in {0..79} ;do echo $i"cpu";cat /sys/block/nvme3n1/mq/$i/dispatched|awk 'NR==2{print}';done

    0cpu
           1    394956
    1cpu
           1    374817
    2cpu
           1    331803
    3cpu
           1    305250
    4cpu
           1    315251
    5cpu
           1    311434
    6cpu
           1    304236
    7cpu
           1    1180365-----------------可以看到,这个值比其他的队列偏高
    8cpu
           1    317816
    9cpu
           1    324039
    10cpu
           1    301696
    11cpu
           1    308175
    12cpu
           1    308011
    13cpu
           1    311117
    14cpu
           1    302730
    15cpu
           1    307697
    16cpu
           1    310814
    17cpu
           1    303113
    18cpu
           1    304176
    19cpu
           1    291003
    20cpu
           1    429206
    21cpu
           1    395612
    22cpu
           1    352658
    23cpu
           1    324926
    24cpu
           1    322888
    25cpu
           1    317867
    26cpu
           1    307749
    27cpu
           1    318038
    28cpu
           1    315220
    29cpu
           1    316902
    30cpu
           1    314553
    31cpu
           1    327750
    32cpu
           1    323689
    33cpu
           1    310986
    34cpu
           1    319291
    35cpu
           1    313652
    36cpu
           1    329242
    37cpu
           1    318131
    38cpu
           1    314649
    39cpu
           1    317828
    40cpu
           1    304262
    41cpu
           1    271454
    42cpu
           1    233083
    43cpu
           1    225090
    44cpu
           1    216841
    45cpu
           1    204718
    46cpu
           1    210182
    47cpu
           1    208971
    48cpu
           1    200567
    49cpu
           1    216085
    50cpu
           1    205207
    51cpu
           1    206309
    52cpu
           1    225562
    53cpu
           1    206230
    54cpu
           1    205445
    55cpu
           1    212910
    56cpu
           1    223439
    57cpu
           1    218819
    58cpu
           1    201218
    59cpu
           1    213536
    60cpu
           1    323561
    61cpu
           1    295333
    62cpu
           1    256412
    63cpu
           1    232104
    64cpu
           1    222467
    65cpu
           1    216440
    66cpu
           1    223645
    67cpu
           1    222626
    68cpu
           1    223895
    69cpu
           1    218320
    70cpu
           1    221901
    71cpu
           1    229034
    72cpu
           1    227548
    73cpu
           1    219187
    74cpu
           1    216212
    75cpu
           1    207302
    76cpu
           1    227482
    77cpu
           1    213950
    78cpu
           1    209072
    79cpu
           1    219765

    由于我们是一个核一个队列,且按照nvme的io提交策略,在那个cpu上提交的io,在配置了rq_affinity为2的情况下,则肯定在那个cpu

    上完成,这样的话,偏高的那个cpu的iowait将会比其他的盘要高,因为它接受的提交次数最多。

    对于应用来说,一般使用nvme的时候都进行了绑核,这样,找出对应绑核的线程,可以strace出它为什么提交的io次数偏多。

    0cpu       13949561cpu       13748172cpu       13318033cpu       13052504cpu       13152515cpu       13114346cpu       13042367cpu       111803658cpu       13178169cpu       132403910cpu       130169611cpu       130817512cpu       130801113cpu       131111714cpu       130273015cpu       130769716cpu       131081417cpu       130311318cpu       130417619cpu       129100320cpu       142920621cpu       139561222cpu       135265823cpu       132492624cpu       132288825cpu       131786726cpu       130774927cpu       131803828cpu       131522029cpu       131690230cpu       131455331cpu       132775032cpu       132368933cpu       131098634cpu       131929135cpu       131365236cpu       132924237cpu       131813138cpu       131464939cpu       131782840cpu       130426241cpu       127145442cpu       123308343cpu       122509044cpu       121684145cpu       120471846cpu       121018247cpu       120897148cpu       120056749cpu       121608550cpu       120520751cpu       120630952cpu       122556253cpu       120623054cpu       120544555cpu       121291056cpu       122343957cpu       121881958cpu       120121859cpu       121353660cpu       132356161cpu       129533362cpu       125641263cpu       123210464cpu       122246765cpu       121644066cpu       122364567cpu       122262668cpu       122389569cpu       121832070cpu       122190171cpu       122903472cpu       122754873cpu       121918774cpu       121621275cpu       120730276cpu       122748277cpu       121395078cpu       120907279cpu       1219765

    水平有限,如果有错误,请帮忙提醒我。如果您觉得本文对您有帮助,可以点击下面的 推荐 支持一下我。版权所有,需要转发请带上本文源地址,博客一直在更新,欢迎 关注 。
  • 相关阅读:
    js 常用方法
    Request.UrlReferrer
    批处理定时打开一个网页
    js基础知识总结:函数
    .NET DataTable转换为JSON格式的字符串
    .NET解析xml字符串,通过反射给实体类对象赋值,获取实体类数据列表
    .NET错误提示之:无法更新EntitySet“TableName”因为它有一个DefiningQuery
    python中安装web.py
    pycharm中运行flask项目安装flask
    jmeter--查看结果数中响应数据部分乱码
  • 原文地址:https://www.cnblogs.com/10087622blog/p/8065424.html
Copyright © 2011-2022 走看看