On an iPhone SE, after an upgrade to iOS 11.4, I am now seeing a very strange CPU throttling result after about 8-10 seconds. I am using a very simple example app with (Deployment Target set to iOS 10.3) that displays a single view and does a decode operation inside a call to drawInMTKView. The CPU usage is as expected when the app starts (10-15%) but after an 8-10 second window the CPU seems to be massively throttled down so that a frame decode operation that was taking 4-5 ms at full CPU speed then takes 16-17 ms where (CPU usage is about 60%). I attempted to disable any iOS idle timer by toggling the idleTimerDisabled flag, but this seems to have no effect on this. What is interesting is that rotating from Portrait to Landscape will reset this throttling and the decode will operate at full speed again until the 8-10 seconds of inactivity again throttles it down. What could possibly be going on here? I have read that iOS 11 contains some new battery management code, but my device is new and the battery settings in General->Battery indicate that the device is operating at full speed. Is there some other app flag or setting that can disable this throttling?
(full speed)
decode time 5.74 ms
decode time 5.87 ms
decode time 5.37 ms
decode time 5.81 ms
decode time 5.56 ms
decode time 5.97 ms
(after 8-10 second, reduced speed)
decode time 16.65 ms
decode time 16.65 ms
decode time 17.02 ms
decode time 16.49 ms
decode time 16.95 ms
decode time 16.03 ms
from iOS 11 CPU throttling and idle timer
No comments:
Post a Comment