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

水平有限,如果有错误,请帮忙提醒我。如果您觉得本文对您有帮助,可以点击下面的 推荐 支持一下我。版权所有,需要转发请带上本文源地址,博客一直在更新,欢迎 关注 。
原文地址:https://www.cnblogs.com/10087622blog/p/8065424.html