Me and a couple of buddies have been working on a game for some time now, and now nearing its completion we started performance testing on different computer configurations.
We noticed that especially since switching to UE5 that the CPU usage is way above what we expected during normal play of our game.
Here is a screenshot with profilers and current CPU utilisation:
To give a bit of context, this usage is on a mostly empty void map with just the inside of an apartment in view, which has a few interactible objects in the scene (none of which do anything unless interacted with). The only actors/timelines that tick are the day/night cycle and the line trace from the character to detect when interactible items are in view.
Now back at the screenshot, ~20% utilisation on a Ryzen 9 5900X, which is overkill for a game like this is kinda ridiculous.
We tried all the profiling tools we could find to determine what exactly is taking up most frametime and debugging to find if there are any runaway loops and nothing came up.
If we change the graphics to low the cpu usage is mostly the same, and since the low preset disables almost all the new lighting effects i doubt it’s the new software GI solution added in UE5.
We tested this on a few other systems and here are the results:
-
a laptop with an i7 4710HQ and a GTX 850M: The game runs and besides the GPU being way below what UE5 expects, the CPU sits at about 80-90% with nothing else running in the background. The game runs but it’s essentially at its limit.
-
an older desktop with a Core 4 Quad and a GTX 960: the GPU side handles the game just fine, but the CPU usage is so large, it starts tanking the performance of the game into single digits (and everything else on the pc for that matter) to the point where it starts locking up the entire screen, needing to force close out of the game.
-
another member of our team has a pc very similar to mine (same CPU) and his usage is virtually the same.
What debugging tools are there that could help figure this out? The profilers in the screenshot above don’t seem very useful.