Search Unity

Android thermal throttling completely destroying out framerate

Discussion in 'Android' started by Prodigga, Nov 20, 2015.

  1. Prodigga

    Prodigga

    Joined:
    Apr 13, 2011
    Posts:
    1,123
    Our game runs perfectly smoothly on an iPhone 5s (The device does get pretty hot), and it also runs well on my brand new Nexus 6P. But not for very long..

    The thermal throttling on Android grinds our game to a half within 1 or 2 minutes of actual gameplay. We drop to around 20 FPS.

    Our game isn't the most optimized thing out there, but this is a Nexus 6p vs an iPhone 5s. Clearly the 6p has what it takes to keep up/run smoother than a 5s - this is evident in the first minute or two of gameplay where the device is still cold and runs at full power. Soon as it heats up however it drops right down.

    What can we do about this? I just feel like an iPhone 5S shouldn't be outclassing one of the newest and fastest android devices on the market today.

    I can see the "ThermalEngine" on the device logging messages each time it throttles the GPU. I am able to see exactly when it is throttling the speeds. I am also able to observe that when the device is 'warm' it seems to be hyper sensitive to processing load. In our menu, there is not much going on and the game runs fairly smoothly. Here, the GPU is 'set to' 600000000 (Whatever that means!). But as soon as I jump into the gameplay, the ThermalEngine immedietly throttles down to under 2/3 of full power. (Timestamps indicate this happened in under 10 seconds) which brings out game to 20-25FPs from a smooth 60 fps.

    Code (CSharp):
    1. 1-20 17:33:12.339: I/ThermalEngine(3819): ACTION: GPU - Setting GPU[0] to 510000000
    2. 11-20 17:33:13.343: I/ThermalEngine(3819): ACTION: GPU - Setting GPU[0] to 450000000
    3. 11-20 17:33:19.357: I/ThermalEngine(3819): ACTION: GPU - Setting GPU[0] to 390000000
     
  2. GuyTidhar

    GuyTidhar

    Joined:
    Jun 24, 2009
    Posts:
    320
    Actually we seem to have horrible android devices heat up our selves.
    We are developing a pure 2D game, which runs wonderfully even on iPhone 5 (and possibly earlier).

    While the profile shows no apparent resource abuse, and the Nexus 5 runs the game FPS wise very well, in terms of heat, it heats up to horrible levels ending in the device being shut down and battery getting drained in no time.

    The monitor Android shows lines like the following:
    E/ThermalEngine(199): override action 5000
    E/ThermalEngine(199): Thermal-Server: Thermal received msg override 5000
    E/ThermalEngine(199): override_notify : SS mode 1 override 5000

    We're using Unity 5.2.2f1
     
  3. GuyTidhar

    GuyTidhar

    Joined:
    Jun 24, 2009
    Posts:
    320
    Bump...