Отслеживание использования процессора и памяти для каждого процесса
-
09-06-2019 - |
Вопрос
Я подозреваю, что одно из моих приложений потребляет больше циклов процессора, чем я хочу.Проблема в том, что это происходит пакетно, и простой просмотр диспетчера задач мне не помогает, поскольку он показывает только немедленное использование.
Есть ли способ (в Windows) отслеживать историю использования процессора и памяти для какого-либо процесса?Например.Я начну отслеживать "firefox", и примерно через час увижу график использования его процессора и памяти в течение этого часа.
Я ищу либо готовый инструмент, либо программный способ достижения этой цели.
Решение
Просто введите perfmon
в Start > Run
и нажмите enter.Когда откроется окно Производительности, нажмите на знак +, чтобы добавить новые счетчики в график.Счетчики представляют собой различные аспекты работы вашего компьютера и сгруппированы по сходству в группы, называемые "Объект производительности".
В ответ на ваши вопросы вы можете выбрать объекты производительности "Процесс", "Память" и "Процессор".Затем вы сможете увидеть эти счетчики в режиме реального времени
Вы также можете указать утилиту для сохранения данных о производительности для последующей проверки.Для этого выберите "Журналы производительности и оповещения" на левой панели.(Он находится прямо под консолью системного монитора, которая предоставляет нам вышеупомянутые счетчики.Если его там нет, нажмите "Файл" > "Добавить / удалить оснастку", нажмите "Добавить" и выберите в списке "Журналы производительности и оповещения"".) В разделе "Журналы производительности и оповещения" создайте новую конфигурацию мониторинга в разделе "Журналы счетчиков".Затем вы можете добавить счетчики, указать частоту дискретизации, формат журнала (двоичный или обычный текст) и местоположение журнала.
Другие советы
Обозреватель процессов может показывать общее процессорное время, затраченное процессом, а также график истории каждого процесса.
Используя perfmon.exe, я попытался использовать счетчик "Личных байтов" в разделе "Счетчики процессов" для отслеживания использования памяти, и он работает хорошо.
может быть, тебе это пригодится.Он должен работать у вас и будет сообщать о времени обработки для указанного процесса.
@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.
Я согласен, perfmon.exe позволяет добавлять счетчики (щелкните правой кнопкой мыши на правой панели) для любого процесса, который вы хотите отслеживать.
Объект производительности:Процесс Установите флажок "Выбрать экземпляры из списка" и выберите firefox.
WMI - это инструмент управления Windows, и он встроен во все последние версии Windows.Это позволяет вам программно отслеживать такие вещи, как загрузка процессора, дисковый ввод-вывод и использование памяти.
Perfmon.exe является графическим интерфейсом для этого интерфейса и может отслеживать процесс, записывать информацию в журнал и позволять вам анализировать журнал постфактум.Это не самая элегантная программа в мире, но она выполняет свою работу.
Process Lasso предназначен скорее для автоматизации процессов и оптимизации классов приоритетов, а не для графиков.Тем не менее, это делает предлагает историю загрузки процессора для каждого процесса (нарисованную в виде белой линии на графике), но это НЕТ предлагайте историю использования памяти для каждого процесса.
Отказ от ответственности:Я являюсь автором Process Lasso, но на самом деле не одобряю его здесь - поскольку есть лучшие решения (perfmon является лучшим).
Самое лучшее, что когда-либо было, - это Windows Vista + Монитор ресурсов и производительности.Он может отслеживать использование процессора, памяти, доступа к сети и диску процессами с течением времени.Это отличная утилита для сбора общей системной информации, которую следовало создать давным-давно.Если я не ошибаюсь, он может отслеживать использование процессора и памяти для каждого процесса с течением времени (среди прочего, перечисленных).
Вы также можете попробовать с помощью скрипта 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%= ((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
Хотя я еще не пробовал это делать, ProcDump ( Выгрузка ) кажется, это лучшее решение.
Описание с сайта:
ProcDump - это утилита командной строки, основной целью которой является мониторинг приложения на предмет скачков процессора и генерация аварийных дампов во время скачка, которые администратор или разработчик могут использовать для определения причины скачка.ProcDump также включает мониторинг зависших окон (используя то же определение зависания окна, которое используют Windows и диспетчер задач), мониторинг необработанных исключений и может генерировать дампы на основе значений счетчиков производительности системы.Он также может служить общей утилитой для создания дампа процесса, которую вы можете встраивать в другие скрипты.
Хм, я вижу это Обозреватель процессов может это сделать, хотя его графики не слишком удобны.Все еще ищу альтернативные / лучшие способы сделать это.
Perfmon.exe встроен в Windows.
Возможно, вы захотите взглянуть на Технологическое Лассо.
В Windows 10 диспетчер задач может показать вам совокупное время работы процессора.Просто перейдите на вкладку "История приложений" и "Удалить историю использования".Теперь оставьте все как есть на час или два:
Чего это НЕ делает, так это разбивки использования в браузерах по вкладкам.Довольно часто неактивные вкладки выполняют огромный объем работы, причем каждая открытая вкладка расходует энергию и замедляет работу вашего компьютера.
Я использую taskinfo для хронологического графика скорости процессора / оперативной памяти / ввода-вывода.http://www.iarsn.com/taskinfo.html
Но вспышки невосприимчивости больше похожи на время прерывания из-за сбоев в работе HD / SS-накопителя.