it-swarm-ru.tech

Отслеживание использования процессора и памяти на процесс

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

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

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

147
Eli Bendersky

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

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

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

156
Martin08

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

40
Niall

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

15
CppNoob

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

@echo off
: Rich Kreider <[email protected]>
: 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.
10
Rich Kreider

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

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

7
Ady Romantika

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

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

6
doflynn

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

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

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

2
dyasta

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

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

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

2
sean

Возможно, вы захотите взглянуть на Process Lasso .

1
maksa

Вы также можете попробовать использовать скрипт 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

1
Kaarthikeyan

Хм, я вижу, что Process Explorer может это сделать, хотя его графики не слишком удобны. Все еще ищу альтернативные/лучшие способы сделать это.

1
Eli Bendersky

Perfmon.exe встроен в Windows.

1
SaaS Developer

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

 Windows 10 Cumulative CPU time

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

1
Bryce

Я использую информацию о задачах для графика истории скорости CPU/RAM/IO . http://www.iarsn.com/taskinfo.html

Но всплески неотзывчивости, больше напоминают время прерывания из-за сбойного HD/SS диска. 

0
Terrik