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
0cpu1 394956 1cpu1 374817 2cpu1 331803 3cpu1 305250 4cpu1 315251 5cpu1 311434 6cpu1 304236 7cpu1 1180365-----------------可以看到,这个值比其他的队列偏高 8cpu1 317816 9cpu1 324039 10cpu1 301696 11cpu1 308175 12cpu1 308011 13cpu1 311117 14cpu1 302730 15cpu1 307697 16cpu1 310814 17cpu1 303113 18cpu1 304176 19cpu1 291003 20cpu1 429206 21cpu1 395612 22cpu1 352658 23cpu1 324926 24cpu1 322888 25cpu1 317867 26cpu1 307749 27cpu1 318038 28cpu1 315220 29cpu1 316902 30cpu1 314553 31cpu1 327750 32cpu1 323689 33cpu1 310986 34cpu1 319291 35cpu1 313652 36cpu1 329242 37cpu1 318131 38cpu1 314649 39cpu1 317828 40cpu1 304262 41cpu1 271454 42cpu1 233083 43cpu1 225090 44cpu1 216841 45cpu1 204718 46cpu1 210182 47cpu1 208971 48cpu1 200567 49cpu1 216085 50cpu1 205207 51cpu1 206309 52cpu1 225562 53cpu1 206230 54cpu1 205445 55cpu1 212910 56cpu1 223439 57cpu1 218819 58cpu1 201218 59cpu1 213536 60cpu1 323561 61cpu1 295333 62cpu1 256412 63cpu1 232104 64cpu1 222467 65cpu1 216440 66cpu1 223645 67cpu1 222626 68cpu1 223895 69cpu1 218320 70cpu1 221901 71cpu1 229034 72cpu1 227548 73cpu1 219187 74cpu1 216212 75cpu1 207302 76cpu1 227482 77cpu1 213950 78cpu1 209072 79cpu1 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
linux的nvme驱动需要关心的统计项相关推荐
- Linux中nvme驱动详解
NVMe离不开PCIe,NVMe SSD是PCIe的endpoint.PCIe是x86平台上一种流行的bus总线,由于其Plug and Play的特性,目前很多外设都通过PCI Bus与Host通信 ...
- 重置linux内核,Linux Kernel 驱动非授权重置统计漏洞
Linux Kernel是开放源码操作系统Linux所使用的内核,存在SysKonnect FDDI驱动非授权重置统计漏洞. 受影响系统: Linux kernel 2.6.x 不受影响系统: Lin ...
- linux kernel网络驱动
Linux Device Driver书籍(17) http://linux.chinaunix.net/techdoc/develop/2008/09/28/1035250.shtml 第 17 章 ...
- Linux内核网络设备驱动
本文首先从宏观上介绍数据包的接收过程,然后详细介绍了Linux网络设备驱动的工作过程,最后介绍网卡监控与调优,包括网络数据包总数.丢包.错包数量的相关统计. 1. 接收数据包过程概述 介绍数据包收包过 ...
- Linux服务器网卡驱动安装及故障排除(转)
Linux服务器网卡驱动安装及故障排除(转) 转自:http://www.ccw.com.cn/server/yyjq/htm2005/20050817_15OF4.htm感谢原创作者 曹江华 Lin ...
- Linux块设备驱动总结
<Linux设备驱动程序>第十六章 块设备驱动程序读书笔记 简介 一个块设备驱动程序主要通过传输固定大小的随机数据来访问设备 Linux内核视块设备为与字符设备相异的基本设备类型 Linu ...
- 支持nvme的linux_Linux nvme驱动初探
本篇研究的nvme驱动基于Linux 3.10.73 ,为什么选择这个版本呢,因为这个版本之后Linux 块层马上就换成支持多队列(可以参考Linux块层多队列之引入内核),小编的SUSE 11.3也 ...
- Linux SD卡驱动开发(五) —— SD 卡驱动分析Core补充篇
Core层中有两个重要函数 mmc_alloc_host 用于构造host,前面已经学习过,这里不再阐述:另一个就是 mmc_add_host,用于注册host 前面探测函数s3cmci_probe, ...
- linux下usb驱动配置文件,Linux环境下USB的原理、驱动和配置
随着生活水平的提高,人们对USB设备的使用也越来越多,鉴于Linux在硬件配置上尚不能全部即插即用,因此关于Linux如何配置和使用,成为困扰我们的一大问题.本文引用地址:http://www.eep ...
最新文章
- html鼠标位置采集,css – HTML – 相对于鼠标指针的工具提示位置
- Altium Designer 在pcb下导入的原件引脚是绿的
- C++ wchar_t转char
- 函数的调用过程——栈帧。
- 看过这篇数据分析,再也不要说你是凭实力单身了!
- html整人js代码大全,Fool.js恶搞整人网页特效jQuery插件
- fw150rm刷openwrt固件_迅捷FW150R刷TP741N后再刷Openwrt和DDWRT以及固件还原
- 财务自由之路读书笔记
- python 获取微信语音消息_GitHub - advancer-debug/Python_wechat: Python实现微信自动回复及接入聊天机器人...
- 企业邮箱设置,企业邮箱服务器怎么设置?
- The Truman Show
- 关于 css的一些 基本应用 可供回忆
- 计算机组成原理-存储系统
- 9.9 买礼物的艰辛 2719
- FFMPEG 显示音频频谱图
- 怎样用万用表检测贴片三极管
- 区块链到底是不是骗局
- [Unity2D/3D]实用的血条制作(第二期)
- 怎么在线录制电脑内部声音
- 什么是api应用程序接口?
热门文章
- 用MXnet实战深度学习之二:Neural art
- 图像处理(三)图像分割(1)Random Walks分割
- matlab中的containers.Map()
- Linux 开机文件系统发生错误
- 【从零开始自制CPU之学习篇03】锁存器与触发器
- Facebook 宣布开源无线设备 打造全新5G世界
- maven 工程启动找不到 Spring ContextLoaderListener 的解决办法
- Maven中如何禁止插件(plugin)在子模块(module)上执行
- JavaScript 弱类型
- oracle PL/SQL