Hello,
We are facing major overheating issues across all mobile devices, but especially on iOS.
Using Apple Power Profiler, we can see that the main source of the issue appears to be the CPU, which shows a significantly higher Power Impact than the GPU.
At the same time, we see that our workload across all threads is executed very quickly, around 4–5 ms out of the 16.6 ms frame budget for 60 FPS. This might actually be bad, because it may mean that the CPU is running at a higher frequency than necessary, causing higher Power Impact.
I noticed that there is code that forces TimeCritical and Highest priorities for the Game and Render threads, which might be the reason for this behavior. I tried changing them to BelowNormal, but did not notice any difference. Then I tried an alternative mechanism: Quality of Service (QoS):
After running a stress test and setting QoS to QOS_CLASS_BACKGROUND for both the Game and Render threads, FPS dropped to 15. With QOS_CLASS_UTILITY, FPS was around 30. With QOS_CLASS_DEFAULT, FPS returned to 60, but with strange drops to a stable 57–58 FPS caused by frame present.
When comparing QOS_CLASS_DEFAULT with the default in Power Profiler, there is no major difference in CPU Power Impact. However, our battery drain tests show a noticeable improvement: 60 minutes of gameplay started consuming less battery, 30% vs 33% on iPhone 11 Pro and 15% vs 20% on iPhone 14 Pro Max.
So the questions are:
Could you please comment on the situation where the CPU workload is executed much faster than the frame budget, but with very high CPU Power Impact? What are the recommended ways to handle this in UE?
Do you have any insights into using QoS on iOS instead of regular thread priority? Could it be a solution for the problem we are seeing? Also, how could it cause the 57 FPS lock issue?
We also found this entitlement, which might be relevant: https://developer.apple.com/documentation/bundleresources/entitlements/com.apple.developer.sustained-execution
Do you know anything about it, and whether it could help in this case?
Please find the Unreal Insights traces from multiple tests on different iOS devices attached.
[Attachment Removed]