High gfx load causes dropped frames on iOS even after load reduces

Explosions in my game trigger a series of particle systems to depict flames, heat and dust. I’m finding on my iPad (my iPhone is too old to hold 60fps) that if there are a number of explosions in quick succession the frame rate will drop to around 50 fps (dropping one frame every few) and stay there even after the explosions have stopped until I background the app and bring it back or restart the level which internally involves reloading the scene. I’d expect a temporary frame rate drop perhaps from increased gfx overdraw and cpu/memory load but not a persistent one. It’s not thermal throttling as I can provoke the behaviour early in app execution when the device is cold.

I can reduce the occurrence of the effect by keeping a decaying register of the number of particles that have been generated recently and reducing the number used for new explosions. With some tuning I may be able to eliminate it entirely. But it doesn’t make much sense that the frame rate drop should persist.
I’ve done both shallow and deep profiling under unity and looked at the XCode frame debugger and absolutely nothing extra shows up other than extra time waiting for vsync every few frames.
This combined with the fact that backgrounding the app for a second or two returns the game to 60 fps has me wondering if it’s an iOS or hardware issue. Wondering if anyone has seen something similar or could suggest some other tests I could run?

Further to this I set up a test bed to recreate the permanent frame drop consistently and found it always occurs with the alpha blended particle shaders I used and never with opaque ones I tested. It’s also independent of particle sorting mode. Moreover it’s more likely to occur when the particles are concentrated in one small area of the screen rather than distributed more evenly across it. Particle collision is off.
Once the drop is triggered you can drop graphics and cpu load to near zero and the frame drop will persist. I guess at least now I know that it’s related to extreme overdraw in one area of the screen I can at least come up with a system to more intelligently reduce particle production based upon location rather than just global number. It’s annoying having to be so conservative though. It’s not like regular load balancing. Once you go over that’s it until the level is restarted or the app is backgrounded.

After finding this problem wasn’t occurring on other devices I reset my iPad without restoring from a backup and the frame drop was fixed. Not sure if it was somehow related to the iPad originally being restored from an iPhone backup or intrusion by another app or setting.