news 2026/4/30 12:14:19

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 的时候,我看到盘的性能有显著下降

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:48:08

Buddy分配器

Buddy分配器 1. 内核在基本的伙伴分配器基础改进扩展 支持内存节点和区域&#xff0c;称为分区的伙伴分配器&#xff08;zoned buddy allocator&#xff09;。 为了预防内存碎片&#xff0c;把物理页框通过移动性分组。 针对分配单页做了性能优化&#xff0c;为了减少处理器锁的…

作者头像 李华
网站建设 2026/4/26 9:19:14

【项目中的经验总结】

知识点一&#xff1a;多电源域下 Dummy Gate 的连接问题 1. 背景说明 在 MOS 管版图中&#xff0c;dummy gate 常用于满足工艺对栅极密度、对称性和边缘效应的要求。 Dummy gate 虽不参与功能&#xff0c;但仍具有栅氧层及栅-源 / 栅-漏寄生电容&#xff0c;不能视为“完全无效…

作者头像 李华
网站建设 2026/4/25 19:11:27

线性规划:库存切割问题

原文&#xff1a;towardsdatascience.com/linear-programming-the-stock-cutting-problem-dc6ba3bf3de1 本文深入探讨了线性规划如何解决一个称为“库存切割”的具体问题。在深入探讨本系列中的线性规划细节之前&#xff0c;我想提供一个具体的例子。本文将使用未在本文中定义的…

作者头像 李华
网站建设 2026/5/1 4:59:53

国抽对接规则

1、国抽可以同步下来 待填报之前的样品信息&#xff08;包括正在接样状态&#xff09;。 2、国抽可以同步下来 待填报且已维护基础表的项目信息&#xff08;基础表维护按照报送分类B及细类维护&#xff0c;或特殊样品的项目维护&#xff09;。

作者头像 李华
网站建设 2026/4/23 15:04:21

[特殊字符]️_开发效率与运行性能的平衡艺术[20260107171443]

作为一名经历过无数项目开发的工程师&#xff0c;我深知开发效率与运行性能之间的平衡是多么重要。在快节奏的互联网行业&#xff0c;我们既需要快速交付功能&#xff0c;又需要保证系统性能。今天我要分享的是如何在开发效率和运行性能之间找到最佳平衡点的实战经验。 &#…

作者头像 李华
网站建设 2026/5/1 5:46:09

c++ 17的std::variant对标c#的哪个类型

C# 的 System.Object、dynamic 和 C# 7.0 引入的 System.ValueTuple 以及 System.OneOf 等都可以实现类似功能&#xff0c;但最接近 C std::variant 语义的是&#xff1a;1. 官方方案&#xff1a;System.Object 和模式匹配&#xff08;最接近&#xff09;基础用法csharp// 类似…

作者头像 李华