Skip to main content
To monitor Windows Server performance, open Task Manager (Ctrl+Shift+Esc) for a quick view of CPU, memory, disk and network, then Resource Monitor (resmon) to see which process uses each resource. For history, use Performance Monitor (perfmon /sys) or PowerShell: Get-Counter "\Processor(_Total)\% Processor Time" -SampleInterval 5 -MaxSamples 12 samples CPU every 5 seconds for one minute.

Before you start

  • Connect with Remote Desktop as an administrator.
  • Run PowerShell as administrator: some performance counter sets are only visible in an elevated session.
  • Counter names below are the English names. On a server installed in another display language, the names are localised.

Which Windows tool should I use?

How to check performance in Task Manager

1

Open Task Manager

Press Ctrl+Shift+Esc. In a Remote Desktop session Ctrl+Alt+End opens the security screen, from which you can also start it. Click More details if you only see a short list.
2

Read the Performance tab

Click Performance. CPU, Memory, each Disk and Ethernet have a live graph. Under Memory, check Available: that is what programs can still use.
3

Find the busy process

Click Details (or Processes) and click the CPU or Memory column header to sort. The top entry is your biggest user.

How to find the cause in Resource Monitor

Run resmon from the Start menu, the Run box (Win+R) or PowerShell. Tick a process’s box at the top of a tab to filter every other panel to that process.

How to log performance counters with Performance Monitor

1

Open Performance Monitor

Run perfmon /sys. The graph starts with % Processor Time.
2

Add counters

Click the green + (Add Counters), choose a counter set and counter, select an instance (such as _Total) and click Add, then OK.
3

Run a built-in health report

For a one-off check of the whole server, run perfmon /report. It starts the System Diagnostics data collector set and shows a report of the results, with any warnings at the top.
Useful counters:

How to check performance with PowerShell

Sample CPU every 5 seconds, 12 times (one minute):
Check several counters at once:
List the 10 processes that have used the most CPU time since they started, with memory (working set) in MB:
CPU here is total processor seconds, not a current percentage, so a long-running service can top the list while idle. Use Resource Monitor or Get-Counter "\Process(*)\% Processor Time" for current use. List available counter sets:

How to log counters to a CSV file

typeperf writes samples to a file you can open in Excel:
This takes a sample every 15 seconds, 240 times (one hour). CSV is the default format. Create C:\PerfLogs first if it doesn’t exist.
Leaving Performance Monitor or a log running for days fills the disk. Set a sample count with -sc, or delete old logs. For alerts when the server stops responding, monitor it from outside: see email alerts when your server goes down.

How to check it worked

Get-Counter should print a timestamp and a value for each counter. If you see The specified object was not found on the computer, the counter name is wrong or localised; list the real names with Get-Counter -ListSet *.

Frequently asked questions

Why does Windows Server show high memory use when nothing is running?

Windows keeps recently used files in Standby memory and frees it when programs need it. Check Available in Task Manager or \Memory\Available MBytes, not just In Use.

What is using my CPU on Windows Server?

Sort Task Manager’s Details tab or Resource Monitor’s CPU tab by CPU. For common causes (Windows Update, Defender scans, svchost.exe), see fix high CPU usage on Windows Server.

Does Get-Counter work in PowerShell 7?

Yes. Microsoft reintroduced Get-Counter in PowerShell 7, and it is also in Windows PowerShell 5.1. It only works on Windows.

Can I see past performance?

Only if you were logging it. Start a typeperf or Performance Monitor log now, and use Reliability Monitor (perfmon /rel) and Event Viewer for past crashes. On a VPS, the VPS Panel graphs show CPU, memory, disk and network history.

VPS and dedicated server guides

Every server guide in one place.

Fix high CPU on Windows Server

Find and stop the cause.

Fix a slow Windows Server

Step-by-step troubleshooting.

Use Event Viewer

Find errors and crashes.

PowerShell basics

Everyday server commands.

VPS Panel resource graphs

History from outside the server.

Checked against Microsoft Learn: Get-Counter, perfmon and typeperf on 4 November 2026. Windows commands were not run in our test environment. Menu names can differ slightly between Windows Server releases.

Need Extra Help?

If you encounter any issues, our support team is ready to assist:

Save on Your Hosting

Ready to upgrade your hosting? Use code KB20 at checkout for 20% off your first order!

Last Updated: November 2026