火焰圖中就是找不到函數(shù)名,懷疑符號(hào)被優(yōu)化
提問:yly
參與:自行車 成不曬???
你這個(gè)圖是有的內(nèi)核函數(shù)還是基本全部符號(hào)看不到,用的系統(tǒng)自帶的perf的話可以考慮下載對(duì)應(yīng)內(nèi)涵源碼,自己把perf在機(jī)器上重新編譯一下,我自己已經(jīng)遇到這個(gè)問題好幾次了
加noinline強(qiáng)制編譯器不要inline
提問:李泉
參與:廣成子 guoqiang Gang 逸 游~游~游 pwl999 乘風(fēng)破浪的凌杰
mindjet mindmanager 畫的架構(gòu)圖:
有使用atrace+prefetto+sql前端工具組合
Vmcore 分析工具
提問:游~游~游
參與:pwl999
crash
VAATools
死機(jī)后查看 Trace 日志
提問:晴天
參與:Gang ~jeff CH
crash工具支持?jǐn)U展的trace命令,如果有kdump的話,可以使用crash> trace show顯示trace日志
SOC 增加 Kdump 機(jī)制支持
參與:CH pwl999
Linux Kdump 機(jī)制詳解
??臻g的變量被踩定位
提問:Li
??臻g的變量進(jìn)入函數(shù)時(shí)不為空,到某一處就變?yōu)榭樟?,中間沒有對(duì)該變量的操作
參與:LittleEmpero 李佳龍 Gang ~jeff pwl999
大概率是運(yùn)行時(shí)棧內(nèi)存被踩了。
如果地址恒定,可以嘗試用gdb watch命令捕捉:
// 先打印這個(gè)棧變量的地址
p &stack_var
0x12345678
// 然后
watch *(long*)0x12345678
棧空間的變量,切換棧,地址就變了?可以嘗試把watch和command命令一起用,在函數(shù)入口下個(gè)斷點(diǎn),在command里下watch,這就相當(dāng)于動(dòng)態(tài)下觀測(cè)點(diǎn),這樣跑一晚上估計(jì)明天來了就看到踩內(nèi)存的現(xiàn)場(chǎng)了。
watch失效后,程序就停止了,怎么讓它繼續(xù)往下?在函數(shù)退出的地方,或者說在watch失效前的地方,再加個(gè)斷點(diǎn),在這個(gè)斷點(diǎn)的command里把觀測(cè)點(diǎn)刪掉。通常情況下,源代碼維度即使有多個(gè)返回點(diǎn),編譯成指令后,就只有一個(gè)返回點(diǎn),所有的return都會(huì)通過jxx指令跳到唯一返回點(diǎn),當(dāng)然通常情況下是這樣??梢杂胐isass指令對(duì)函數(shù)反匯編,然后看看ret指令是不是唯一的,如果ret指令是唯一的,就在ret指令前面用b*0x12345678這種語法,打一個(gè)絕對(duì)地址斷點(diǎn)。
沒有單獨(dú)delete watchpoints,del all就會(huì)把斷點(diǎn)這都刪除了。
可以試下objtrace??梢栽O(shè)置一個(gè)跟蹤點(diǎn),把一個(gè)函數(shù)參數(shù)設(shè)置為跟蹤點(diǎn),如果在其它地方訪問到(經(jīng)過了其它的函數(shù)參數(shù))會(huì)被捕捉到。Introduce objtrace trigger to trace the kernel object
objtrace
objtrace
Introduce objtrace trigger to trace the kernel object
謝歡:向linux內(nèi)核引進(jìn)object trace
gdb 錄制執(zhí)行
參與:Li LittleEmpero
rr-project
handlespeculativefault
提問:viho he參與:LittleEmpero 鄭楊
投機(jī)性缺頁異常處理
cache false sharing 定位
提問:nicolas參與:kaka 李佳龍 天空微藍(lán) pwl999
perf抓取cache miss類的event吧,再分析pc之間的關(guān)系,有沒有可能是false sharing 造成的
perf c2c
虛擬內(nèi)存增長(zhǎng)怎么分析
提問:Gang
參與:LittleEmpero rocklee viho he nicolas pwl999
感覺虛擬內(nèi)存即使泄露了應(yīng)該也沒啥風(fēng)險(xiǎn),64位系統(tǒng),虛擬地址空間大得很。不過不可否認(rèn)這肯定不正常,代碼肯定有問題。
每隔一段時(shí)間cat 一下/proc/PID/smap,然后對(duì)比之前的,先看看是哪段地址在增長(zhǎng)。是mmap忘了unmap,還是系統(tǒng)堆區(qū)在不斷增長(zhǎng),然后再具體分析。
手機(jī)上虛擬內(nèi)存可以直接看maps,結(jié)合smaps進(jìn)行分類,和對(duì)應(yīng)物理內(nèi)存大小,pc上應(yīng)該也是類似。
或許倒是可以從slab來查,到底是誰在申請(qǐng)大量虛擬內(nèi)存?vmareastructs。
Memory Overcommit
性能書籍推薦
參與:viho he guoqiang
soft lockup / hard lockup 定義
提問:游~游~游
參與:自行車 pwl999
softlockup是搶占被關(guān)了,hardlockup是中斷被關(guān)了
如果一個(gè)內(nèi)核線程關(guān)中斷(不持有鎖,只是關(guān)中斷)并且睡眠,會(huì)發(fā)生什么?
提問:viho he
參與:~jeff 逸 pwl999
關(guān)中斷的情況下, 如果發(fā)生調(diào)度,schedule()就會(huì)打開中斷,會(huì)引入中斷重入的問題,也對(duì)sched out進(jìn)程在不知情的情況下打開了中斷
huge page 對(duì)性能的提升
提問:viho he
參與:自行車 pwl999
huge page只是影響了tlb,對(duì)cache無影響吧
我們?yōu)槭裁匆?THP
Huge Page 是否是拯救性能的萬能良藥?
linux 內(nèi)核支持硬中斷的嵌套嗎?
提問:hw
參與:鄭楊 木子丶棒
Linux的中斷可以嵌套嗎?
參與:guoqiang hw 小林
pmu 和 Ftrace 是兩把鑰匙
當(dāng)你去主導(dǎo)一個(gè)基于zynq的圖像質(zhì)檢項(xiàng)目,你就會(huì)發(fā)現(xiàn),負(fù)責(zé)項(xiàng)目研發(fā)的人如果有一個(gè)全通的,會(huì)事半功倍
整個(gè)華東區(qū)未來是全世界的電動(dòng)車產(chǎn)業(yè)集群,上海需要大量這樣的人,房子都不一定能趕上這類人才的薪資增長(zhǎng)率。
AI和HPC是性能需求的推動(dòng)者。其實(shí)還有個(gè)需求是美國(guó)實(shí)體名單帶來的,比如原來7nm的處理器,美國(guó)非不讓你,你就只能28nm,怎么在28nm的芯片上跑出來更高的性能。
AI 算法書籍推薦
參與:CH guoqiang
有兩個(gè)細(xì)分方向,如果圖像就是岡薩雷斯的數(shù)字圖像處理,如果是機(jī)器學(xué)習(xí),就是周志華的西瓜書:
這一本作為通識(shí) 了解入門級(jí)來看 看全貌用的:
這一本再看具體分類:(其它的 在深入細(xì)分方向就看paper 綜述、做實(shí)驗(yàn))
再往后 往深的走,就需要補(bǔ)數(shù)學(xué)了,優(yōu)化理論等:(目前人工智能的本質(zhì)其實(shí)就是求解優(yōu)化問題,獲取次優(yōu)解)
dma-buf
參與:guoqiang viho he Peter 孫雷 Oops Wenhui
dma-buf的底層機(jī)制,安卓的ION也是基于此搭建出來的。但是ION在staging過程中受阻 ,最終upstream放棄了合入ION,而由John Stultz主領(lǐng),在同樣的dma-buf機(jī)制上,做了一個(gè)叫DMA-BUF Heaps的東西來替代ION。安卓社區(qū)也列了相應(yīng)計(jì)劃從ION遷移到DMA-BUF Heaps:LVC21-120 Moving to DMA BUF Heaps Now is the time!,從dma-buf往上,ION也好,dma-buf heaps也罷,這一整套方案就是想搞定數(shù)據(jù)在這些眾多硬件之間流轉(zhuǎn)的零拷貝難題:
啥應(yīng)用場(chǎng)景有這樣的需求呢?目前需求最大的就是圖形圖像領(lǐng)域,圖像這種大數(shù)據(jù)處理不共享太慢,dma來回搬太慢。這個(gè)圖里,7個(gè)硬件全要在同一塊數(shù)據(jù)上做讀寫。如果用拷貝、搬運(yùn)的話,想想這個(gè)性能損耗有多大,分析以后,可能還要送給GPU去繪圖(比如手機(jī)上人臉識(shí)別,打出來的那個(gè)框就是GPU繪的)。
在圖像處理的時(shí)候,比如一幀圖像,可能會(huì)經(jīng)過isp, 畸變校正,縮放裁剪,最后可能會(huì)送到ai模塊作分析 這個(gè)過程中的每個(gè)環(huán)節(jié)幾乎都是硬件來完成的,如果單純的使用dma來搬數(shù)據(jù),效率就很低了。
TEE也來做零拷貝,會(huì)不會(huì)有安全隱患?share memory本來就是暴露給linux(REE)的,本來就是安全薄弱的環(huán)節(jié)。加上Infirmation flow integrity tag checking 就可以安全的share了 Google doc怎么share 內(nèi)存就可以怎么share。
dma-buf學(xué)習(xí)分享
Destaging ION
DMA-BUF系列文章
宋寶華:世上最好的共享內(nèi)存(Linux共享內(nèi)存最透徹的一篇)
RR實(shí)時(shí)調(diào)度策略,時(shí)間片一般是多少?
提問:rocklee
參與:pwl999 viho he
Linux schedule 2、調(diào)度算法
有沒有這種變態(tài)用法?A B線程同一優(yōu)先級(jí),A線程是fifo調(diào)度,B線程是RR調(diào)度,這時(shí)系統(tǒng)怎么調(diào)度?看了一下代碼,同一優(yōu)先級(jí)是按先后順序放在同一個(gè)鏈表上的,如果當(dāng)前進(jìn)程是 FIFO 會(huì)一直跑完為止,如果當(dāng)前進(jìn)程是 RR 時(shí)間片用完換鏈表上的下一個(gè)進(jìn)程。涉及到的關(guān)鍵函數(shù)有 tasktickrt()、picknextrtentity()、enqueuert_entity()。
原文標(biāo)題:彭偉林:火焰圖、trace工具、dma-buf和圖書推薦
文章出處:【微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
芯片
+關(guān)注
關(guān)注
452文章
50206瀏覽量
420924 -
數(shù)字圖像處理
+關(guān)注
關(guān)注
7文章
103瀏覽量
18899 -
LINUX內(nèi)核
+關(guān)注
關(guān)注
1文章
316瀏覽量
21608
原文標(biāo)題:彭偉林:火焰圖、trace工具、dma-buf和圖書推薦
文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論