当前位置: 首页 > 科技观察

linux系统噪声统计(OsnoiseTracer),不懂?

时间:2023-03-15 16:37:14 科技观察

在Linux系统中很难成为一个普通的线程。不仅NMI、硬中断、软中断可以打断它,就连其他普通线程也可以打断干扰它的运行。如果没有这些中断事件,一个执行while循环的普通线程可以高高在上。这些中断事件对于普通线程来说相当于噪声。自Linux5.14-rc1以来引入了一种新的跟踪器---(osnoisetracer)。就是从一个thread线程的角度来详细统计所有这些噪音。上图中可以显示1秒内普通线程(pid=98)收到的干扰事件数和cpu可用百分比。在这个层面上,统计的还不够详细。可以开启osnoise对应的trace事件。上面的干扰5表示在一个采样周期内被中断了5次(包括4次中断和一个a.out线程事件产生的噪声),并且上面的每个中断都有一个事件名称和对应的时间统计:1232+1222+1192+1262+3994882=4000242-452(~4000242)统计时间约等于4000242ns,因为包含了校验代码的时间。代码实现:在上述每个中断事件处理函数中插入trace事件钩子函数,统计事件的执行时间,然后在每个cpu上运行一个内核线程进行周期性统计。这个强大的osnoisetracer使用技术只使用tracer事件提供的基础设施。