CPU vs GPU Bottleneck Detection: How to Find Which Component Limits Frame Rate
The bottleneck question is the most common hardware decision point in PC gaming. Answering it correctly requires specific measurements under gaming conditions, not guesswork based on hardware specifications. A CPU bottleneck and a GPU bottleneck each respond to completely different fixes.
The bottleneck is whichever component finishes its work and then has to wait for the other. If the GPU is waiting for the CPU to submit draw calls before it can render, that is a CPU bottleneck. If the CPU is waiting for the GPU to finish rendering before it can advance to the next frame, that is a GPU bottleneck. Only one component can be the primary bottleneck at any given time, though the constraint can shift between scenes and between games.
Step-by-Step Measurement Process
- Install HWiNFO64 and RivaTuner Statistics Server. Configure HWiNFO64 to export sensors to RTSS for in-game overlay display. This gives you real-time GPU and CPU utilization alongside frame rate in the same overlay.
- Run your game in a representative scene. A loading screen, idle lobby, or menu will not produce useful data. Run a demanding scene that represents your typical play scenario—an outdoor area, combat with particles, or a crowded multiplayer environment.
- Read GPU utilization from HWiNFO64. The sensor labeled "GPU Core Load" or "GPU Utilization" from the GPU sensor group is the correct reading. Windows Task Manager's GPU percentage is unreliable and includes video decode and compute tasks alongside 3D rendering.
- Read CPU thread utilization per core. Total CPU utilization is misleading. Many game engines serialize the main thread, meaning a single core at 100% with the other cores lightly loaded is a CPU bottleneck, even though overall CPU load reads as only 12% on a 12-core CPU.
- Run the same scene at a much lower graphical quality setting. Drop texture quality and resolution scale to minimum. If frame rate increases significantly but GPU utilization stays below 95%, the GPU was the limiting factor at high settings. If frame rate does not change when you reduce GPU load, the CPU was the bottleneck.
Interpreting GPU Utilization Numbers
| GPU Utilization | What It Indicates | Likely Bottleneck | What Helps |
|---|---|---|---|
| 95–100% | GPU is the limiting factor | GPU | Lower resolution, settings, or overclock GPU |
| 70–94% | Near-GPU-limited; varies by scene | Mixed | Situation-dependent |
| 50–69% | GPU waiting for CPU work | CPU | Faster CPU, lower in-game CPU load settings (NPC count, draw distance) |
| Below 50% | Severe CPU bottleneck or frame cap active | CPU or frame limiter | Check for frame rate cap; if none, upgrade CPU |
The Resolution Test: The Fastest Diagnosis
The most reliable single-test bottleneck check is to change your render resolution while keeping all other settings constant. Lower the in-game resolution scale from 100% to 50% (or change the desktop resolution temporarily), then measure frame rate again.
If GPU utilization drops proportionally and frame rate does not increase much, the CPU is the bottleneck. The GPU finishes faster, but has to wait for the CPU anyway, so frame rate is unchanged. If frame rate increases proportionally to the reduction in GPU work, the GPU was the constraint.
CPU Bottleneck Indicators Beyond Utilization
Per-core CPU utilization visible in Task Manager's Performance tab (set to "Logical Processors" view) or HWiNFO64 reveals whether a single thread is saturated. Open-world games, strategy games, and simulations with large numbers of AI agents frequently generate a CPU bottleneck on the game's main update thread even on modern 12 and 16-core CPUs. Hyperthreading and high core count do not help when the bottleneck is a single serialized thread.
Games built on older engine versions, particularly those predating DirectX 12 multi-threaded command recording, often exhibit this pattern on modern hardware regardless of how fast the CPU is in multi-threaded workloads. A game that bottlenecks on one thread on a Core i9 will look the same as on a Core i5 of the same generation when single-thread speed is similar.
What to Do With the Result
- GPU bottleneck: Reduce resolution, shadow quality, ambient occlusion, and ray tracing effects. Enable DLSS or FSR upscaling. Overclock the GPU within thermal limits.
- CPU bottleneck at high FPS: Lower NPC population, simulation distance, and physics detail. Check whether the game benefits from disabling hyperthreading or affinity masking. Enable NVIDIA Reflex or AMD Anti-Lag to reduce the render-ahead queue.
- CPU bottleneck where GPU sits below 50%: The gaming scenario is limited by CPU single-thread speed. Only a faster CPU per-clock (different architecture or higher clock speed on the same core) will help. More RAM channels or faster RAM can also help in memory-latency-sensitive engines.