Linux系统噪音统计(Osnoise Tracer),不了解吗?

系统 Linux
在Linux系统中作为一个普通线程是非常苦逼的。不仅NMI 、硬中断、软中断可以打断它,甚至其它普通线程也可以来打断干扰到它的运行。

 [[420168]]

在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
相关推荐

2020-07-07 07:34:29

RedisSDS数据结构

2020-04-20 10:55:57

大数据人工智能技术

2020-09-16 07:59:40

数组内存

2020-11-30 06:27:35

Java泛型Object

2021-07-12 07:01:39

AST前端abstract sy

2023-02-12 21:54:32

架构AI元宇宙

2011-03-29 15:44:41

对日软件外包

2019-10-30 09:25:58

NginxApache 服务器

2019-04-03 09:10:35

Rediskey-value数据库

2019-11-21 15:08:13

DevOps云计算管理

2014-06-16 10:03:54

2010-08-19 10:12:34

路由器标准

2017-12-26 11:37:32

云原生CNCF容器

2010-05-25 10:22:48

郭台铭富士康

2013-11-11 10:07:43

静态路由配置

2018-07-16 09:00:32

LinuxBash数组

2015-06-05 09:52:41

公有云风险成本

2017-03-13 17:25:00

移动支付技术支撑易宝

2017-11-17 18:43:38

云技术

2017-04-01 09:22:38

Android开发知识点
点赞
收藏

51CTO技术栈公众号