How to Set Up Windows Server 2016 Performance Monitor

Performance Monitor is the primary built-in tool in Windows Server 2016 for collecting, analyzing, and visualizing system performance data. It enables administrators to track CPU usage, memory consumption, disk I/O, network throughput, and hundreds of other counters in real time or over collected time periods. Using Performance Monitor proactively helps identify bottlenecks, plan capacity, and diagnose issues before they escalate into outages.

This guide covers opening Performance Monitor, adding counters, creating Data Collector Sets for long-term monitoring, setting up alerts, and exporting data for analysis.

Opening Performance Monitor

Launch Performance Monitor from Server Manager by selecting Tools and then Performance Monitor. You can also open it with a Run dialog or PowerShell:

perfmon.exe

The tool opens to the Performance Monitor view, which shows a real-time graph of the Processor Time counter by default. The left panel contains the Monitoring Tools and Data Collector Sets sections, which are used for live monitoring and scheduled data collection respectively.

Step 1: Add Performance Counters

Click the green plus (+) button in the toolbar to add counters to the live graph. In the Add Counters dialog, you can browse counters by category. Key counters for general server health include:

Processor: % Processor Time — measures overall CPU utilization. Select the _Total instance to see aggregate usage across all cores. High sustained values above 80 percent indicate a CPU bottleneck.

Memory: Available MBytes — shows how much physical RAM is free. A value that consistently stays very low indicates memory pressure.

LogicalDisk: % Disk Time and Avg. Disk Queue Length — show how busy each disk is. An average queue length above 2 per spindle suggests a disk bottleneck.

Network Interface: Bytes Total/sec — measures network throughput. Compare against your NIC speed to detect saturation.

After selecting counters, click Add and then OK to display them on the graph. Use the properties button (the hand icon) to change graph colors, scale, and display style.

Step 2: Create a Data Collector Set

Data Collector Sets (DCS) automate performance data collection. They capture counter data to a log file at defined intervals, enabling historical trend analysis. Expand Data Collector Sets in the left panel, right-click User Defined, and select New then Data Collector Set.

Give the set a name such as BaselineCapture and select Create manually (Advanced). On the next page, check Performance counter and proceed. Add the counters you want to monitor — for a baseline, include all the counters listed in Step 1. Set the sample interval to 15 seconds for a detailed baseline or 5 minutes for long-term trending.

Set the output directory, configure the schedule on the Schedule tab, and define a stop condition such as a maximum duration of 24 hours. Click Finish to save the DCS.

Step 3: Start and Stop a Data Collector Set

Right-click your new DCS and select Start to begin collection. Right-click and select Stop to end it. You can also manage DCS from PowerShell:

logman start "BaselineCapture"
logman stop "BaselineCapture"

Create a new DCS entirely from the command line:

logman create counter BaselineCapture -cf C:PerfCounterscounters.txt -si 15 -f bincirc -max 512 -o C:PerfLogsBaselineCapture

The counters.txt file should contain one counter path per line, such as Processor(_Total)% Processor Time and MemoryAvailable MBytes.

Step 4: View Collected Data

After stopping a DCS, navigate to Reports in Performance Monitor, then User Defined, and select your DCS to view its report. The report opens as a graph showing all collected counters over the captured time period. Use the time range selector to zoom in on specific intervals of interest.

To open a .blg or .csv log file from an earlier session, click the Open button in the Performance Monitor toolbar and select the log file.

Step 5: Configure Performance Alerts

Performance Monitor can trigger actions when a counter crosses a threshold. Create an alert DCS: right-click User Defined, select New then Data Collector Set, name it CPUAlert, and choose Create manually (Advanced). Select Performance Counter Alert as the type.

Add Processor(_Total)% Processor Time and set the alert threshold to above 90 percent. On the Alert Action tab, select what to do when triggered — options include logging to the Application event log, starting another DCS, or running a program.

Create the same alert from the command line:

logman create alert CPUAlert -th "Processor(_Total)% Processor Time>90" -si 30 -exe "C:ScriptsCPUAlert.ps1"

Step 6: Export and Analyze Data

Convert a binary performance log to CSV for analysis in Excel or other tools:

relog "C:PerfLogsBaselineCapture.blg" -f csv -o "C:PerfLogsBaselineCapture.csv"

You can also relog the data at a different sample interval to reduce file size:

relog "C:PerfLogsBaselineCapture.blg" -f csv -t 60 -o "C:PerfLogsBaselineCapture_1min.csv"

Reading Performance Data with PowerShell

Sample a counter value directly from PowerShell without opening the GUI:

Get-Counter -Counter "Processor(_Total)% Processor Time" -SampleInterval 5 -MaxSamples 12

This captures 12 samples at 5-second intervals, giving you a 60-second snapshot of CPU utilization directly in the terminal.

Performance Monitor on Windows Server 2016 is an essential tool for both real-time diagnostics and long-term capacity planning. Setting up scheduled Data Collector Sets and meaningful alerts creates a performance baseline that helps you detect trends, justify hardware upgrades, and respond to incidents faster.