MTK trace的分析小結:
拍照的演算法集成中導致在演算法處理程序中預覽卡頓;
分析程序與步驟:
1、首先看一下拍照的CPU loading,通過安裝對應的測驗CPU loading的apk測驗在拍照程序中loading 并不高,為此可以首先排除在演算法處理程序中并不是因為CPU loading過高造成的預覽卡頓;
2、測驗一下每次拍照的們Memory是否正常,看一看是不是演算法內部有沒存泄漏的問題(實際就存在的現象并不需要此步驟的測驗,如果是一直拍照越來越卡的程序中可以試一下,而本問題并不是越拍越卡,而是每次拍照程序中都卡);
3、分析log,首先分析拍照程序中的fps,此處通過搜尋關鍵詞是frame timer關鍵詞來檢索幀率,次關鍵詞可以看到每一幀資料在在不同階段占用的時間;
Line 40561: 09-02 12:00:39.982 705 14030 D MtkCam/StreamingPipe/Timer: [print]Frame timer [# 122/ 0][t 417][io 0][tof 0/ 0][d 0/ 0][a 43/ 1/ 41][p2nr 0/ 0/ 0][vnr 0/ 0][am 0][b 0/ 0][tpi( 1/ 0)/( 0/ 0)/( 0/ 0)][vmdp363][h 0/ 0/ 0][e 0][r 0/ 0][f 0/ 0][w 0/ 0/ 0][disp 0/ 0][async 0/ 0][p2sm 0/ 0/ 0][fps7.96/7.96/ 5/ 30]
從這個log中可以看到在此次預覽的幀率只有fps7.96,[t 417]為總共這幀資料的還在占用時間,而MDP的時間占用為363 [vmdp363],從這個log資料可以看出是演算法的內部的操作阻塞了MDP的處理;但是多次的拍照(每次都是預覽卡頓)并不是每次都能抓到類似的幀率很低的資料,有時幀率顯示正常但是預覽一直卡頓,多以在此并不能確認預覽的卡頓真是是因為MDP阻塞造成的;
4、抓取trace來分析;
首先需要抓取到一次拍照的獲取全部幀的一個程序,抓取trace程序中時間要快,按下拍照鍵預覽起來后馬上停止,因為時間久的話后面的預覽的trace會覆寫掉前面的資料;使用的是MTK提供的ftrace來抓取的;如果確認本次拍照是否抓取資料可以從關鍵詞 intent:2來判斷,2代表的是拍照,1是預覽;這比較直接簡單的知道是否取到了所有的拍照幀;
另外我發現可以從其他的trace獲取獲取資訊;

![這個拍照的有[CaptureNode::queue]關鍵詞且本次拍照的是多幀的8幀的演算法,看下capture node是否有queue出八幀資料(https://img-blog.csdnimg.cn/20200915202843952.png#pic_center)
從此處可以往后看,因為后面的是拍照后面的預覽幀資料,首先也是全域去看一下預覽的幀的資料那個地方有差異;比如此題中


以上只是我目前的分析狀態,后續進展會再更新;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/71202.html
標籤:其他
上一篇:使用海康工業相機的心路歷程(一)
