How to check for a CPU or GPU bottleneck

A calculator predicts a bottleneck. Your own PC can prove it. This walkthrough sets up the free MSI Afterburner and RivaTuner overlay, tells you exactly which numbers to watch, and gives you a resolution test that settles the question in about 30 seconds.

By Deepam Mishra · Updated · 10 min read · Numbers from our bottleneck model

The short answer: watch GPU usage

Play a demanding game with an on-screen overlay showing GPU usage and frame rate, with any FPS cap or V-Sync turned off. If the GPU sits at 95–99%, the graphics card is the limit, which is normal and healthy. If GPU usage hangs well below 90% while your frame rate is lower than you want, something before the GPU is holding it back, and that's almost always the CPU.

Then confirm it: drop the resolution or the render scale. If the frame rate barely moves, you're CPU-bound. If it jumps, you were GPU-bound all along. Everything else in this guide is detail on doing those two checks properly and not getting fooled by the exceptions.

What you need (all free)

MSI Afterburner with RivaTuner Statistics Server (RTSS) is still the most flexible option. It works with NVIDIA, AMD and Intel graphics cards, not only MSI ones, and RTSS installs alongside it to draw the overlay in game. Download both from MSI's own site or Guru3D, not from a mirror.

If you'd rather not install anything extra, you have decent alternatives:

  • NVIDIA App: press Alt+R in game for the statistics overlay with GPU and CPU usage, FPS and latency.
  • AMD Software: Adrenalin Edition: Performance › Metrics, then Ctrl+Shift+O toggles the overlay.
  • Intel PresentMon: open source and vendor-neutral. Its GPU Busy reading is the most direct bottleneck metric there is, covered below.
  • CapFrameX: built on PresentMon, best if you want to record runs and compare 1% lows before and after a change.

Steam's built-in performance monitor (Settings › In Game) also shows FPS and usage, but with fewer options. Windows Task Manager on a second screen isn't a substitute. More on why in a moment.

Set up the MSI Afterburner and RTSS overlay

  1. Install both programs. The Afterburner installer offers RTSS as an option. Leave it ticked. RTSS has to be running in the background for the overlay to appear.
  2. Open Afterburner's settings (the gear icon) and go to the Monitoring tab. You'll see a long list of sensors under “Active hardware monitoring graphs”.
  3. Enable the sensors that matter. Tick each of these, then tick Show in On-Screen Display below the list for each one: GPU usage, GPU memory usage, CPU usage, the per-thread items CPU1 usage through CPUn usage, RAM usage, Framerate and Frametime. Newer versions also list a 1% low framerate item; add it if you see it.
  4. Show frame time as a graph. Select Frametime and switch its OSD display from “text” to “graph”. A flat line is smooth gameplay. Spikes are stutter you can feel, even when the average FPS looks fine.
  5. Set an overlay hotkey on the On-Screen Display tab so you can hide it without alt-tabbing.
  6. Check RTSS. Open it from the system tray and make sure “Show On-Screen Display” is on and the Framerate limit is 0. A leftover limit here is the most common reason people misread their results.
  7. Launch a game. If the overlay doesn't show, raise RTSS's “Application detection level” to Medium. A few anti-cheat systems block overlays, so use the vendor overlay for those games.

Per-thread CPU usage is the reading most people skip, and it's the one that explains the “my CPU is only at 40%, so it can't be the bottleneck” confusion. Games rarely load every thread evenly. One main thread often does the heavy lifting, and when it's pinned near 100% the CPU is the limit, whatever the total says.

Run a fair test

A bottleneck test only means something if nothing artificial is limiting the frame rate. Before you play:

  • Turn off every FPS cap: V-Sync in the game, the in-game frame limiter, the RTSS limit, NVIDIA's Max Frame Rate and AMD's Frame Rate Target Control or Radeon Chill. G-Sync and FreeSync can stay on; they don't cap anything by themselves.
  • Pick the heaviest repeatable scene you can find: a dense city, a big battle, a busy multiplayer map. Menus and empty corridors tell you nothing.
  • Play for three to five minutes. The first minute often includes shader compilation stutter that has nothing to do with your hardware balance.
  • Watch the trend, not single spikes. A GPU that dips to 85% for a second during a loading transition isn't a bottleneck. One that averages 70% through a whole firefight is.

Test more than one game if you can. A bottleneck is a property of your CPU, your GPU and the game. Esports titles, simulators and open-world RPGs load the CPU very differently. The same Ryzen 5 3600 and RTX 5070 that manage about 208 FPS in CS2-style esports games at 1080p are still CPU-limited in a city builder or flight sim at 4K (43% CPU bottleneck), where they average about 44 FPS.

How to read the numbers

Here's how the overlay readings translate into a verdict:

What you seeWhat it means
GPU usage 95–99%, steady frame timesGPU-bound. The card is working flat out, which is what you paid for. To get more FPS, lower settings, enable upscaling or buy a faster GPU.
GPU usage 80–95%, moving aroundMixed. The game shifts between CPU- and GPU-limited scenes. Usually fine. Check the 1% lows.
GPU usage under 80%, FPS below your targetCPU-bound, or something else is limiting the frame rate (see the false alarms below).
One or two CPU threads at 90–100%The game's main thread is maxed. Classic CPU bottleneck, even if total CPU usage looks low.
Spiky frame-time graph with low GPU usageCPU or memory stalls. Expect poor 1% lows and stutter in busy scenes.

To give you a reference point, this is the GPU usage our model predicts for some common builds in a demanding AAA game at High settings. If your overlay shows something wildly different for the same parts, look for a cap, a thermal problem or a configuration issue before blaming the hardware.

BuildGPU usageAvg FPSLimited by
Ryzen 5 3600 + RTX 4070 Super
1080p, High, AAA games
58%80CPU 42%
Core i5-10400F + RTX 5070
1080p, High, AAA games
61%88CPU 39%
Core i5-12400F + RTX 5070 Ti
1080p, High, AAA games
67%119CPU 32%
Ryzen 5 5600 + RX 9070 XT
1440p, High, AAA games
84%102CPU 13%
Ryzen 5 5600 + RTX 4060
1080p, High, AAA games
99%75GPU 28%
Ryzen 7 7800X3D + RTX 5070 Ti
1440p, High, AAA games
99%123GPU 30%

Notice the split. The GPU-bound builds sit at 95% or more, while the CPU-bound ones hover between about 58% and 67%. That gap is the clearest sign you'll get. You can load any of these into the bottleneck calculator and change the resolution or game type to see how the prediction moves.

The PresentMon “GPU Busy” shortcut

Intel's PresentMon reports how many milliseconds the GPU was actually busy per frame next to the total frame time. If a frame takes 12 ms but the GPU was busy for only 7 ms, it spent 5 ms waiting on the CPU. When GPU Busy is close to the frame time, you're GPU-bound. When there's a large, persistent gap, you're CPU-bound. It's the same logic as GPU usage, just measured per frame and harder to fool.

Confirm it with the resolution test

GPU usage points you in the right direction. This test proves it, and it takes about 30 seconds:

  1. Note your average FPS in a busy scene at your normal resolution.
  2. Drop the resolution one step, or set the render scale to 50–70% if the game has one. Keep every other setting the same.
  3. Stand in the same spot and compare.

Lower resolution takes work away from the GPU but leaves the CPU's work per frame the same. If FPS rises a lot, the GPU was the limit. If FPS barely changes, the CPU was. Here's what that looks like for a Ryzen 5 3600 + RTX 5070 in AAA games:

ResolutionAvg FPSGPU usageLimited by
1080p8055%CPU 45%
1440p7978%CPU 21%
4K6099%GPU 23%

Going from 1080p to 1440p costs this build only 2% of its frame rate, because the Ryzen 5 3600 is capping it at around 80 FPS either way. At 4K the graphics card finally becomes the limit. If you see the same pattern on your PC, where FPS stays flat as you lower the resolution, you've confirmed a CPU bottleneck. Our guide on how resolution affects bottlenecks explains the effect in more detail.

When low GPU usage isn't a CPU bottleneck

Low GPU usage means the GPU is waiting for something. Usually that's the CPU, but rule these out first:

  • A frame cap you forgot about. A game capped at 60 or 144 FPS will show low GPU usage on a fast card. That's the cap working, not a bottleneck.
  • The game's own engine limit. Some games cap physics or simulation speed, and a few older titles barely use more than one CPU thread no matter what you own.
  • Running out of VRAM. When the card's memory fills up, textures spill into system RAM over PCIe and the GPU stalls. You'll see GPU memory usage at the maximum, heavy stutter and dipping GPU usage. Lowering texture quality fixes it. That's a VRAM limit, not a CPU one.
  • The monitor cable is in the motherboard. On a desktop with a graphics card, plug the display into the card itself.
  • Laptops on the wrong GPU. Check that the game runs on the dedicated GPU. A laptop with a MUX switch set to hybrid mode also loses some performance.
  • Thermal or power throttling. A CPU at 95–100 °C clocks down and becomes a bottleneck it shouldn't be. Add CPU temperature and clock speed to the overlay if you suspect this.
  • Shader compilation and asset streaming. Stutter during the first few minutes or when entering new areas is often the game building shaders. It settles on its own.

If none of these apply and GPU usage is still low with FPS under your target, it's the CPU (or the RAM feeding it). Our guide on how to fix a CPU bottleneck goes through the fixes in order, starting with the free ones.

Why Task Manager gets this wrong

Task Manager's headline CPU figure is an average across every thread. A game that maxes out two threads on a 16-thread processor reads as roughly 12–25% CPU usage, which looks like plenty of headroom while the game is completely CPU-bound. Switching the CPU graph to “logical processors” helps a little, but Windows moves threads between cores many times a second, so even that view smooths out the peaks.

Its GPU percentage has a similar problem: by default it shows the 3D engine only and updates slowly. An in-game overlay sampling every second or faster, with per-thread CPU usage, is far more reliable.

Compare your results with the calculator

Once you've measured, put the same parts and settings into the bottleneck calculator. If your results roughly match the prediction, your PC is behaving normally and the bottleneck is simply the balance of your parts. If your real FPS is far below the estimate, especially with low GPU and low per-thread CPU usage, something is misconfigured: RAM running at default speed, a single memory stick, a power-saving plan or a cooling problem.

For a specific game rather than an average, the FPS calculator adjusts the estimate for each title's engine. And if your build is a common one, it probably has its own page in our popular builds list with results at every resolution.

Frequently asked questions

Is 100% GPU usage bad?

No. 95–100% GPU usage while gaming means the graphics card is fully used, which is the ideal state. It isn't harmful as long as temperatures are within spec. If you want lower power draw or less fan noise, cap the frame rate slightly below your monitor's refresh rate.

What CPU usage means a CPU bottleneck?

Total CPU usage is a poor guide. Look at per-thread usage instead. If one or two threads sit at 90–100% while GPU usage is clearly below 90% and FPS is under your target, the CPU is the bottleneck, even if total CPU usage reads 30–50%.

Can I check for a bottleneck without installing software?

Yes. The NVIDIA App overlay (Alt+R), AMD Adrenalin's metrics overlay (Ctrl+Shift+O) and Steam's performance monitor all show GPU usage and FPS. Combine one of them with the resolution test: if lowering the resolution doesn't raise FPS, you're CPU-bound.

Does MSI Afterburner work with AMD and Intel graphics cards?

Yes. Despite the name, MSI Afterburner monitors NVIDIA, AMD and Intel Arc cards from any brand. RivaTuner Statistics Server, which draws the overlay, is vendor-neutral too.

Why are both my CPU and GPU usage low?

Usually a frame cap is active (V-Sync, an in-game limiter, RTSS or the driver), or the game is limited by a single maxed-out thread that total CPU usage hides. Turn off all caps and check per-thread CPU usage. VRAM overflow and thermal throttling can also cause it.

Is the bottleneck percentage the same as the gap in GPU usage?

They're closely related. In our model the bottleneck percentage is how far apart the CPU and GPU frame-rate limits are. A GPU sitting at about 60% usage in a CPU-bound game roughly matches a 40% CPU bottleneck, since the card is idle for the rest of each frame.

More guides

Check your CPU and GPU