在Linux系统中作为一个普通线程是非常苦逼的。不仅NMI 、硬中断、软中断可以打断它,甚至其它普通线程也可以来打断干扰到它的运行。
如果没有这些打断事件,一个普通线程执行while循环,可以high过天际。这些打断事件对一个普通线程来说,就相当于噪音一样的存在。
从Linux 5.14-rc1开始引入了一个新的tracer---(osnoise tracer)。就是从一个线程thread的角度把这些噪音全部详细统计出来。

上图中 在1秒内普通线程(pid=98) 受到的各个干扰事件的次数和cpu available百分比等都可以显示出来。
统计到这个程度,感觉还是不够详细。 可以打开osnoise对应的trace event.

上面的interference 5说明在一个采样周期内被打断了5次(包括4次中断和一次a.out线程事件产生的噪音),上面的每一次打断都有事件名称和对应的时间统计:
1232+1222+1192+1262+3994882=4000242-452 (~4000242)
统计时间约等于4000242ns 因为包含了检查代码的时间时间。
代码实现:
在以上每个打断事件处理函数中都插上trace event的钩子函数 来统计事件的执行时间,然后在每个cpu上运行一个内核线程进行周期性统计。
这个强大的osnoise tracer使用到的技术仅仅是用到了tracer event提供的基础设施。
我在阅码场发布过一个视频课程,对linux系统中各个tracer的使用和代码实现都有非常详细的讲解:
编辑:jq
-
cpu
+关注
关注
68文章
11332浏览量
225994 -
Linux
+关注
关注
88文章
11822浏览量
219604 -
噪音
+关注
关注
1文章
172浏览量
24598 -
代码
+关注
关注
30文章
4977浏览量
74420
原文标题:Linux系统噪音统计(osnoise tracer)
文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
深入探究LM3280评估板:设计、应用与注意事项
Linux内核的“心跳”:jiffies如何为系统计时?
内核配置项引发网络性能下降的深度剖析
【「Linux 设备驱动开发(第 2 版)」阅读体验】+读深入理解Linux内核内存分配
MAX97003:高效低噪音频子系统的卓越之选
深入探究 SN65LVELT23:一款高性能的电平转换器
深入Linux内核:进程调度的核心逻辑与实现细节
华纳云服务器Linux系统电源管理与节能优化配置方法
Linux系统中网络配置详解
电机常见的噪音、振动问题及解决方法
Linux系统管理的核心概念
噪音仪的作用是什么?一文为你介绍
Linux权限管理基础入门
深入探究Linux系统噪音统计(osnoise tracer)
评论