Games & Performance

CPU or GPU Bottleneck? How to Find What's Holding Back FPS

Is your CPU or GPU holding back frames? Learn to spot bottlenecks with monitoring tools and simple tests, then fix what's actually limiting your FPS.

Hardware monitoring stats overlaid on gameplay
Photograph via Unsplash

Every gaming PC has a bottleneck. That is not a defect, it is physics: at any given instant, one component is working flat out while the others wait on it. The useful question is not whether you have a bottleneck but which part it is, whether it sits where you want it, and whether it is actually costing you frames you would notice. Let me walk you through how I diagnose this on the bench, using tools you already have.

What "bottleneck" actually means#

A bottleneck is simply the slowest link in the chain for the workload you are running right now. Your CPU prepares each frame (game logic, physics, draw calls, feeding the GPU), and your GPU renders it. Whichever one finishes its share of the work last sets your frame rate. The other component finishes early and idles, waiting.

Two things follow from that:

  • The bottleneck moves. Open a menu and you might be CPU bound; turn to face a dense forest and you flip to GPU bound. It shifts with resolution, settings, and even what is on screen.
  • A GPU bottleneck is the one you want. If your graphics card is the thing running at full tilt, you are getting everything it can give. A CPU bottleneck usually means your expensive GPU is sitting partly idle, which is the frustrating case.

So the goal is not to eliminate bottlenecks. It is to make sure the right part is the limiter and that nothing is choking your hardware artificially.

The first read: GPU utilization#

Before you change a single setting, add a monitoring overlay. MSI Afterburner with RivaTuner Statistics Server is my default because it is free and shows per-core CPU load, GPU load, clocks, temperatures, and framerate all at once. The Steam and Xbox Game Bar overlays work too, and NVIDIA and AMD both bake a decent one into their driver software now.

Play normally for a few minutes, then read the numbers during actual gameplay, not a loading screen. The single most important figure is GPU utilization:

  • GPU usage sitting at 97-100% — you are GPU bound. This is the healthy state. Your card is the limiter, and to gain frames you either lower settings or upgrade the GPU.
  • GPU usage bouncing around 60-85% while your frame rate is lower than you want — something else is holding the card back. Most often that is the CPU, but not always (more on the traps below).

One caveat I have to state plainly: GPU usage is a busy-percentage, not a truth serum. It tells you the card had work to do that fraction of the time. It does not distinguish "the CPU could not feed me fast enough" from "I hit a frame cap" from "V-Sync is pacing me." That is why the next step matters.

Reading the CPU side#

Now look at CPU load, and do it carefully. Overall CPU percentage lies to you on modern chips. A game that fully saturates four threads on a 16-thread CPU shows roughly 25% total usage while being completely CPU bound. That "75% idle" is real cores the game simply cannot use.

So watch two things instead:

  1. Per-thread or per-core usage. If one or two threads are pinned near 100% while the rest loaf, that pegged thread is your limiter. Many engines still lean hard on a single main thread, and that thread's speed sets your ceiling.
  2. The pattern versus GPU load. The classic CPU-bottleneck signature is a busy CPU thread and a GPU that will not climb past, say, 80%. The GPU has headroom it cannot use because frames are not arriving fast enough.

The competitive-shooter case#

This is where CPU limits bite hardest, and it surprises people. At 1080p on a fast card in Counter-Strike 2, Valorant, or Overwatch 2, you can easily be CPU bound at 200+ FPS with the GPU loafing at 50%. The frames are cheap to render but expensive to simulate and schedule. If you are chasing high-refresh esports numbers, CPU and memory speed matter more than the graphics card, which runs counter to most people's instincts.

The resolution test: confirm it in two minutes#

Monitoring tells you a lot, but here is the decisive experiment I run when I want certainty. Resolution changes GPU work dramatically and CPU work barely at all. So you can use it as a probe.

  1. Note your frame rate at your normal resolution and settings.

  2. Drop the resolution hard — from 4K to 1080p, or 1440p to 720p — and change nothing else.

  3. Watch what the frame rate does:

    • FPS jumps a lot → you were GPU bound. Reducing the pixels freed the card, and frames climbed.
    • FPS barely moves → you are CPU bound. You removed GPU work and it made no difference, which means the GPU was never the problem.

You can run the same test in reverse to prove it: crank resolution up and internal render scale to maximum. If frames tank, the GPU is the limiter at that setting. If they hold, the CPU is still calling the shots. Ten minutes of this teaches you more about your specific rig than any generic "bottleneck calculator" website, which cannot see your game, your settings, or your actual scene.

Common traps that fake a bottleneck#

Plenty of things masquerade as a CPU or GPU limit. Rule these out before you blame a component or reach for your wallet.

  • Frame rate caps and V-Sync. If your FPS is nailed to exactly 60, 120, or 144 with both CPU and GPU showing headroom, you are capped, not bottlenecked. Check the in-game limiter, your driver control panel, and any global cap in tools like RTSS.
  • Power and thermal limits. A laptop on battery, an aggressive power plan, or a GPU throttling in the high 80s Celsius will drop clocks and mimic a weak component. Watch clock speeds and temps alongside usage. Steady clocks that suddenly sag under load point to throttling, not a true bottleneck.
  • VRAM exhaustion. Run out of video memory and you get stutter, huge frame-time spikes, and texture pop-in even while GPU usage looks fine. This reads as "GPU bound" on the usage meter but behaves like a stall. Watch VRAM allocation, and if it is pinned at your card's limit, drop texture quality.
  • Slow or mismatched RAM. Ryzen chips in particular are sensitive to memory speed and to running a single stick instead of a matched dual-channel kit. Slow RAM shows up as a CPU bottleneck because it is starving the CPU. Confirm your XMP or EXPO profile is actually enabled in BIOS — a shocking number of "slow" PCs are just running memory at default 4800 or 5600 speeds.
  • Background software. Browsers with a hundred tabs, overlays stacked on overlays, shader compilation on first launch, and aggressive antivirus scans all steal CPU cycles. Give a game a minute to settle before you trust the numbers.

Frame times over average FPS#

One habit worth building: watch the frame-time graph, not just the average FPS counter. A game can average a healthy 90 FPS and still feel awful because of periodic spikes. Traversal stutter in open-world games and shader-compilation hitches are frame-time problems, and they will not show up as a clean CPU or GPU utilization story. If the average looks fine but the game feels bad, the frame-time line is where the truth is.

What to do once you know#

Diagnosis is only useful if it changes what you do next.

If you are GPU bound and want more frames:

  • Lower the settings that cost the most for the least visual return first — shadows, volumetric effects, ambient occlusion, and reflections are usually the heavy hitters.
  • Use upscaling. DLSS, FSR, or XeSS render at a lower internal resolution and reconstruct, which directly reduces GPU load, often for little perceptible loss.
  • If settings are already sensible and you are still short, this is the honest case for a GPU upgrade.

If you are CPU bound:

  • Confirm memory is running at rated speed with XMP/EXPO on and in dual channel. This is free and it is the single most common fix.
  • Close background load and cap your frame rate slightly below your peak to smooth frame pacing.
  • Raise resolution or graphics settings. Counterintuitive, but if the CPU is your limit and the GPU has headroom, you can add visual quality for free until you shift the load back onto the GPU. You get a prettier game at the same frame rate.
  • If you genuinely need more frames in a CPU-bound title, a faster CPU with strong single-thread performance and quick memory is the upgrade that helps — not a bigger graphics card.

The bottom line#

Balance is not the goal, and a rig that is 100% GPU bound is not "broken." For most gaming, a GPU bottleneck is exactly where you want to be, because it means your graphics card is fully used and your CPU has room to spare. Add the overlay, read GPU usage first and per-thread CPU usage second, then run the resolution test to confirm. Rule out caps, thermals, VRAM, and slow RAM before you spend a cent. Do that, and you will stop guessing about upgrades and start buying the part that actually moves your frame rate.

Riley Nguyen
Written by
Riley Nguyen

Riley benchmarks hardware for fun and keeps a spreadsheet no reasonable person should. They cut through marketing numbers to what a part actually delivers in real games, and are happiest telling you the cheaper option is the smarter buy.

More from Riley