Windows 7 Shell: получить накопленные ошибки страницы процесса

Я хочу прочитать (накопленные) ошибки страницы процесса из оболочки Windows, чтобы решить, когда его убить. Процесс начнется динамически.

Я нашел часть убийства (например, здесь: Как автоматически отслеживать и уничтожать процесс в Windows по имени процесса), но я не нашел способа прочитать ошибки страницы. Я попытался pfmon.exe из комплектов ресурсов Windows (установленный rktools.exe, хотя он вызвал предупреждение о несовместимости) с помощью taskmgr, и он работает - я попробовал это с MathKernel (рассматриваемый процесс и после того, как я добавил его в PATH), и pfmon говорит, что это не поддерживается.

Я знаю о списке задач, но это показывает только время процессора и использование памяти.

Есть ли другой способ прочитать ошибки на странице? Может ли менеджер задач использоваться как-то автоматически?

Фон:

Это связано с моим постом о проблеме в Mathematica, для которой я не смог найти решение (я попробовал 1 ответ там). Мой скрипт запускает 8 параллельных ядер Mathematica для вычисления, которое занимает ~10 часов, а иногда один или два из них блокируются. Я уже перезапускаю их для каждого вычисления, но поведение преобладает. В настоящее время я регулярно проверяю их с помощью менеджера задач и убиваю процессы MathKernel.exe, которые накапливают много ошибок страниц. Обратите внимание, что время / загрузка процессора и использование памяти бесполезны, пока другие процессы MathKernel.exe все еще работают. Вот почему мне нужны ошибки страницы - я хочу сравнивать все 8 процессов, скажем, каждую минуту, и если у одного в 10 раз больше ошибок страницы, чем у другого, я хочу убить его.

1 ответ

Решение

Есть ли другой способ прочитать эти данные?

Вы можете использовать pslist из Windows Sysinternals:

Ключ Сокращения Памяти

Все значения памяти отображаются в килобайтах.

Pri: Priority
Thd: Number of Threads
Hnd: Number of Handles
VM: Virtual Memory
WS: Working Set
Priv: Private Virtual Memory
Priv Pk: Private Virtual Memory Peak
Faults: Page Faults
NonP: Non-Paged Pool
Page: Paged Pool
Cswtch: Context Switches

faults значение - это общее количество ошибок на странице.

Вам понадобятся идентификаторы процессов, которые вы хотите отслеживать.

Пример вывода:

> pslist -m 6272

PsList v1.4 - Process information lister
Copyright (C) 2000-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

Process memory detail for HAL:

Name                Pid      VM      WS    Priv Priv Pk   Faults   NonP Page
firefox            6272 2707156 1038508 1015532 1191600 34880695    194  596

Вы можете использовать пакетный файл или скрипт PowerShell для анализа этого вывода.

отказ

Я никоим образом не связан с Windows Sysinternals, я всего лишь конечный пользователь их программного обеспечения.

Другие вопросы по тегам