Back to docs
Tools - DiagnosticsUpdated: November 23, 2024

perfmon.msc

Open Performance Monitor for detailed system performance tracking.

perfmon.msc

Command: perfmon.msc or perfmon

Category: Diagnostics

Type: GUI

Purpose

Opens Windows Performance Monitor, an advanced tool for monitoring system performance metrics in real-time and over time. Track CPU, memory, disk, network, and hundreds of other performance counters. Create custom data collector sets for detailed performance analysis and troubleshooting.

Quick Summary

Performance Monitor is your comprehensive system performance analysis tool. Monitor real-time performance with live graphs, log performance data for historical analysis, set alerts for performance thresholds, and create detailed performance reports. Essential for diagnosing performance bottlenecks, capacity planning, and in-depth system monitoring.

How to Use

  1. Press Win + R to open the Run dialog.
  2. Type perfmon.msc or perfmon and press Enter.
  3. Performance Monitor opens with the Monitoring Tools section.
  4. Click "Performance Monitor" in the left tree to see live performance graphs.
  5. Add performance counters using the "+" button in the toolbar.

Alternative methods:

  • Type perfmon in Command Prompt, PowerShell, or Start menu search
  • Search for "Performance Monitor" in Start menu
  • Right-click "This PC" > Manage > Performance > Performance Monitor

Quick access variants:

  • perfmon /res - Resource Monitor
  • perfmon /rel - Reliability Monitor
  • perfmon /report - Generate system diagnostic report

Main Components

Monitoring Tools:

  • Performance Monitor: Real-time graphical performance monitoring
  • Data Collector Sets: Configure data collection for logging
  • Reports: View collected performance data

Data Collector Sets:

  • User Defined: Custom data collectors you create
  • System: Built-in Windows data collector sets

Reports:

  • System Diagnostics
  • System Performance
  • Custom reports from your data collector sets

Tips and Best Practices

  • Start with Resource Monitor (perfmon /res) for quick overview before deep analysis.
  • Add relevant counters gradually; too many can overwhelm the graph.
  • Use Data Collector Sets for long-term monitoring and logging.
  • Save counter configurations for repeated monitoring scenarios.
  • Use different views: Line graph, histogram bar, or report view.
  • Compare multiple counters to identify correlations between issues.
  • Generate System Diagnostic Report for comprehensive analysis.

Common Use Cases

  • Performance troubleshooting: Identify CPU, memory, disk, or network bottlenecks.
  • Capacity planning: Track resource usage trends over time.
  • Application monitoring: Monitor application-specific performance counters.
  • Baseline creation: Establish normal performance for comparison.
  • Bottleneck identification: Pinpoint which resource is limiting performance.
  • Alert configuration: Set up alerts when thresholds are exceeded.
  • Historical analysis: Review logged performance data to identify patterns.

Prerequisites

  • No administrator rights required for most monitoring
  • Administrator rights required for some Data Collector Sets and system counters
  • Available on all Windows versions

Essential Performance Counters

Processor:

  • % Processor Time: Overall CPU usage (key metric)
  • % User Time: CPU time spent in user mode
  • % Privileged Time: CPU time spent in kernel mode
  • Processor Queue Length: Processes waiting for CPU time

Memory:

  • Available MBytes: Free physical memory
  • % Committed Bytes In Use: Percentage of virtual memory committed
  • Pages/sec: Memory paging activity (high = memory pressure)
  • Cache Bytes: File system cache size

Disk:

  • % Disk Time: Percentage of time disk was busy
  • Avg. Disk Queue Length: Average disk operations waiting
  • Disk Reads/sec and Disk Writes/sec: I/O operations
  • Avg. Disk sec/Read: Disk read latency

Network:

  • Bytes Total/sec: Total network throughput
  • Current Bandwidth: Available bandwidth
  • Packets/sec: Network packets processed

Adding Performance Counters

  1. Click the green "+" button in toolbar
  2. Select performance object (e.g., Processor, Memory, Disk)
  3. Select counter from the list
  4. Choose instance if applicable (specific disk, process, etc.)
  5. Click "Add" then "OK"

Keyboard shortcuts:

  • Ctrl + Q: Add counters
  • Ctrl + H: Highlight selected counter
  • Ctrl + E: Properties
  • Delete: Remove selected counter

Creating Data Collector Sets

To create custom data collector:

  1. Expand "Data Collector Sets" > "User Defined"
  2. Right-click > New > Data Collector Set
  3. Choose "Create manually (Advanced)"
  4. Select data collectors: Performance counter, Event trace, System configuration
  5. Configure counters, sampling interval, and save location
  6. Right-click the set and select "Start" to begin logging

Starting/stopping data collection:

  • Right-click data collector set > Start/Stop
  • Or use command line: logman start "CollectorSetName"

Generating System Reports

System Diagnostic Report:

  1. Expand "Data Collector Sets" > "System"
  2. Right-click "System Diagnostics" > Start
  3. Wait 60 seconds for data collection
  4. Expand "Reports" > "System" > "System Diagnostics"
  5. Click the most recent report to view

Generates comprehensive report including:

  • Hardware configuration
  • Software information
  • CPU, memory, disk, network statistics
  • System service status
  • Error messages from event logs

System Performance Report: Similar to Diagnostic but focuses on performance metrics.

Understanding Performance Issues

High CPU Usage:

  • Check: Processor > % Processor Time
  • If constantly >80%: CPU bottleneck
  • Identify process: Process > % Processor Time (specific instance)

Memory Pressure:

  • Check: Memory > Available MBytes
  • If consistently low: Need more RAM
  • Check: Memory > Pages/sec (high = paging)

Disk Bottleneck:

  • Check: PhysicalDisk > % Disk Time
  • If consistently >80%: Disk bottleneck
  • Check: PhysicalDisk > Avg. Disk Queue Length (>2 = congestion)

Network Issues:

  • Check: Network Interface > Bytes Total/sec
  • Compare to current bandwidth
  • High packet errors indicate network problems

Alerts and Thresholds

Configure alerts:

  1. Create Data Collector Set
  2. Add Performance Counter Alert
  3. Set counter and threshold (e.g., CPU > 90%)
  4. Configure action: Log, run program, etc.
  5. Set sampling interval

Example alert thresholds:

  • CPU > 90% for extended period
  • Available memory < 100 MB
  • Disk queue length > 2
  • Network packet errors > 100/sec

Troubleshooting

  • Performance Monitor slow or unresponsive - Too many counters selected; reduce the number.
  • Can't see certain counters - May require administrator privileges.
  • Data Collector won't start - Check disk space and permissions on save location.
  • Counters show zero - Service may not be running or counter not applicable to your system.
  • "Access denied" errors - Run Performance Monitor as Administrator.

Command-Line Usage

Start Performance Monitor:

perfmon

Start Resource Monitor:

perfmon /res
resmon

Start Reliability Monitor:

perfmon /rel

Generate system diagnostic report:

perfmon /report

Manage data collectors (logman):

logman query
logman start "System Performance"
logman stop "System Performance"

Exporting and Saving

Save counter configuration:

  1. File > Save Settings As
  2. Choose location and filename (.htm format)
  3. Reload later: File > Open and select saved file

Export data:

  1. Right-click data collector set
  2. Export data as CSV, TSV, or SQL
  3. Analyze in Excel or other tools

PowerShell Integration

Query performance counters:

Get-Counter '\Processor(_Total)\% Processor Time'
Get-Counter '\Memory\Available MBytes'
Get-Counter '\PhysicalDisk(_Total)\% Disk Time'

Continuous monitoring:

Get-Counter -Counter '\Processor(_Total)\% Processor Time' -SampleInterval 2 -Continuous

Export to CSV:

Get-Counter '\Processor(_Total)\% Processor Time' -SampleInterval 1 -MaxSamples 60 | Export-Counter -Path perf.csv
  • resmon.exe - Resource Monitor for real-time detailed monitoring
  • taskmgr.exe - Task Manager for basic performance monitoring
  • perfmon /rel - Reliability Monitor for stability history
  • typeperf - Command-line performance counter tool
  • logman - Command-line tool for managing Data Collector Sets
  • relog - Reformat performance logs
  • Windows Admin Center - Modern web-based monitoring (for servers)