Too often we have got a new game and found performance is lacking. Sometimes it’s easy enough to turn down some settings but other times it feels like your PC is holding you back. Here I will show you how you can determine what your bottleneck is and how you could re-mediate it.
First things first, make sure all your drivers are updated correctly. You can visit your motherboard manufacturers website to download chipset, audio, SATA and bios updates.
There’s no point looking for hardware bottlenecks that are actually driver issues.
In the case of GPUs, ensure you are gaming using your dedicated GPU and not the on board graphics.
What were testing and why?
The four main components we will be looking at are:
- Storage device
Each of these components will affect your performance directly. You could have the best GPU and CPU out but if your running the game off a USB 2.0 drive and the game streams in textures or models then you will find lots of “pop in” happening during game and and very long loading times.
A common thing within our group is people have a great GPU and disk but only shell out for the absolute minimum CPU. What then happens is things like physics or AI which is computed mainly on the processor slows down the rest of the game. Not only that if the CPU can’t process commands quick enough to hand off data to the GPU it causes a bottleneck. Again if you don’t have enough RAM you’ll find your PC hitting your disk more often to load models/textures/sounds into RAM and using swap space on the disk, this can cause FPS dips.
How to test
Now let’s find a game that you have problems with, to an extent we need to stress the PC under real world conditions to find the problem.
For me I will be using GTA V, a game that looks pretty and can scale up well using some advanced graphics options that invariably tank my frame rate. The initial test will be turning everything to as high as I can until I start to get consistently less than 60fps.
Next we need to download MSI Afterburner so we can see stats about our system during the game.
Go ahead and install Afterburner and start it up and open the settings panel and click the Monitor tab. What we need to do now is go through the list of Graph metrics, GPU Usage, CPU Usage, Power, RAM Usage etc and include them in the onscreen display using the “Show in On-Screen Display” checkbox for each metric. Afterburner settings
Now we can start up the game and see how our computers handling it. You can see in the image below from GTA V that my RAM usage is pretty high and my CPU usage is hovering around 65%, this isn’t too bad with these graphics settings. With the FPS around 40FPS, it is less than our ideal 60FPS but the GPU is doing all it can and the CPU isn’t being overly taxed. You can also see the RAM isn’t hitting its max 16GB yet.
So overall here the initial bottleneck is my GPU as the system just can’t hit 60FPS. If I upgrade my GPU from a GTX 970 to something like a GTX 1080 and capped the framerate at 60FPS you may see the GPU usage dropping since it might not get maxed out, if my CPU could handle it that is.
But what does a bottleneck look like?
I have artificially impacted the components so you can see what their usage would look like if there was a bottleneck.
I have GTA V installed three 2.5inch 5400RPM 1TB drives in RAID 0, purely for games. I know about RAID 0s lack of redundancy, don’t judge. While I’m playing GTA V to slow down my drive I ran Crystal Disk Mark to benchmark my disks while I’m playing. The result is that with the increased read latency and slower read speeds, the disk can’t keep up as I’m flying around and as such some of the textures don’t load in right away, highlighted in blue below. Whats interesting to note is that the GPU, CPU and RAM usage don’t look much different in the afterburner overlay from my initial screenshot. The easiest way to see if your disk is running slow is to check Task Manager or Resource Monitor. You would see things like High Active time, a high average response time, below shows it as 5.4ms which is fine but if you see times of 500ms or more your disk may have a problem.
Resource monitor can give you more information about what is actually doing the reading and writing on the disk. Things to look out for again are a high disk queue length that is high for a sustained amount of time. If it jumps up to 5-10 for a second or two don’t worry, but if it stays like that for a few minutes the disk isn’t processing read or write requests fast enough to serve the applications. You can also see if any other applications are hitting the disk and causing slow downs, like downloading a game in the background or your antivirus doing a scan can impact disk performance.
In order to consume a load of RAM, I opened up Photoshop and put a gradient on a 8K image, which ate up the rest of my 16GB RAM. The result is that because there is so little space in memory for the game to load files into, it resources to putting files on disk in the pagefile, which you can see has increased as well. The FPS has dropped considerably to 16FPS, the GPU usage has also dropped, probably because its trying to grab data from the disk instead of RAM which is taking a long time. If you didn’t meet the minimum specification of RAM or it was being used by other applications, this is the sort of stats you would see for a RAM bottleneck.
GPU & CPU
The GPU and CPU can affect each other and often one is the bottleneck for the other. You would see CPU utilisation as high and GPU utilisation low if you had a CPU bottleneck and you would see the opposite pattern for a GPU bottleneck.
The CPU does a lot of the AI processing, physics and requests for data to be moved to RAM from disk. If your CPU couldn’t keep up with the requests it would have high usage, meanwhile the GPU is waiting around for data to be made available for it to process.However if your GPU isn’t all that powerful or had little VRAM it would take longer to process shaders, load textures and draw them. The CPU then doesn’t need to work as hard to serve the GPU up data to process.
Turning on Dynamic Scale Resolution in GTA V renders the game at a higher resolution than my screen can display natively, which eats up GPU resources. The image below shows the high GPU usage and just about all of my 4GB of VRAM gone, but there is relatively average CPU utilisation. The FPS sits at 29FPS, the GPU is clearly the bottleneck in this situation.
To hinder the CPU I ran a CPU stress test in the background, eating away at our precious cycles. The GPU can have all the power in the world, but if the CPU is to slow to process requests to move data to RAM of the GPU, it hinders performance and the FPS drops. When testing on my i5-4670k @ 4GHz running Prime95 on all cores, with 100% CPU usage, the FPS dropped down to 31FPS from our base of 40fps.
Hopefully this has been a useful tutorial on how to find and identify bottlenecks when gaming!