Performance Troubleshooting
Windows 11 Troubleshooting & Administration
Chapter 3 · Performance Troubleshooting
Chapter 1 introduced Task Manager and Resource Monitor as general-purpose tools; Chapter 2 added Event Viewer's own historical dimension. This chapter puts all three to work specifically on performance problems, adds a fourth tool built for logging performance over time rather than watching it live, and gives an honest comparison against Linux Performance Tuning's own, very differently organized toolset.
Task Manager's Performance Tab — Reading It Correctly
Four resource graphs, each measuring something genuinely different: CPU (utilization percentage, speed, process/thread/handle counts), Memory (in use vs. available, committed, cached), Disk (active time percentage and read/write throughput), and Network (send/receive throughput per adapter).
Resource Monitor's Memory Tab — Hard Faults, Not Just Percentage Used
High memory usage alone doesn't necessarily mean a machine is struggling — Windows deliberately caches aggressively, and "available" memory being low is often just unused cache ready to be reclaimed instantly. The more reliable indicator of real memory pressure is Hard Faults/sec, visible in Resource Monitor's Memory tab: a hard fault means data had to be read back from disk because it had been paged out, a genuinely expensive operation and a much more direct sign of insufficient memory than the raw usage percentage alone.
Performance Monitor — Logging Over Time, Not Just Watching Live
Task Manager and Resource Monitor both show a live snapshot — neither one is built to answer "what was happening at 3 AM last night when this machine locked up." Performance Monitor (perfmon.exe) solves that with Data Collector Sets — a defined group of performance counters logged to disk continuously or on a schedule, reviewable afterward regardless of whether anyone was watching when the problem actually occurred.
| View | Best for | |
|---|---|---|
| Task Manager | Live snapshot, high-level | A quick first look, ending a frozen app |
| Resource Monitor | Live snapshot, per-process detail | Identifying exactly which process/file/connection is responsible right now |
| Performance Monitor | Logged over time, via Data Collector Sets | Intermittent or overnight problems nobody was watching happen live |
A Worked Example — Finding a Real Resource Hog
Task Manager's Performance tab shows Disk at a sustained 100% active time, but the throughput figure alongside it is only a few hundred KB/s — the exact misleading pattern this chapter's own warn-box named. Opening Resource Monitor's Disk tab and sorting by IOPS (rather than raw throughput) reveals one process issuing a huge number of tiny read requests. Cross-referencing its PID against Task Manager's Details tab (Chapter 1) identifies the exact application; checking Event Viewer (Chapter 2) around the same timestamp turns up a warning from that same app about a corrupted local cache file it's been repeatedly trying, and failing, to read.
An Honest Contrast With Linux Performance Tuning
Linux Performance Tuning covers a CLI-first toolset — top/htop, iostat, vmstat — reflecting Linux's own general command-line-centric culture. Windows's equivalent tools are GUI-first by default, though real CLI/scriptable equivalents do exist: typeperf and PowerShell's own Get-Counter cmdlet (Chapter 10 of Windows 11 Fundamentals) can capture the exact same underlying performance counters Performance Monitor's GUI displays, entirely from a script — genuinely useful for automated monitoring, just not the default first tool most Windows users or documentation reach for.
Get-Counter '\Processor(_Total)\% Processor Time' pulls the same live CPU figure Task Manager's own graph shows, directly in PowerShell — a genuinely useful middle ground when a quick, scriptable check is needed without opening a GUI tool at all.
Hands-On Exercises
A user reports "100% disk usage" in Task Manager and assumes their drive is failing, but transfer speeds shown alongside it are very low. Using this chapter's own warn-box, explain what's actually being measured and why the assumption may be wrong.
📄 View solutionA machine has 90% memory usage shown in Task Manager but feels perfectly responsive. Explain why this alone isn't proof of a real memory problem, and what a more reliable indicator would be.
📄 View solutionA machine slows down every night around 3 AM, but nobody is available to watch Task Manager at that time. Explain which tool from this chapter is actually built for this scenario, and why Task Manager and Resource Monitor alone aren't sufficient.
📄 View solutionChapter 3 Quick Reference
- Task Manager's "100% Disk" measures active time, not throughput — check the actual MB/s figure too
- Hard Faults/sec (Resource Monitor) is a more reliable memory-pressure signal than raw usage percentage
- Performance Monitor and its Data Collector Sets log counters over time — the tool for problems nobody was watching happen live
- A real resource-hog investigation chains Task Manager → Resource Monitor → PID → Event Viewer
- Windows tools are GUI-first by default, unlike Linux Performance Tuning's own CLI-first culture — though
Get-Counter/typeperfbridge the two - Next chapter: The Registry