В чем смысл пуламон отрицательных чисел? - PullRequest
2 голосов
/ 12 марта 2019

Я использую poolmon из Win 10 SDK для анализа утечек памяти, я запускаю его сразу после выгрузки драйвера. Моя командная строка

poolmon.exe -s -e -g -r -n poolmondump.txt

Определение аргумента от poolmon /?

-s                  Display session pool
-n [Logfile]        Take a pool snapshot
                    Logfile maybe specified, default is poolsnap.log
-g [PoolTagFile]    Display driver information using PoolTagFile
                    If PoolTagFile is not specified
                    use 'pooltag.txt' from current directory
-e                  Display totals
-r                  Print memory summary information

Часть вывода

 Tag  Type     Allocs         Frees    Diff   Bytes    Per Alloc    Mapped_Driver
  SIFP Paged 245366784   2359304  243007480      -1         17       [MyDriver.sys]
  SIFP Nonp          7         7         0       -1         -1       [MyDriver.sys]

Иногда встречается отрицательное Diff

 Tag  Type     Allocs         Frees    Diff   Bytes    Per Alloc    Mapped_Driver
 NweN Paged    529879   4784171  -4254292      -1          1        [MyDriver.sys]
 PBDN Paged        43        66       -23       1          0        [MyDriver.sys]

Как это понять? Как с этим бороться? Я пытаюсь переименовать теги, но каждый день появляется что-то новое.
Это происходит только на одной из виртуальных машин, используемых при настройке теста.

1 Ответ

0 голосов
/ 24 марта 2019

В Windows существует драйвер PoolMan , это:

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

Разработчики и тестеры драйверов часто используют PoolMon для обнаружения утечек памяти когда они создают новый драйвер, изменяют код драйвера или подчеркивают Водитель. Вы также можете использовать PoolMon на каждом этапе тестирования, чтобы просмотреть модели распределения и свободных операций водителя, а также раскрыть, как много памяти пула, используемой драйвером в любой момент времени.

Вот команды :

 poolmon [/iTag] [/xTag] [/c [LocalTagFile]] [/g [PoolTagFile]] [/s[TSSessionID]] [ /p | /p /p ] [/e] [/( | /)]  [/t | /a| /f| /d | /b| /m] [/l] [/n [File]] [/? | /h]

Пояснение:

Параметры

/ i Отображает только выделения с указанным тегом пула. Вы можете иметь несколько параметров / i в команде PoolMon. Не вводите пробел между / i и аргументом Tag.

/ x Исключает выделения с указанным тегом из дисплея. Вы может иметь несколько параметров / x в команде PoolMon. Не вводите пробел между / x и аргументом Tag.

Tag Указывает шаблон пула или шаблон тега пула. Теги пула с учетом регистра. Аргумент Tag может включать звездочку () для представляет ноль или более экземпляров любого символа или знак вопроса (? *) для представления одного экземпляра любого символа. Не начинать тег со звездочкой.

/ c Добавляет столбец на дисплей (Mapped_Driver) со списком драйверов на локальный компьютер, который использует каждый тег пула. Эта функция поддерживается только в 32-разрядных версиях Windows.

LocalTagFile Определяет путь и имя файла локального тега, a форматированный текстовый файл, содержащий список драйверов на локальном компьютер, и значения тегов, которые они назначают. Этот файл данных источник для столбца Mapped_Driver, который появляется при использовании / c параметр. По умолчанию используется localtag.txt.

Если вы используете параметр / c, но не указываете значение для LocalTagFile, и PoolMon не находит файл localtag.txt в текущий каталог, PoolMon генерирует файл localtag.txt путем сканирования драйверы на локальном компьютере (% SystemRoot% \ System32 \ Drivers * .sys).

/ g Добавляет столбец к отображению (Mapped_Driver) со списком Windows компоненты и часто используемые драйверы, которые присваивают каждый тег.

PoolTagFile Указывает путь и имя файла отформатированного текстового файла. который перечисляет имена компонентов Windows и часто используемых драйверов и значения тегов, которые они назначают. Этот файл является источником данных для Столбец Mapped_Driver, который появляется при использовании параметра / g.

По умолчанию это файл pooltag.txt, предоставленный Microsoft. Pooltag.txt входит в подкаталог Tools \ Other пакета драйверов Windows (WDK).

/ s Отображает выделения из пулов сеансов служб терминалов.

TSSessionID Отображает только выделения из указанного пула сеансов. Не вводите пробел между параметром / s и TSSessionID аргумент.

/ p Отображает только выделения из невыгружаемого пула.

/ p / p Отображает только выделения из выгружаемого пула.

/ e Отображение итогов пула. Итоги отображаются в нижней части дисплей.

/ (или /) Включает режим сортировки при смене. С / (или /), PoolMon сортирует по изменению значения (распределение, свободные операции и байт) вместо значения. Изменение каждого значения отображается в скобки после значения.

Используйте с / a, / f, / b или / m. Например, poolmon / a сортирует отображение по количеству распределений, а poolmon / (/ a сортирует отображение по изменение количества выделений.

Левая и правая скобка имеют одинаковые символыэффект и может использоваться взаимозаменяемо.

/ t Сортировка в алфавитном порядке по имени тега. Это значение по умолчанию.

/ a Сортирует теги по количеству выделений.

/ f Сортирует теги по количеству бесплатных операций.

/ d Сортирует теги по разнице между распределением байтов и байтов освобождена.

/ b Сортирует теги по используемым байтам.

/ m Сортирует теги по байтам на распределение.

/ l Выключение подсветки. По умолчанию PoolMon выделяет значения, которые изменились с момента последнего обновления.

/ n Сохраняет снимок вывода PoolMon в файл вместо отображая его в командном окне. Вы можете включить другую командную строку параметры для настройки вывода.

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

Файл Указывает имя и местоположение файла снимка. По умолчанию is poolsnap.log.

/? или / h Отображает синтаксис командной строки. /? и / ч параметры имеют тот же эффект и может использоваться взаимозаменяемо.

...