Вопрос или проблема
Существует ли способ записать информацию Диспетчера задач о загрузке ЦП и памяти для последующего анализа? Или аналогичный инструмент?
Монитор производительности Windows (perfmon) должен решить вашу задачу; вы можете настроить его для записи в файл, просто включите необходимые счетчики, и он будет записывать столько, сколько вам нужно.
- Пуск > Выполнить > perfmon
- Нажмите на знак плюса рядом с Журналами производительности и Оповещениями
- Щелкните правой кнопкой на Системном журнале и выберите свойства.
- Настройте временные интервалы выборки на ваше усмотрение
- Когда закончите, нажмите OK, затем нажмите на знак плюса в верхней части окна.
Эта страница предлагает довольно неплохое пошаговое руководство с скриншотами
Вы можете рассмотреть возможность использования решения для мониторинга, такого как zabbix, zenoss, чтобы собирать и анализировать ваши показатели производительности.
Process Explorer также покажет историю загрузки ЦП.
Я использую PolyMon для мониторинга таких вещей. Вы можете определить различные “условия тревоги”, о которых вы хотели бы получать уведомления, так что я получаю уведомление, если у одного из моих серверов возникла проблема.
Но он также хранит все эти результаты в долгосрочной базе данных, так что я могу вернуться и посмотреть использование памяти сервера “X” и увидеть его тенденции по использованию памяти за последние N дней/недель/месяцев/лет.
Cacti — это отличная веб-программа для создания графиков. Она может отображать графики загрузки ЦП, памяти, дискового пространства и т.д. Также её можно расширить с помощью собственных плагинов.
Открытое решение Nagios также делает это:
Да, perfmon (“Монитор производительности” в Панели управления)
Простой скрипт PowerShell для этой задачи:
# Определить файл вывода
$outputFile = "C:\tmp\cpu_usage_log.csv"
# Проверка, существует ли файл, если нет, создать с заголовками
if (!(Test-Path $outputFile)) { "Timestamp,CPU_Usage,Memory_Usage" | Out-File $outputFile }
while ($true) {
# Захват текущего временного штампа, использования ЦП и памяти
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$cpuUsage = [math]::Round((Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples.CookedValue, 2)
$memoryUsage = [math]::Round((Get-Counter '\Memory\Committed Bytes').CounterSamples.CookedValue / 1MB)
# Форматирование вывода
$logEntry = "$timestamp,$cpuUsage,$memoryUsage"
# Добавление записи в журнал к файлу
$logEntry | Out-File -FilePath $outputFile -Append
# Пауза на заданный интервал (например, 5 секунд)
Start-Sleep -Seconds 5
}
Затем сохраните в файл (например, log_cpu_and_memory.ps1) и запустите в повышенном PowerShell (Win + R
-> powershell.exe
-> Ctrl + Shift + Enter
)
./log_cpu_and_memory.ps1
Вывод представляет собой файл CSV со следующим форматом:
Timestamp,CPU_Usage,Memory_Usage
2024-09-23 13:25:48,0.85,14520
2024-09-23 13:25:55,1.44,14464
2024-09-23 13:26:02,4.9,14599
Что мне нравится в этом решении, так это то, что оно создает живой журнал, который может быть прерван системой, например, из-за отключения, низкого заряда батареи и т.д. Нет необходимости вручную сохранять записанный журнал.
Ответ или решение
Конечно! Для записи информации о использовании ЦП и памяти на компьютере с операционной системой Windows, существует несколько инструментов, которые могут вам помочь. Вот подробное руководство:
1. Использование Performance Monitor (PerfMon)
Performance Monitor (PerfMon) – это встроенная утилита в Windows, которая позволяет отслеживать и записывать различные показатели системы, включая использование процессора и памяти.
Чтобы настроить его:
- Откройте командную строку или окно "Выполнить" (Win + R) и введите
perfmon
, затем нажмите Enter. - В левой панели выберите "Performance Logs and Alerts".
- Щелкните правой кнопкой мыши на "System Log" и выберите "Properties".
- Настройте параметры выборки по вашему усмотрению.
- После завершения настройки нажмите OK, затем нажмите кнопку "+" в верхней части окна, чтобы добавить нужные метрики.
Эта информация может быть сохранена в файл для последующего анализа.
2. Использование PowerShell
Вы можете создать простой скрипт на PowerShell для периодической записи информации о ЦП и памяти в CSV файл:
# Определите файл вывода
$outputFile = "C:\tmp\cpu_usage_log.csv"
# Проверьте, существует ли файл, если нет, создайте его с заголовками
if (!(Test-Path $outputFile)) { "Timestamp,CPU_Usage,Memory_Usage" | Out-File $outputFile }
while ($true) {
# Захват текущего времени, использования ЦП и памяти
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$cpuUsage = [math]::Round((Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples.CookedValue, 2)
$memoryUsage = [math]::Round((Get-Counter '\Memory\Committed Bytes').CounterSamples.CookedValue / 1MB)
# Форматирование записи
$logEntry = "$timestamp,$cpuUsage,$memoryUsage"
# Добавление записи в файл
$logEntry | Out-File -FilePath $outputFile -Append
# Пауза на заданный интервал (например, 5 секунд)
Start-Sleep -Seconds 5
}
Сохраните этот скрипт в файл (например, log_cpu_and_memory.ps1
) и выполните его в повышенной среде PowerShell.
3. Альтернативные инструменты для мониторинга
Если вам нужны более мощные решения для мониторинга, рассмотрите использование следующих инструментов:
- Zabbix: мощное решение для мониторинга, которое позволяет собирать и анализировать производительность ваших систем.
- Nagios: еще один популярный открытый инструмент для мониторинга системы.
- Cacti: веб-программа для графиков, которая может отображать использование ЦП, памяти и других ресурсов системы.
- Process Explorer от Sysinternals: показывает историю использования ЦП, что также может быть полезно.
Заключение
Использование Performance Monitor, PowerShell или специализированных инструментов, таких как Zabbix и Nagios, позволяет вам эффективно записывать и анализировать использование ресурсов вашей системы. Выбор конкретного инструмента зависит от ваших предпочтений и требований к мониторингу.