Отслеживание использования процессора и памяти на процесс - PullRequest
152 голосов
/ 16 сентября 2008

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

Есть ли способ (в Windows) отслеживать историю использования процессора и памяти для какого-либо процесса. Например. Я начну отслеживать «firefox» и через час или около того увижу график использования процессора и памяти за этот час.

Я ищу либо готовый инструмент, либо программный способ для достижения этой цели.

Ответы [ 14 ]

157 голосов
/ 16 сентября 2008

Просто введите perfmon в Start > Run и нажмите ввод. Когда окно Performance открыто, нажмите на знак +, чтобы добавить новые счетчики на график. Счетчики - это разные аспекты работы вашего ПК, которые по сходству сгруппированы в группы, называемые «Объект производительности».

Для своих вопросов вы можете выбрать объекты производительности «Процесс», «Память» и «Процессор». Затем вы можете увидеть эти счетчики в режиме реального времени

Вы также можете указать утилиту для сохранения данных о производительности для последующего контроля. Для этого выберите «Журналы и оповещения производительности» на левой панели. (Он находится прямо под консолью System Monitor, которая предоставляет нам вышеупомянутые счетчики. Если его там нет, нажмите «Файл»> «Добавить / удалить оснастку», нажмите «Добавить» и выберите «Журналы и оповещения производительности» в списке ".) В разделе" Журналы и оповещения производительности "создайте новую конфигурацию мониторинга в разделе" Журналы счетчиков ". Затем вы можете добавить счетчики, указать частоту выборки, формат журнала (двоичный или простой текст) и местоположение журнала. *

40 голосов
/ 16 сентября 2008

Process Explorer может отображать общее время процессора, затраченное процессом, а также график истории для процесса.

16 голосов
/ 04 ноября 2011

Используя perfmon.exe, я попытался использовать счетчик «Private Bytes» в разделе «Process» для отслеживания использования памяти, и он хорошо работает.

10 голосов
/ 09 мая 2012

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

@echo off
: Rich Kreider <rjk@techish.net>
: report processor time for given process until process exits (could be expanded to use a PID to be more
: precise)
: Depends:  typeperf
: Usage:  foo.cmd <processname>

set process=%~1
echo Press CTRL-C To Stop...
:begin
for /f "tokens=2 delims=," %%c in ('typeperf "\Process(%process%)\%% Processor Time" -si 1 -sc 1 ^| find /V "\\"') do (
if %%~c==-1 (
goto :end
) else (
echo %%~c%%
goto begin
)
)

:end
echo Process seems to have terminated.
7 голосов
/ 16 сентября 2008

Я согласен, perfmon.exe позволяет вам добавлять счетчики (щелкните правой кнопкой мыши на правой панели) для любого процесса, который вы хотите отслеживать.

Объект производительности: процесс Отметьте «Выбрать экземпляры из списка» и выберите Firefox.

6 голосов
/ 16 сентября 2008

WMI - это инструментарий управления Windows, и он встроен во все последние версии Windows. Он позволяет программно отслеживать такие вещи, как использование процессора, дисковый ввод-вывод и использование памяти.

Perfmon.exe является интерфейсом GUI для этого интерфейса и может отслеживать процесс, записывать информацию в журнал и позволяет анализировать журнал по факту. Это не самая элегантная программа в мире, но она выполняет свою работу.

2 голосов
/ 16 мая 2018

Вы также можете попробовать с помощью сценария C # / Perl / Java получить данные об использовании с помощью команд WMI, и ниже приведены шаги для этого.

Нам нужно выполнить 2 запроса WMI Select и применить формулу загрузки CPU%

1. Чтобы получить общее количество логических процессов

select NumberOfLogicalProcessors from Win32_ComputerSystem

2. Чтобы получить значения PercentProcessorTime, TimeStamp_Sys100NS (была применена формула использования ЦП для получения фактического процента использования) и минимума WorkingSetPrivate (RAM) 2 раза с интервалом ожидания 1 секунда

select * from Win32_PerfRawData_PerfProc_Process where IDProcess=1234

3. Применить формулу загрузки% процессора

CPU%= ((p2-p1)/(t2-t1)*100)/NumberOfLogicalProcessors

p2 указывает PercentProcessorTime, извлеченный во второй раз, а p1 указывает PercentProcessorTime, извлеченный в первый раз, t2 и t1 для TimeStamp_Sys100NS.

Пример Perl-кода для этого можно найти по ссылке http://www.craftedforeveryone.com/cpu-and-ram-utilization-of-an-application-using-perl-via-wmi/

Эта логика применяется ко всем языкам программирования, которые поддерживают запросы WMI

2 голосов
/ 07 января 2013

Хотя я не пробовал это, ProcDump кажется лучшим решением.

Описание с сайта:

ProcDump - это утилита командной строки, основной целью которой является мониторинг приложения для пиков ЦП и создание аварийных дампов во время пика, которые администратор или разработчик может использовать для определения причины пика. ProcDump также включает в себя мониторинг зависания окна (используя то же определение зависания окна, что и в Windows и диспетчере задач), мониторинг необработанных исключений и может генерировать дампы на основе значений счетчиков производительности системы. Он также может служить общей утилитой дампа процесса, которую вы можете встроить в другие сценарии.

2 голосов
/ 26 сентября 2010

Process Lasso больше предназначен для автоматизации процессов и оптимизации классов приоритетов, а не графиков. Тем не менее, предлагает историю использования ЦП для каждого процесса (отображается на графике в виде белой линии), но НЕ предлагает историю использования памяти для каждого процесса.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я являюсь автором Process Lasso, но на самом деле я не одобряю его здесь - поскольку есть лучшие решения (perfmon - лучший).

Лучшая вещь - это монитор ресурсов и производительности Windows Vista +. Он может отслеживать использование процессором, памятью, сетью и диском доступов процессами с течением времени. Это отличная утилита для системной информации, которая должна была быть создана давно. Если я не ошибаюсь, он может отслеживать процессорный процесс и использование памяти для каждого процесса с течением времени (среди всего перечисленного).

1 голос
/ 04 октября 2018

В Windows 10 диспетчер задач может отображать суммарные часы работы процессора. Просто перейдите на вкладку «История приложений» и «Удалить историю использования». Теперь оставьте все запущенным на час или два:

Windows 10 Cumulative CPU time

Что это НЕ делает, так это разбивает использование в браузерах по вкладкам. Часто неактивные вкладки выполняют огромную работу, каждая открытая вкладка использует энергию и замедляет работу вашего ПК.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...