当前位置:首页 > 嵌入式 > Linux阅码场
[导读]在Linux系统中作为一个普通线程是非常苦逼的。不仅NMI 、硬中断、软中断可以打断它,甚至其它普通线程也可

在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的使用和代码实现都有非常详细的讲解:




---end---



欲知详情,请下载word文档 下载文档
换一批

延伸阅读

[中兴文档] Slice 是如何实现1 1

Slice 是如何实现1 1

ic.com/weixin/tr/2021-09/23/971dbuiz942.gif">...

关键字: ic ce

[糖果Autosar] Autosar通信协议栈-AutoSAR通信模块的架构AutosarComStack001

Autosar通信协议栈-AutoSAR通信模块的架构AutosarComStack001

1 Autosar通信协议栈的概述-说到通信,我们第一想到通信的对等实体(communication peer),即发送方和接收方,这些可以看成UML中用例图的Actor; -第二想到的使用通信的use case,即消息的发送和消息的接收...

关键字: 通信协议 os 协议栈

[糖果Autosar] AutoSAR架构设计系列AutosarRteSwc001

AutoSAR架构设计系列AutosarRteSwc001

1 基于AutoSAR架构的概述1.1架构层面:功能可以细分子功能,各个子功能需要交互。-大功能可以通过Autosar组件Composition去表示;-各个子功能一般具有不可分割性,可以通过Autosar原子组件Component去表示...

关键字: os SAR

[嵌入式大杂烩] 小知识 | 嵌入式C中#pragma once的作用是什么?

小知识 | 嵌入式C中#pragma once的作用是什么?

关注「嵌入式大杂烩」,选择「星标公众号」一起进步!大家好,我是ZhengN。本次给大家分享一个C/C 的小知识——#pragma once。我之前也没用过#pragma once,直到看到同事的代码有用到,所以去了解了一下。分享一篇博文:...

关键字: ce

[Linux阅码场] 吸引住妹子的trace_event技术

吸引住妹子的trace_event技术

一天,有人报上了一个问题,发现一台服务器上空闲内存不足,slab占用了40多G,想知道什么原因,然后拉我进入在线会议远程看看。 我进入会议常规检测一番,于是想看看哪个slab占用内存比较多,直接上小脚本:...

关键字: ev ce

Linux阅码场

85 篇文章

关注

发布文章

技术子站

关闭