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



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



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



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

732   14  

14 ответов:

просто типа perfmon на Start > Run и нажмите enter. Когда откроется окно Производительность, нажмите на знак+, чтобы добавить новые счетчики на график. Счетчики представляют собой различные аспекты работы вашего ПК и сгруппированы по сходству в группы, называемые "объект производительности".

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

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

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

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

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

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

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

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

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

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

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

отказ от ответственности: я являюсь автором процесса лассо, но на самом деле не одобряю его здесь - так как есть лучшие решения (perfmon является лучшим).

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

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

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

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

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

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

возможно, вы захотите взглянуть на Процесс Лассо.

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

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

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

нам нужно выполнить 2 запроса выбора WMI и применить формулу использования 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

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

Windows 10 Cumulative CPU time

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

Comments

    Ничего не найдено.