#(IN-37258) Long stalls can be observed on Android platform
1 messages · Page 1 of 1 (latest)
Hey Lim! Unfortunately I can't provide any extra details today. We have a lot of non-performance related work. Cristian (and I) are doing performance work here and there, but it's slow progress.
🤔 I see. Btw currently I found that prediction is spiking on Android platform. At the beginning prediction still spend quite low time but after some time it will spike to spend quite large time. Is that netcode issue or it's Android platform optimization issue?
Very hard to speculate, but:
- My guess is a combination of small "death spirals" + network conditions.
- Are you able to see ping over time? I.e. Is ping (RTT) changing wildly throughout the session?
- Are you able to view / log how many prediction steps you're performing per render frame? Is that increasing? Or is each prediction step taking longer?
- Maybe it's chunk utalization getting worse over time?
Apart from the obvious (more predicted ghosts), higher ping should be the only thing causing prediction to get more expensive.
I can pm u profiler data.
- Should be no "death spirals since I run real android device as client connect to pc as server.
- Ping (RTT) should be just almost same before and after.
- From profiler, I see it's calling roughly 6 times per frame at before and after but after it just spend much higher time than before
- Should be no chunk utalization issue since I didn't keep changing archetype every frame
- Sure, happy to take a quick look.
- Death spirals can happen on the client even without server.
Client takes too long to process a rollback + prediction loop, falls behind. Next prediction loop, needs to do more work to catch up. Falls further behind. Repeat. etc. - 6 times per frame on both before and after rules out ping degradation yeah. Odd.
- Could it be device temp-related self throttling? I.e. Does it get hot? If it's one of the supported Samsung devices you could plug in the Adaptive Performance SDK.
If it's temp, you'll also see in the profiler that worker threads become less available, or take longer, AFAIK.
One way to test this is to test with a sub-set of the game that is far below your performance threshold, and see if netcode degrades there.
Oh, btw, is it just netcode taking longer? Or do all systems slow down?
**Just to add: **I used prediction + rollback as an example of what can cause death spiral, but it can happen with any CPU work that is on a fixed DT. This is why variable DT for rendering is so useful (and common).