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