本讲是android camera性能分析专题的第50讲,我们介绍perfetto内存分析之使用perfetto来分析dmabuf内存。
更多资源:
资源 | 描述 |
---|---|
在线课程 | |
知识星球 | 星球名称:深入浅出android camera 星球id: 17296815 |
极客笔记圈 |
什么是dmabuf
dmabuf 的出现就是为了解决各个驱动之间 buffer 共享的问题,它本质上是 buffer 与 file 的结合,即 dmabuf 既是块物理 buffer,又是个 linux file。
buffer 是内容,file 是媒介,只有通过 file 这个媒介才能实现同一 buffer 在不同驱动之间的流转。
- exporter: 分配 buffer 的模块
-
importer/user:使用 buffer 的模块
通过命令行dump dmabuf
dmabuf_dump是一个可执行文件,接收参数调用libdmabufinfo.a的接口完成dump功能,代码在:
包含如下功能:
- dump整个系统dma-buf per-buffer, per-exporter (dmabuf_dump -b),在kernel版本>= 5.10上生效。
-
dump整个系统的dmabuf info (dmabuf_dump)
-
dump某个pid的dmabuf info (dmabuf_dump <****pid****>)
-
以table[buffer x process]方式呈现dmabuf info (dmabuf_dump -a)
视频实战演示dump
通过perfetto抓取dmabuf dump
traceconfig
data_sources: {
config {
name: "linux.ftrace"
ftrace_config {
ftrace_events: "ion/ion_stat"
ftrace_events: "dmabuf_heap/dma_heap_stat"
ftrace_events: "kmem/ion_heap_grow"
ftrace_events: "kmem/ion_heap_shrink"
}
}
}
视频实战讲解trace