使用4.14版本的内核,ion debug的接口相对于老版本4.9内核发生了变化。4.9版本的内核的ion debug接口在/sys/kernel/debug/ion/clients/和/sys/kernel/debug/ion/heaps/两个目录下,4.14版本已经没有了这两个目录。4.14版本增加了/sys/kernel/debug/dma_buf/dmaprocs节点来导出各进程的ion内存使用情况。
下面以camera为例来看看在4.14版本上如何查看ion内存使用信息。
首先获得要查询进程的PID,我们通过进程名称,在ps命令的输出中查找:
:/ # ps -A | grep camera
cameraserver 708 1 749220 47176 binder_ioctl_write_read 0 S android.hardware.camera.provider@2.4-service_64
cameraserver 939 1 39152 18524 binder_ioctl_write_read 0 S cameraserver
输出显示进程android.hardware.camera.provider@2.4-service_64的PID号为708.
然后,在/sys/kernel/debug/dma_buf/dmaprocs节点中查找该PID进程所占用的内存情况:
:/ # cat /sys/kernel/debug/dma_buf/dmaprocs | grep 708
provider@2.4-se (PID 708) size: 205448
输出显示进程名为provider@2.4-se(这是截短的进程名),PID为708,总共使用ion的size为205448,单位为K。
在测试过程中,我们可以通过这种方法来监控该进程的ion内存占用变化情况,判断是否出现ion内存泄漏。