cat /proc/interrupts 验证nvme 中断聚合

最近做了一次实验 用cat /proc/interrupts 抓取nvme的中断次数 ,来验证开启了中断聚合后,中断次数是否会减少

1 首先我们先看下盘的默认值是多少

bash 复制代码
[debian~]#nvme get-feature /dev/nvme9 -f 0x7 -H  #查看支持的最大队列
get-feature:0x7 (Number of Queues), Current value:0x7f007f
        Number of IO Completion Queues Allocated (NCQA): 128
        Number of IO Submission Queues Allocated (NSQA): 128
[debian~]#nvme get-feature /dev/nvme9 -f 0x8 -H  #查看当前的聚合数 0000默认没有打开中断
get-feature:0x8 (Interrupt Coalescing), Current value:00000000
        Aggregation Time     (TIME): 0 usec
        Aggregation Threshold (THR): 1
[debian~]#

2 在没有打开中断的情况下 我们可以跑下FIO 10 分钟,然后抓取30S的前后数据,看看中断增加了多少次,FIO可以用随机读,因为随机读的IOPS最高,中断次数也最高,效果明显

bash 复制代码
fio --name=job111 --filename=/dev/nvme9n1  --ioengine=libaio --direct=1 --thread=1 --numjobs=8 --iodepth=64 --rw=randread  --bs=4k --runtime=600 --time_based=1 --size=100% --norandommap=1 --randrepeat=0 --group_reporting 

3 抓取一下中断

下面这个命令会把所有队列的中断次数打印出来

bash 复制代码
cat /proc/interrupts |grep nvme9 | awk '{sum=0; for(i=2;i<=NF-3;i++) sum+=$i; print sum}'  >irq_before.txt
sleep 30 
cat /proc/interrupts |grep nvme9 | awk '{sum=0; for(i=2;i<=NF-3;i++) sum+=$i; print sum}'  >irq_after.txt

4 如下图所示 最终计算在30s 内 所有的队列增加的中断次数是33706609

5 重复上边的步骤 可以验证下不同IO场景下,设置不同的聚合数,中断增加的次数

我这里设置0x000109和0x001090来做验证

bash 复制代码
[debian~]#nvme set-feature /dev/nvme9 -f 0x8 -v 0x000109
set-feature:08 (Interrupt Coalescing), value:0x000109
[debian~]#nvme get-feature /dev/nvme9 -f 0x8 -H
get-feature:0x8 (Interrupt Coalescing), Current value:0x000109

[debian~]#nvme set-feature /dev/nvme9 -f 0x8 -v 0x001090
set-feature:08 (Interrupt Coalescing), value:0x001090
[debian~]#nvme get-feature /dev/nvme9 -f 0x8 -H
get-feature:0x8 (Interrupt Coalescing), Current value:0x001090
        Aggregation Time     (TIME): 1600 usec
        Aggregation Threshold (THR): 145

6 统计最终的结果如下:

不过有一点就是 你如果想知道哪种聚合数能让nvme 在满配的情况下跑出最大的型能,真的需要我们自己取调试了,设置0x001090 的时候,我看到盘的性能有显著下降

相关推荐
就叫飞六吧16 小时前
Java “跨平台”指的是(.class 字节码)跨平台,而不是指 JVM 这个软件本身跨平台
服务器·笔记
故事不长丨16 小时前
C#File文件操作全解析:从基础用法到异常处理
服务器·开发语言·visualstudio·c#·文件操作·io流·file
超级大福宝16 小时前
在 Linux 发行版中安装 Times New Roman 字体
linux·运维·服务器
汽车仪器仪表相关领域16 小时前
半自动精准检测,降本增效之选——NHD-1050半自动远、近光检测仪项目实战分享
服务器·人工智能·功能测试·安全·可用性测试
ZeroNews内网穿透17 小时前
本地部署 Payara Server 公网访问
运维·服务器·网络协议·安全
阿巴~阿巴~17 小时前
从帧到包:深入解析链路层与局域网通信的核心机制
服务器·网络·网络协议·tcp/ip·智能路由器·mac·数据链路层
rfidunion17 小时前
ubuntu下使用qemu模拟ARM(一)-------安装samba服务器
服务器·arm开发·ubuntu
回忆是昨天里的海17 小时前
dockerfile-镜像分层机制
linux·运维·服务器
翼龙云_cloud17 小时前
阿里云渠道商:阿里云弹性伸缩有哪几种
服务器·阿里云·云计算