#linux #linux-kernel #memory-management
#linux #linux-ядро #управление памятью
Вопрос:
Вопрос: Как я могу определить, сколько памяти используется виртуальной машиной моего процесса (либо когда я нахожусь в пользовательском пространстве, либо в ядре)?
Я дам краткое объяснение того, что я делаю, чтобы вы могли понять, почему я спрашиваю об этом. Я запускаю на своей машине Linux несколько процессов и один драйвер (модуль ядра). Память процессов заблокирована (не подлежит замене), поэтому я хочу убедиться, что память, потребляемая модулем вместе с процессами, не составляет 90% от моей общей физической памяти. Чтобы уменьшить накладные расходы на malloc, я использую mmap. что мне действительно нужно знать, так это то, сколько памяти на самом деле потребляют мои процессы, а не то, сколько они запросили, и, насколько я могу судить, мне не хватает только накладных расходов VMA на любое распределение.
Ответ №1:
После копания я нашел ответ:
Пока я нахожусь в драйвере, я могу использовать current-> mm-> map_count, чтобы узнать текущее количество виртуальных машин для текущего процесса. Умножьте это на sizeof (struct vm_area_struct), и это даст мне то, что я искал. Отсюда учет довольно прост.