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, я всего лишь конечный пользователь их программного обеспечения.