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 1cpu 2cpu 3cpu 4cpu 5cpu 6cpu 7cpu
1180365-----------------可以看到,这个值比其他的队列偏高
8cpu 9cpu 10cpu 11cpu 12cpu 13cpu 14cpu 15cpu 16cpu 17cpu 18cpu 19cpu 20cpu 21cpu 22cpu 23cpu 24cpu 25cpu 26cpu 27cpu 28cpu 29cpu 30cpu 31cpu 32cpu 33cpu 34cpu 35cpu 36cpu 37cpu 38cpu 39cpu 40cpu 41cpu 42cpu 43cpu 44cpu 45cpu 46cpu 47cpu 48cpu 49cpu 50cpu 51cpu 52cpu 53cpu 54cpu 55cpu 56cpu 57cpu 58cpu 59cpu 60cpu 61cpu 62cpu 63cpu 64cpu 65cpu 66cpu 67cpu 68cpu 69cpu 70cpu 71cpu 72cpu 73cpu 74cpu 75cpu 76cpu 77cpu 78cpu 79cpu
由于我们是一个核一个队列,且按照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
linux的nvme驱动需要关心的统计项的更多相关文章
- linux的nvme驱动参数调优
nvme的设备,可以调优的参数比较少,相关的代码如下: blk_sysfs.c static struct queue_sysfs_entry queue_requests_entry = { .at ...
- linux 中nvme 的中断申请及处理
/** * struct irq_desc - interrupt descriptor * @irq_data: per irq and chip data passed down to chip ...
- linux lcd设备驱动剖析一
s3c2440 lcd驱动源码文件是:drivers/video/s3c2410fb.c 看驱动源码首先当然是先看入口函数,这里是s3c2410fb_init函数 [cpp] view plain? ...
- Linux FC/iSCSI存储设备管理系列(一):Linux系统设备驱动入门
Linux FC/iSCSI存储设备管理系列(一):Linux系统设备驱动入门 转载请在文首保留原文出处:EMC中文支持论坛 - https://community.emc.com/go/chines ...
- 【VS开发】【DSP开发】浅谈Linux PCI设备驱动(一)
要弄清楚Linux PCI设备驱动,首先要明白,所谓的Linux PCI设备驱动实际包括Linux PCI设备驱动和设备本身驱动两部分.不知道读者理不理解这句话,本人觉得这句话很重要,对于PCI.US ...
- linux块设备驱动之实例
1.注册:向内核注册个块设备驱动,其实就是用主设备号告诉内核这个代表块设备驱动 sbull_major = register_blkdev(sbull_major, "sbull&quo ...
- Linux 视频设备驱动V4L2最常用的控制命令
http://blog.csdn.net/shaolyh/article/details/6583226 Linux 视频设备驱动V4L2最常用的控制命令使用说明(1.02) 命令 功能 VIDIOC ...
- linux 2.6 驱动笔记(一)
本文作为linux 2.6 驱动笔记,记录环境搭建及linux基本内核模块编译加载. 环境搭建: 硬件:OK6410开发板 目标板操作系统:linux 2.6 交叉编译环境:windows 7 + v ...
- 深入理解Linux字符设备驱动
文章从上层应用访问字符设备驱动开始,一步步地深入分析Linux字符设备的软件层次.组成框架和交互.如何编写驱动.设备文件的创建和mdev原理,对Linux字符设备驱动有全面的讲解.本文整合之前发表的& ...
随机推荐
- JavaMail开发教程01开山篇
序 其实想写JavaMail这一系列的博客已经有一个月之久了,缘起是某次乱逛传智播客官网浏览到相关的视频教程,想起大学时代学过的计算机网络提到邮件相关的协议,但遗憾的是到目前为止还没有接触计算机网络编 ...
- 在开发中使用Mockito进行测试
关于单元测试的一些问题 当我们Javaweb项目中编写单元测试的时候,通常会面临一个普遍的问题:需要测试的类会有很多依赖,而这些依赖的类或者对象又会有很多别的依赖,导致我们在写单元测试的时候几乎需要把 ...
- Qt Creator简单计算器的Demo
小编在期末数据结构课设中遇到要做可视化界面的问题,特意去学习了一下Qt的用法,今天就来给大家分享一下. 我用的是Qt5.80,当然这只是一个简易的计算器Demo,,请大家勿喷. 首先我创建了一个Qt ...
- HttpRuntime.Cache .Net自带的缓存类
.Net自带的缓存有两个,一个是Asp.Net的缓存 HttpContext.Cache,一个是.Net应用程序级别的缓存,HttpRuntime.Cache. MSDN上有解释说: HttpCont ...
- 10个优秀个android项目,精选|快速开发
1.Android-FilePicker-android图片和文档选择器 项目地址 https://github.com/DroidNinja/Android-FilePicker 2.ViewPag ...
- 基于TCP协议的项目架构之Socket流传输的实现
项目背景 某银行的影像平台由于使用时间长,服务器等配置原因,老影像系统满足不了现在日益增长的数据量的需求,所以急需要升级改造.传统的影像平台使用的是Oracle数据库和简单的架构来存储数据(视频.图 ...
- iOS项目开发常用功能静态库
YHDeveloperTools iOS项目开发常用功能静态库 查看源码 功能方法: 1.字符检查 [NSString checkStringWithType:Email andTargetStrin ...
- TypeScript体验
TypeScript 在线玩 http://www.typescriptlang.org/play/index.html ts最终编译成js 网站最终还是要引用js. ts面向对象的感念更加直观, ...
- 解决api 跨域 webconfig添加节点
<system.webServer><httpProtocol><customHeaders><add name="Access-Control-A ...
- replace into 浅析之一
一 介绍 在笔者支持业务过程中,经常遇到开发咨询replace into 的使用场景以及注意事项,这里做个总结.从功能原理,性能和注意事项上做个说明.二 原理2.1 当表中存在主键但是不存在唯一建的 ...