Linux系统噪音统计(osnoise tracer)

2021年11月20日 阅读数:7
这篇文章主要向大家介绍Linux系统噪音统计(osnoise tracer),主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

在Linux系统中做为一个普通线程是很是苦逼的。不只NMI 、硬中断、软中断能够打断它,甚至其它普通线程也能够来打断干扰到它的运行。
linux


若是没有这些打断事件,一个普通线程执行while循环,能够high过天际。这些打断事件对一个普通线程来讲,就至关于噪音同样的存在。微信


从Linux 5.14-rc1开始引入了一个新的tracer---(osnoise tracer)。就是从一个线程thread的角度把这些噪音所有详细统计出来。函数



上图中 在1秒内普通线程(pid=98) 受到的各个干扰事件的次数和cpu available百分比等均可以显示出来。spa


统计到这个程度,感受仍是不够详细。 能够打开osnoise对应的trace event..net


上面的interference 5说明在一个采样周期内被打断了5次(包括4次中断和一次a.out线程事件产生的噪音),上面的每一次打断都有事件名称和对应的时间统计:线程

1232+1222+1192+1262+3994882=4000242-452 (~4000242) 3d

统计时间等于4000242ns 由于包含了检查代码的时间时间。
视频


代码实现:
blog

在以上每一个打断事件处理函数中都插上trace event的钩子函数 来统计事件的执行时间,而后在每一个cpu上运行一个内核线程进行周期性统计.事件


这个强大的osnoise tracer使用到的技术仅仅是用到了tracer event提供的基础设施。


我在阅码场发布过一个视频课程,对linux系统中各个tracer的使用和代码实现都有很是详细的讲解:


---end---

本文分享自微信公众号 - 相遇Linux(LinuxJeff)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

上一篇: LeNet剪枝