Выяснение того, что занимает CMA (непрерывное выделение памяти) в Linux

#linux

#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
 

Я включил debugfs for cma , но я еще не понял, как его использовать:

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

Ответ №1:

Я не уверен, как или если вы можете узнать, кто использует области CMA (я бы сам очень хотел знать), но я думаю, что я понял, как использовать debugfs.

Файлы в каталоге /sys/kernel/debug/cma / cma-reserved, который вы загружаете, содержат информацию о областях CMA, выраженную в номерах страниц (PFN) и количестве страниц.

Если вы cat /sys/kernel/debug/cma/cma-reserved/base_pfn , например, увидите PFN адреса физической памяти, с которого начинается область CMA.

Аналогично, файлы 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