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.
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://email@example.com/
@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.
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.