Page MenuHomeSolus

Enable TEO CPU Idle Governor in kernel
Closed, WontfixPublic

Description

Currently, the ability to set the CPU idle governor to TEO is limited by the kernel build options. This CPU idle governor is similar to the menu governor, but uses a different strategy for determining the idle duration, which works well with newer CPUs like the Ryzen 3000 family of processors. I'd like to request that the governor be enabled in the kernel build options, so those who wish to use it may do so.

Event Timeline

serebit created this task.Nov 26 2019, 3:14 PM
DataDrake triaged this task as Needs More Info priority.EditedNov 26 2019, 7:10 PM
DataDrake added a subscriber: DataDrake.

I'd like to see some performance metrics on this before I actually enable it. Not in the habit of turning things on just to try them.

Just to be clear, I'm not suggesting this be the default necessarily, but I do think it's worth including in the kernel build for those who wish to use it.

I couldn't find any benchmarks of the final version, but there are benchmarks of a prerelease version before the merge in kernel 5.1, which can be viewed here: https://lwn.net/ml/linux-pm/1541877001.17878.5.camel@suse.cz/

I've built the kernel with CONFIG_CPU_IDLE_GOV_TEO=y and set the cpuidle governor to teo in boot params. Performance seems to be about the same, will test with openbenchmarking soon.

More interested in battery life since that's what this should help the most with. I'm not surprised by the slowdowns it causes though.

I can test idle battery usage on my laptop and wall power on my desktop. Laptop will be more granular.

serebit added a comment.EditedNov 28 2019, 5:39 PM

@DataDrake Battery discharge on my i5-7200U laptop at complete idle went up by 50 mW (from 2.90 W to 2.95 W) with TEO enabled, which I'm not necessarily sure is statistically significant. I don't think TEO was designed with Intel chips in mind. I'll look into results with my Ryzen 3700X, and I'll also see if I can get results from someone with a Ryzen laptop.

It absolutely was designed for Intel chips. Rafael works for Intel and is being paid by them to work on the power management and ACPI subsystems of the kernel. So if it's slower performance and higher power consumption on Intel, this obviously isn't ready for prime-time.

The results on my desktop were interesting. At complete idle, the system was drawing about a watt less with TEO enabled. With some things running, the system would jump up to a higher power usage every so often, and then go back down. The duration of the higher power usage seemed to be lessened with TEO enabled.

It absolutely was designed for Intel chips. Rafael works for Intel and is being paid by them to work on the power management and ACPI subsystems of the kernel. So if it's slower performance and higher power consumption on Intel, this obviously isn't ready for prime-time.

Fair enough. It doesn't seem to have much effect anyway, so I think this is the right call. If I may ask, though, why the aversion to including it in the config, even if the default stays the same?

I'm averse to adding any new modules if they aren't going to be used. The more modules there are the slower the boot process, the more memory the kernel uses, etc. They don't even have to be loaded to have an impact. Just the kernel knowing they exist is enough.

I'm averse to adding any new modules if they aren't going to be used. The more modules there are the slower the boot process, the more memory the kernel uses, etc. They don't even have to be loaded to have an impact. Just the kernel knowing they exist is enough.

Makes sense. Thanks for the explanation.

serebit closed this task as Wontfix.Feb 1 2020, 10:56 PM