肯定有什么东西占用了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发布于 2021-05-27 04:00:13
我不确定您是否能找出谁在使用CMA区域(我自己非常想知道),但我想我已经知道如何使用debugfs了。
您要使用的/sys/kernel/debug/ CMA /cma-reserved目录中的文件包含有关CMA区域的信息,以页帧编号(PFN)和页数表示。
例如,如果您使用cat /sys/kernel/debug/cma/cma-reserved/base_pfn,您将看到CMA区域开始的物理内存地址的PFN。
同样,文件count、used和maxchunk包含为CMA区域保留的页数、当前正在使用的页数以及当前可用于分配的最大页数。将它们的内容与系统的PAGE_SIZE相乘,以获得以字节为单位的数量。
alloc和free是不可读的,但您可以使用它们手动保留最大页数,并释放之前保留的任何区域,方法是:
echo X > /sys/kernel/debug/cma/cma-reserved/alloc或
echo X > /sys/kernel/debug/cma/cma-reserved/free分别使用。
bitmap是另一个可读文件,它包含...已使用或未使用页面的位图。
还可以查看:https://www.kernel.org/doc/html/latest/admin-guide/mm/cma_debugfs.html
https://stackoverflow.com/questions/65202674
复制相似问题