繁体   English   中英

在 Linux 中找出占用 CMA 的内容(连续 Memory 分配)

[英]Finding out what's taking up the CMA (Contiguous Memory Allocation) in Linux

肯定有东西占用了CMA缓冲区,但我不知道是什么。

# cat /proc/meminfo | grep -i cma
CmaTotal:         262144 kB
CmaFree:            1272 kB

系统消息几乎没有显示:

# dmesg | grep -i cma
[    0.000000] cma: Reserved 256 MiB at 0x00000000c0000000

我已经为cma启用了debugfs ,但我还没有弄清楚如何使用它:

/sys/kernel/debug/cma/cma-reserved# ls
alloc  base_pfn  bitmap  count  free  maxchunk  order_per_bit  used

我不确定如何或是否可以找出使用 CMA 区域(我自己非常想知道),但我认为我已经弄清楚如何使用 debugfs。

您正在访问的 /sys/kernel/debug/cma/cma-reserved 目录中的文件包含有关 CMA 区域的信息,以页框号 (PFN) 和页数表示。

例如,如果您cat /sys/kernel/debug/cma/cma-reserved/base_pfn ,您将看到 CMA 区域开始的物理 memory 地址的 PFN。

类似地,文件countusedmaxchunk包含为 CMA 区域保留的页数、当前正在使用的页数以及当前可分配的最大页数。 将它们的内容与系统的 PAGE_SIZE 相乘,以获得以字节为单位的数量。

allocfree不可读,但您可以使用它们手动保留最多 maxchunk 数量的页面并释放任何先前保留的区域,使用:

echo X > /sys/kernel/debug/cma/cma-reserved/alloc

或者

echo X > /sys/kernel/debug/cma/cma-reserved/free

分别。

bitmap是另一个可读文件,其中包含...一个 bitmap 已使用或未使用的页面。

还要检查: https://www.kernel.org/doc/html/latest/admin-guide/mm/cma_debugfs.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM