当前位置: 首页 > news >正文

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

最近做了一次实验 用cat /proc/interrupts 抓取nvme的中断次数 ,来验证开启了中断聚合后,中断次数是否会减少
1 首先我们先看下盘的默认值是多少

[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):128Number 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):0usec Aggregation Threshold(THR):1[debian~]#

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

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 抓取一下中断
下面这个命令会把所有队列的中断次数打印出来

cat/proc/interrupts|grepnvme9|awk'{sum=0; for(i=2;i<=NF-3;i++) sum+=$i; print sum}'>irq_before.txtsleep30cat/proc/interrupts|grepnvme9|awk'{sum=0; for(i=2;i<=NF-3;i++) sum+=$i; print sum}'>irq_after.txt

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

5 重复上边的步骤 可以验证下不同IO场景下,设置不同的聚合数,中断增加的次数
我这里设置0x000109和0x001090来做验证

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

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

http://www.jsqmd.com/news/212532/

相关文章:

  • 这是一份简洁实用的 CSS 开发速成手册
  • 大数据分析中的文本挖掘:非结构化数据决策
  • SpringBoot+Vue 教师工作量管理系统平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • GEO优化服务商技术全景评估:从原理到实践的专业导航
  • ICLR 2026 Workshop 征稿开启:迈向 Lifelong Agent 终身智能新范式
  • GEO优化服务报价与全功能解析
  • 【毕业设计】SpringBoot+Vue+MySQL 在线文档管理系统平台源码+数据库+论文+部署文档
  • 网上点餐系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • 3分钟定位OA系统GC瓶颈:DeepFlow全栈可观测平台实战解析
  • 基于时间片划分的提醒算法设计与实现
  • 芯科科技出展CES 2026并展出如何加速互联智能的未来
  • 基于SpringBoot+Vue的网上超市设计与实现管理系统设计与实现【Java+MySQL+MyBatis完整源码】
  • Java Web 网上点餐系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • 微软星标25万!AI Agents入门教程爆火,零基础也能轻松构建智能体
  • SpringBoot中的DAO以及DTO、VO和Converter的介绍
  • SpringBoot+Vue 网上购物商城系统管理平台源码【适合毕设/课设/学习】Java+MySQL
  • 开源问卷平台DWSurvey开发配置记录
  • 前后端分离甘肃非物质文化网站系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程
  • 教师工作量管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
  • 通用语——基于实体感知的机器翻译方法,用于知识图谱上的问答
  • 【Java 开发日记】我们来说一下 synchronized 与 ReentrantLock 的
  • 引导内存分配器 Buddy 分配器的关系
  • Buddy分配器
  • AI模型容器化部署实战
  • Slab,不连续页,buddy分配器与内存映射
  • Linux内存映射
  • 物理内存组织架构与Buddy分配器关系分析
  • 【数据分享】2025年全国范围各城市的公交路线及站点数据(分省/分城市)
  • 期货反向跟单—从小白到高手进阶历程 六十三(研究人性不是重点)
  • Agent2Agent (A2A) Protocol( A2A 协议)简介、组件