2

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

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

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

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

Фон:

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

1 ответ1

2

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .