Накладные расходы на виртуальные машины в Linux

#linux #linux-kernel #memory-management

#linux #linux-ядро #управление памятью

Вопрос:

Вопрос: Как я могу определить, сколько памяти используется виртуальной машиной моего процесса (либо когда я нахожусь в пользовательском пространстве, либо в ядре)?

Я дам краткое объяснение того, что я делаю, чтобы вы могли понять, почему я спрашиваю об этом. Я запускаю на своей машине Linux несколько процессов и один драйвер (модуль ядра). Память процессов заблокирована (не подлежит замене), поэтому я хочу убедиться, что память, потребляемая модулем вместе с процессами, не составляет 90% от моей общей физической памяти. Чтобы уменьшить накладные расходы на malloc, я использую mmap. что мне действительно нужно знать, так это то, сколько памяти на самом деле потребляют мои процессы, а не то, сколько они запросили, и, насколько я могу судить, мне не хватает только накладных расходов VMA на любое распределение.

Ответ №1:

После копания я нашел ответ:

Пока я нахожусь в драйвере, я могу использовать current-> mm-> map_count, чтобы узнать текущее количество виртуальных машин для текущего процесса. Умножьте это на sizeof (struct vm_area_struct), и это даст мне то, что я искал. Отсюда учет довольно прост.