Отслеживание использования ЦП и памяти на каждый процесс

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

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

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

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

Ответ 4

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

@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.

Ответ 5

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

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

Ответ 6

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

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

Ответ 7

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

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

Лучше всего использовать Windows Vista + Resource and Performance Monitor. Он может отслеживать использование процессов CPU, Memory, Network и Disk процессами со временем. Это отличная общая системная информационная утилита, которая должна была быть создана давно. Если я не ошибаюсь, он может отслеживать использование процессора и памяти во всех процессах (среди прочих перечисленных вещей).

Ответ 8

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

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

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

Ответ 9

Вы также можете попробовать с помощью сценария С#/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

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

Ответ 10

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

Ответ 11

Perfmon.exe встроен в окна.

Ответ 12

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

Ответ 13

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

Windows 10 Cumulative CPU time

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

Ответ 14

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

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

Ответ 15

Как насчет написания инструмента и его интеграции с scom, чтобы scom запускал ваш скрипт, когда загрузка процессора превышает определенный процент. Таким образом, вы сопоставляете все данные и проводите независимый анализ.