I have a game that was running brilliantly at 60fps on iOS 8. After updating to iOS 9, I’m getting bizarre issues where seemingly out of nowhere, the fps will drop to ~20-30fps for a good while, then randomly go back to 60fps. This is completely random, and has nothing to do with my levels themselves. Again, everything was perfect in iOS 8.
Has anyone experienced anything like this? This is happening on three of my devices (iPhone 5S, iPhone 6, iPhone 6 Plus). I can confirm that using iOS 8 (on my iPhone 5), this doesn’t happen. It’s very unsettling because I have no idea what is going on. When I profile it, the GPU spikes like crazy every frame (just goes up and down up and down) and there’s no information that is useful other than it is rendering related. I just don’t understand why SOMETIMES it would do it. If I restart the phone, everything is perfect. What on earth could possibly be going on?
Any thoughts are welcome. I will try in the meantime to set up a repro case. Thanks.
We’re experiencing the exact same issue you describe: intermittent periods of slowdown that occur / resolve at random. I noticed it only occurs on iOS 9 with 64-bit devices (my iPad 3 is unaffected) and isn’t dependent on build architecture or graphics API (Mono / IL2CPP / OpenGLES / Metal).
We’ve submitted a bug report, and QA confirmed that the issue is reproducible, but I’d strongly encourage anyone experiencing this issue also do the same, so it can be treated as a priority (Unity QA: Building quality with passion)
We’re finding this on iOS 9.x iPhone 6, but the app flips back and forth from 60 to ~30fps in random, roughly 10 second alternations. Reports from our users of similar, not sure the spread of devices.
I ran the profiler twice:
Showed no visible change in utilisation during the slowing down phenomenon and reports that we’re comfortably under 60 even when we’re clearly way below 60 - crazy.
Showed choppy spikes in overhead during the phenomenon (as in the screenshot in harrynesbitt’s post).
Updating iPhone 6 to iOS 9.1 beta seemed to fix the issue, can anyone else confirm this? Not a great solution waiting for the Nov-ish rumoured update. We need to get a fix out asap for our unhappy players…
FYI forcing OpenGLES seems to be a temporary fix for us. Note that we’re on Unity 4 and harrynesbitt said the issue was independent of graphics pipeline, the difference being he is on 5, wondering if that’s relevant…
I’ve noticed improvements myself after updating to 9.0.1 and 9.0.2, but reports are still coming in from users with these updates - it might be that the restart temporarily fixes the issue.
We’re using Unity 4.6.8 not 5. I’m pretty sure forcing OpenGLES didn’t help (would have been the first thing I tried) but I might be mistaken. The problem we have now is with all the restarts and updates it’s getting harder to reproduce the issue (which is a good thing, but also frustrating not knowing why).
Have you submitted a bug report? If you do, might be a good idea to quote our bug number (case 732217) to help get things moving.
It’s happening to me too (iPhone 5S, iOS 9.0.2, Unity 5.2.1f1). The interesting thing is that GPU utilisation is lower, not higher during -20FPS phase. The first thing which came to my mind was that there is a problem with display sync, so I tested it and found nothing. Switching to OpenGL didn’t help.
EXACT same issue I’m having (happens on 6 Plus also). Everything is buttery on my old iPhone 5 (which still has iOS 8). The profiler is absolutely meaningless because there is zero indication of what’s going on. The rendering just spikes and goes haywire (nothing else acts out of the ordinary). I will try the iOS 9.1 beta tonight and see if that resolves.
As per above comments, restarting the device temporarily fixes (only for a very very short time) before it ramps up again.
I also, just for shiggles, tried building with the 5.3 beta - still happens there.
So I managed to recreate the same behaviour with totally empty project. I just changed setFrameInterval in obj-c code to have 60 FPS refresh rate. After pulling iOS bottom menu several times up and down this happened. This is quite a big problem. Gonna file a bug report now.
Unity Pro 5.3.5f1
Xcode 7.3.1
iPad mini4 with iOS 9.3.2 -------- DeviceA
iPad mini2 with iOS 8.1 -------- DeviceB
Project runs on GLES3, I got 13ms + GPU Time on DeviceA, but only 7.6ms GPU time on DeviceB !!
That makes me crazy. Newer device runs slower than the older one.
I have the same issue with 4.7 - random drops to 30fps for no good reason. Tested on 9.3.2 and 9.3.3 beta, same behaviour. Is ‘low power gpu mode’ definitely the cause @aleksandras ?
I’ve since updated to Unity 5 (currently on 5.3.6) and the problem remains unfortunately. I’m pretty sure it’s an iOS issue.
I’ve set my maximum allowed timestep to 0.01666667 (i.e. 60hz) and the problem has mostly gone away, but I now instead of jerkiness I get ‘slowmo’ (as expected with the timestep set to 60hz). However I seem to get that a lot less than I got the jerkiness - I think I’m actually only getting it now when I have low battery and iOS throttles performance. My current totally uneducated guess is that forcing the physics timestep to 60hz might have a similar effect to @aleksandras suggestion to give the GPU more to do, but on the CPU side.
Or something.
At this point I have no bloody clue! If anyone has anymore insight into these random periods of framerate shittiness they would be incredibly gratefully received.