Помогите разобраться с выгружаемым пулом
От: Yuske  
Дата: 03.12.07 18:15
Оценка:
Уже сгуглился, но так и не разобрался, какое отношение выгружаемый пул имеет к каждому процессу в системе. Если я правильно все понял, выделять память в выгружаемом пуле можно только в режиме ядра (ф-ции ExAllocatePool...). И выгружаемый пул проецируется в виртуальное пространство каждого процесса, т.е. один выгружаемый пул на ВСЕ процессы.
Если предположить что это так, что означает столбец в Диспетчере задач «Выгружаемый пул»??? В нем для каждого процесса различные значения. Как так если пул один для всех??? Поправьте пожалуйста, наверное я что-то напутал
Re: Помогите разобраться с выгружаемым пулом
От: Maxim S. Shatskih Россия  
Дата: 04.12.07 12:16
Оценка: 3 (1)
Y>Уже сгуглился, но так и не разобрался, какое отношение выгружаемый пул имеет к каждому процессу в системе.

Никакого. Это kernel memory, не привязанная к процессу.

Y>Если я правильно все понял, выделять память в выгружаемом пуле можно только в режиме

>ядра (ф-ции ExAllocatePool...).

Естественно. В других ОС этот вызов называется kmalloc.

Y>И выгружаемый пул проецируется в виртуальное пространство каждого процесса,


Никуда он не проецируется, как и само ядро. Просто в адресах каждого процесса выделен регион, изначально одинаково отображаемый у всех процессов, в котором сидит ядро и его данные и код, в том числе пулы. Доступ туда возможен только из ядра.

Y>т.е. один выгружаемый пул на ВСЕ процессы.


Ну да, как и одно ядро.

Y>Если предположить что это так, что означает столбец в Диспетчере задач «Выгружаемый пул»???


Кажется, таки есть вызов типа ExAllocatePoolWithQuotaTag, при этом на блочок пула ставится пометка, какой процесс аллоцировал. Скорее всего, в диспетчере задач это и показывается.

Другое дело, что почти никакие драйвера этим вызовом не пользуются.
Занимайтесь LoveCraftом, а не WarCraftом!
Re[2]: Помогите разобраться с выгружаемым пулом
От: Yuske  
Дата: 04.12.07 19:37
Оценка:
Спасибо за пояснения
Правда, пробовал использовать ExAllocatePoolWithQuotaTag, но счетчик выгружаемого пула для процесса не изменился?! Поэкспериментирую с этим еще, если кто-то использовал ExAllocatePoolWithQuotaTag на практике — напишите, буду признателен.
Re: Помогите разобраться с выгружаемым пулом
От: Yuske  
Дата: 04.12.07 19:59
Оценка:
Сейчас бьюсь с утечкой в выгружаемом пуле.
Ситуация такова: драйвер с тегом "Pp" постоянно выделяет память в выгр. пуле (~20 Mb за сутки). Определил при мониторинге poolmon'ом. Как определить имя этого драйвера??? Запуск poolmon'а с ключом /c результата не дал. Может есть другие утилиты позволяющие ето сделать? Или кто сталкивался с подобным, тег "Pp" присутствует в "чистой" ОС. Наверное это работа стандартного драйвера.
Re[2]: Помогите разобраться с выгружаемым пулом
От: Unmanaged Россия ICQ 476611995
Дата: 04.12.07 20:10
Оценка:
Y>Наверное это работа стандартного драйвера.

Нет
STATUS_INVALID_DEVICE_REQUEST
Re[3]: Помогите разобраться с выгружаемым пулом
От: Yuske  
Дата: 05.12.07 06:56
Оценка:
Здравствуйте, Unmanaged, Вы писали:

Y>>Наверное это работа стандартного драйвера.


U>Нет


Да, в списке тегов я "Pp" не нашел. Как можно определить какому драйверу принадлежит этот тег?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.