使用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內存泄漏。
