Performance - Hardware Usage
we are realy happy to work with Unreal, a greate Engine to use.
We have performance problems with our game, but the hardware seems to do nothing and could need a hand to help out.
For testing I set up a new empty project. Its only one actor that spawn multiple Static Mesh Component. The graph (left) is a float debug history with max value of 0.02222ms and is showing the delta frame time. The scene is played in standalone mode.
I know that u can merge actors like this! This test is only about to know why the hardware is "sleeping"
Desired frame rate:
As of the pics you can see that I want to get 120 frames for this test, but that frame rate is not reached when playing. As of the CPU and GPU pics you can see that the hardware could actually do much more, but simply does not. I would expect the hardware to put more power into the process if need be and the need is there.
The GPU is only at 17% load with less than max frequency, but stat unit shows GPU=15.2ms time used for that frame. I gues the GPU is CPU render thread bound here (stat unit: draw = 14.69ms), is that correct? But if the CPU is the limiting factor, why is each core at max of 60%? I would at least expect one core to always work with 100% if there is work to do.
Harddrive is not getting accessed and RAM is more than enough.
Appreciate any help I can get. Regards
Hi! Gotta express joy of seeing a detailed, specific question with screenshots. That is really nice.
Your performance is totally on par with what would I expected from this scene. Your guess about you being render thread bound is totally correct. Your number of draw calls is at least two times higher than what I would consider "maximum acceptable" for myself on a PC scene. I would not expect CPU usage to reach 100% before you start experiencing highly noticeable bottleneck.
Technically, you should try merging your the objects in a single mesh or try using instanced meshes. It should drastically improve performance in your case.
GPU clock speed and load are also not the most conclusive factors. You should consider giving GPU profiler a try.
Lastly, ensure that you are doing tests in standalone game. Play in Editor usually has added costs.
Still up for some more suggestions on that topic.
It does not matter if using RuntimeMeshComponent or simple Static Meshes. The result is the same. The test was made with StaticMeshes, which should be looked into first.
Up for any suggestions.
Ok, well. Came to the solution by trying something else. In the example it was just not that clear cause of the 8 cores of the CPU. The renderthread should run on max. possible speed, but it is just one thread. The thread is just passed from core to core, so everyone gets a share.
But why does the CPU always pass the thread around and does not keep it in one thread? This is just a thought, but it may be that the CPU always tries to have the same amount of load at all cores because of heat dissipation. Metal deforms if heat is not applied equally over the whole body. If the area of heat production is larger, it is also easier to pass it to the cooling unit. Might also reduce power consumption, which also reduce heat production.
Thanks everyone for trying to help, always appreciated.
answered Nov 13 '16 at 10:52 AM
Follow this question
Once you sign in you will be able to subscribe for any updates here