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

264
Kab

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

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

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

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

Фон:

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

2

1 ответ на вопрос

2
DavidPostill

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

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

Спасибо ДэвидПостилл! Я попробовал, и он делает то, что я хочу. Я опубликую свой пакетный файл в другом вопросе, на который я ссылаюсь. Kab 6 лет назад 0
Мне также не нужно использовать PID. Я могу просто использовать "pslist -m -nobanner MathKernel", и он найдет все процессы. Kab 6 лет назад 0
@Kab Верно. Мой ответ был просто иллюстрацией. Вы должны идентифицировать процессы как-то ... DavidPostill 6 лет назад 0