[Nexus 5X General] Razorless:
More tests!

Alright, time for some more tests:

I did three rounds using the app "stability test" for benschmarking.

First round with a cool phone so it can utilize its big cluster @ 1.82GHz.

Second round with the phone so hot that it throttles the big cluster to it's minimum frequency (thermal limit 55°C (or higher), disabling core control and enabling msm_thermal also causes this thermal behavior).

Third round with the phone so hot that the big cluster goes offline(thermal limit 46°C).

Update: I accidentally switched the description for 46°C/55°C around. Now it is coherent with the spreadsheet.

The first interesting thing to note is the CPU score. For both the (fastest) single and multi core total score, it doesn't actually matter if the big cluster is @ 0.63GHz or offline. This leads me to believe that, as soon as the big cluster is thermal throttled to 0.63GHz, it is actually no longer utilized for any task*. It is idle while still drawing power and heating up the phone, a lot actually (see first post, 10°C higher average temps).

The second interesting thing is the "sustained performance". While the big core is online for a longer time, the little core is throttled sooner.

At the end I also tested at which thermal limit the observed behavior kicks in, and found it to be 49°C. I did this using the "navigation zooming" method from the first post. Using GPS and zooming an the map in the app "Navigon" generates more heat than benchmarks.

*Update: It seems there are some weird inconsistencies regarding the big cluster. Sometimes it is used at the throttled 0.63GHz but most of the time it is not. Update: below.

Update2: When thermal throttled, the big cluster is on standby most of the time. However, on rare occasion it was the other way around and the small one was on standby. In this case the single CPU score increased again. I'm not sure what triggers this since most of the (~90%) time when the big cluster is throttled to 0.63GHz it is indeed idling. Update: below.

Update3: After more testing it seems 44°C is the safe temperature.

Update4: More tests have shown 44°C to be the best limit. While at 49°C the big core is still taken offline after some time, it is useless at 0.63GHz. So our target should be to take it offline as soon as it reaches 0.63GHz.

Update5: Now things really start to get interesting.

The original test for sustained frequency of the big cluster may be inaccurate because the thermal management temp (still not sure which one it is) could have been higher/lower

It seems that setting the thermal limit actually only changes the temperature at which the big cluster is shut off. It doesn't seem to affect the frequency curve AT ALL. I made some tests in which I raised the thermal limit after the big cluster was throttled down, and it did not increase its frequency again. It's hard to take a screenshot of this, though. The only temperature trepn can monitor is core CPU temp. However, another temperature is responsible for thermal management.

The thermal management of the big cluster looks someting like this:

if Temp below *whatever* use burst to the maximum
else go offline (or be forced to idle while grilling the phone)

This means a big cluster being forcefully kept alive by a high thermal limit does nothing except for drawing lots of power and raising the temperature.

The only time a big core @ 0.63GHz is utilized, is when the small core is at or below 0.96GHz. But only if the temperature is not too high (not sure how high, cannot measure this with sufficient accuracy). So @ 0.63GHz the big cluster is useless and should go offline.

The best temperature for sustained performance is 44°C. This ensures that the big cluster is used to its full potential as long as possible, while also making sure it is taken offline when it is no longer being used.

tl;dr:

core control should be active, msm_thermal disabled

while throttled to 0.63GHz, the big cluster is actually on standby (most of the time, see above)

for max sustained performance set thermal throttling to 44°C