在Linux系統(tǒng)中作為一個(gè)普通線程是非常苦逼的。不僅NMI 、硬中斷、軟中斷可以打斷它,甚至其它普通線程也可以來打斷干擾到它的運(yùn)行。
如果沒有這些打斷事件,一個(gè)普通線程執(zhí)行while循環(huán),可以high過天際。這些打斷事件對(duì)一個(gè)普通線程來說,就相當(dāng)于噪音一樣的存在。
從Linux 5.14-rc1開始引入了一個(gè)新的tracer---(osnoise tracer)。就是從一個(gè)線程thread的角度把這些噪音全部詳細(xì)統(tǒng)計(jì)出來。
上圖中 在1秒內(nèi)普通線程(pid=98) 受到的各個(gè)干擾事件的次數(shù)和cpu available百分比等都可以顯示出來。
統(tǒng)計(jì)到這個(gè)程度,感覺還是不夠詳細(xì)。 可以打開osnoise對(duì)應(yīng)的trace event.
上面的interference 5說明在一個(gè)采樣周期內(nèi)被打斷了5次(包括4次中斷和一次a.out線程事件產(chǎn)生的噪音),上面的每一次打斷都有事件名稱和對(duì)應(yīng)的時(shí)間統(tǒng)計(jì):
1232+1222+1192+1262+3994882=4000242-452 (~4000242)
統(tǒng)計(jì)時(shí)間約等于4000242ns 因?yàn)榘藱z查代碼的時(shí)間時(shí)間。
代碼實(shí)現(xiàn):
在以上每個(gè)打斷事件處理函數(shù)中都插上trace event的鉤子函數(shù) 來統(tǒng)計(jì)事件的執(zhí)行時(shí)間,然后在每個(gè)cpu上運(yùn)行一個(gè)內(nèi)核線程進(jìn)行周期性統(tǒng)計(jì)。
這個(gè)強(qiáng)大的osnoise tracer使用到的技術(shù)僅僅是用到了tracer event提供的基礎(chǔ)設(shè)施。
我在閱碼場發(fā)布過一個(gè)視頻課程,對(duì)linux系統(tǒng)中各個(gè)tracer的使用和代碼實(shí)現(xiàn)都有非常詳細(xì)的講解:
編輯:jq
-
cpu
+關(guān)注
關(guān)注
68文章
11029瀏覽量
215874 -
Linux
+關(guān)注
關(guān)注
87文章
11453瀏覽量
212709 -
噪音
+關(guān)注
關(guān)注
1文章
170瀏覽量
24139 -
代碼
+關(guān)注
關(guān)注
30文章
4886瀏覽量
70219
原文標(biāo)題:Linux系統(tǒng)噪音統(tǒng)計(jì)(osnoise tracer)
文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
Linux系統(tǒng)管理的核心概念
噪音儀的作用是什么?一文為你介紹
Linux權(quán)限管理基礎(chǔ)入門

精密空調(diào)—精密空調(diào)噪音擾人?看降噪音妙招!

深入探討Linux系統(tǒng)中的動(dòng)態(tài)鏈接庫機(jī)制

Linux根文件系統(tǒng)的掛載過程
如何構(gòu)建Linux根文件系統(tǒng)
SystemView上下文統(tǒng)計(jì)窗口識(shí)別阻塞原因
深入探討Linux的進(jìn)程調(diào)度器

深入探究石英可編程 DXO/VCXO 振蕩器 SWPQ201 系列(10MHz 至 1500 MHz)

功放機(jī)源線接音箱消除噪音的方法與技巧
深入探究 MEMS LVCMOS 振蕩器 SiT1602 系列 52 種標(biāo)準(zhǔn)頻率
SPC統(tǒng)計(jì)過程控制系統(tǒng)解決方案

評(píng)論