OnePlus 3/3T Smoothness Increases with ‘Conservative’ Governor… Seriously (OxygenOS)
A couple of days ago, u/AmirZ shocked the OnePlus subreddit when he found that setting the OnePlus 3T‘s “Big Core” cluster to a “conservative” governor would dramatically increase fluidity. Yeah, seriously.
For those who haven’t caught the contradiction here, the kernel’s governor is responsible for managing the processor’s scaling behavior, and “conservative” governors bias the phone towards their lowest set frequencies. This means that the processor will ramp up frequencies under larger and more-persistent loads, which in turn adds to battery life at the expense of smoothness and responsiveness. The OnePlus 3 and 3T use the “interactive” governor by default, as expected of any Android phone, which is faster at scaling and leaping across the frequency spectrum set by the OEM or user. There are variations of both governors that you undoubtedly came across if you ever opened a kernel manager app to tune your settings, but “conservative” is usually not the first choice by users due to the performance handicaps it introduces, and because “interactive” usually does a pretty good job for the majority of us anyway. Except when it doesn’t.
It was wholly unexpected to the OnePlus subreddit that such a change would actually increase scrolling performance, and while users were quick to share their experiences and a screenshot or two of their on-screen GPU profiling histograms, many remained unconvinced. To be honest, I was extremely skeptical about this tweak being legitimate, though I also trusted the overall verdict enough to renounce the LineageOS ROM I had set up on my OnePlus 3T, flash the latest Oxygen 7.1.1 Beta, and try it out. To my surprise, it worked far better than I expected, and it wasn’t just some collective placebo.
I’ve issued a request to OnePlus and I’ve asked some of my smarter friends to look into this issue, but I haven’t heard back from either group so far. I don’t want to irresponsibly speculate about why the “interactive” governor is doing such a relatively-poor job here, so instead I am going to show you some of my findings. If you want to try this out on your rooted OxygenOS ROM, you need to 1) download a kernel managing app, and then 2) set the “big core” cluster’s governor to “conservative” — “on demand” works too, but I found no differences that would merit losing the former’s power savings. Some users have reported that, instead, they got these results by switching their “little” cluster’s governor as well.
I first toggled the GPU Profiling tab and found immediate, consistent and wholly-reproducible improvements by switching the governor, which quickly ruled out confounding variables. I then decided to dump the framedata and plot the output while doing specific tasks that showed significant framedrops on the default settings. These include scrolling through the settings menu (up, then down, then up again, in two seconds), scrolling through Gmail (consistent three-second scroll on both), scrolling through an inactitve Hangouts chat populated with emoji, images and a videopreview (consistent three-second scroll on both). Finally, I looked at a pet-peeve of mine: the framerate issues when switching to the Oxygen Launcher’s left-most screen. You can find the plots below.
As you can see, the differences are significant. The OnePlus 3T on “conservative” manages to keep a much lower frame rendering time in general, with far fewer spikes and less jerky frames. I’ve set the green line to represent the 16ms line, just like in regular on-screen GPU profiling bars, and as you can see the “interactive” setup struggles to stay under that line even during simple scrolling. You can also see that in the segments where the “interactive” governor fails to stay under 16ms per frame, the conservative sample either doesn’t cross the line or recovers more quickly. In the Hangouts scrolling samples, the spikes predictable came from scrolling past the YouTube video previews and images, and overall the “conservative” governor did a much better job. Finally, the difference was so large that in retrospect, I should have set a fixed scale, as the green line on the “conservative” samples is much higher given it sees far less and far shorter spikes.
Suggested reading: Dissecting the OnePlus 3T’s Performance
Overall, this is something you definitely should check out. Your mileage may vary, but it doesn’t seem to introduce any negatives in my usage (logically, there shouldn’t be any issues other than performance, which is seemingly not the case in this specific and odd instance). [Warning: anecdotal evidence ahead] I ran this modification all day yesterday, and my OnePlus 3T championed through with a charge lasting from 7AM to 11PM entirely on LTE, with 4 hours of screen on time, some GPS usage and at least two hours of YouTube Red background playback (screen off). I really can’t say if it’s significantly better just yet, but it was a very good run that carried me through a busy day.
Give it a try!