第50讲 Perfetto 内存分析之分析Dmabuf内存

本讲是Android Camera性能分析专题的第50讲,我们介绍Perfetto内存分析之使用Perfetto来分析Dmabuf内存。

更多资源:

资源 描述
在线课程 极客笔记在线课程
知识星球 星球名称:深入浅出Android Camera
星球ID: 17296815
Wechat 极客笔记圈

什么是DMABUF

dmabuf 的出现就是为了解决各个驱动之间 buffer 共享的问题,它本质上是 buffer 与 file 的结合,即 dmabuf 既是块物理 buffer,又是个 Linux file。

buffer 是内容,file 是媒介,只有通过 file 这个媒介才能实现同一 buffer 在不同驱动之间的流转。

什么是DMABUF

  • exporter: 分配 buffer 的模块

  • importer/user:使用 buffer 的模块

通过命令行dump dmabuf

dmabuf_dump是一个可执行文件,接收参数调用libdmabufinfo.a的接口完成dump功能,代码在:system/memory/libmeminfo/libdmabufinfo/tools/

包含如下功能:

  1. Dump整个系统DMA-BUF per-buffer, per-exporter (dmabuf_dump -b),在kernel版本>= 5.10上生效。

  2. Dump整个系统的dmabuf info (dmabuf_dump)

  3. Dump某个PID的dmabuf info (dmabuf_dump <****pid****>)

  4. 以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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Android Camera性能分析