Android ION 相关信息查看方法

文章介绍了如何在Android系统中查看DMAbuffer和IONbuffer的分配情况。通过特定命令可以获取DMAbuffer的ino信息,并用lsof查找使用该缓冲区的进程PID。同时,对于IONbuffer,可以列出各heap类型及其使用状态,尤其关注system_heap的统计信息。在Android12之后,ION分配由DMA-bufheaps管理,但基本概念保持不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

查看DMA buffer 信息

查看ion buffer 的总体分配情况


分配的ION buffer 都会设置为DMA buffer,以fd的形式交给使用方, 如app, camera等。

查看ion 的使用情况,可以查看ion 的各个heap分配情况, 也可以从DMA buffer 入手查看具体使用者的信息,整合各个信息能看到是谁异常使用。 

Android 12开始, ION分配已经被DMA-buf heaps替代。 但核心还是使用 DMA buffer分享到各个进程。

查看DMA buffer 信息

1. 通过工具查看

adb shell dmabuf_dump

解析下面的文件:

/sys/kernel/debug/dma_buf/bufinfo(可能不存在)

​/sys/kernel/dmabuf/buffers(可能不存在)

/proc/pid/fdinfo //遍历/proc/pid/fdinfo目录下的fdid文件, 从/proc/pid/fd目录下下找到该fdid对应的实际文件的link。 读取该文件的大小。统计引用该文件的pid。dmsbuf文件在proc/pid/fdinfo/fdid中会有exp_name:开始的行。其中ion buffer名为"ion_dma_buf"

/proc/pid/maps: name 为/dmabuf 为dma buf。其中每行的倒数第二列为inode. 

 

2.通过系统文件查看

注: 不同的系统,android 版本一下路径可能没有。

使用如下命令, 其中带ion 字样的为ion buffer。 其中有ino项, 为dms buffer inode.  

cat /sys/kernel/debug/dma_buf/bufinfo 

使用如下命令找使用该ino的pid号: 

lsof   |grep ino

使用lsof查看某个pid打开的文件情况, 包括fd, 类型, 大小等。

lsof -p pid

也可以查看某个pid 打开的 dmsbuf

ls -l /proc/pid/fd

查看ion buffer 的总体分配情况

列出ion 各heap类型:  信息

ls -l /sys/kernel/debug/ion 

查看heap 类型为system 的使用情况: 

cat /sys/kernel/debug/ion/system/system_stats

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值