redhat-performance / tuned

Tuning Profile Delivery Mechanism for Linux
GNU General Public License v2.0
755 stars 171 forks source link

Add intel uncore plugin #590

Closed sgruszka closed 5 months ago

sgruszka commented 5 months ago

Add simplistic intel uncore plugin to so that uncore maximum and minimum frequency can be set.

For example lowering uncore maximum frequency can have significant impact on the total power consummation of SoC.

Refer to the following link to get details: https://docs.kernel.org/admin-guide/pm/intel_uncore_frequency_scaling.html

When system with TPMI (Topology Aware Register and PM Capsule Interface) is detected only devices configured via TPMI are used, since configuring via deprecated (package/die) interface create conflict on new systems.

Plugin allow to configure frequency per individual uncore units, example profile config options can look like this:

[intel_uncore_all0] # power save type=intel_uncore devices=uncore0* max_freq_khz=2000000

[intel_uncore_10] # performance type=intel_uncore devices=uncore10 min_freq_khz=4000000

[intel_uncore] # for all others save power with little performance cost max_freq_khz=4600000

For systems where maximum/minimum configured frequency is above/below the system limits, values are capped to the limit. Wrong configuration i.e. maximum frequency below minimum frequency is skipped and errors are logged.

TODO:

sgruszka commented 5 months ago

The main blocker is the command_set internal API change (see inline comments).

Maybe you could try to use udev for the enumeration of uncores (inline comment).

Other than that and some minor things (in inline comments) LGTM.

Updated with minor fixes and added remove parameter with no implementation (since hotplug events have to be tested).

yarda commented 5 months ago

Thanks for the info. I think it's good enough for the merge. Currently, it isn't used in any upstream profile, thus we can e.g. say it's technology preview in the new TuneD release and improve it later (by e.g. hotplug support).

yarda commented 4 months ago

I thought a bit about it and usually in the past when we added intel specific feature other CPU vendors usually followed sooner or later. So maybe rename the plugin to just "uncore"? It's just RC.1 release now, thus we can still do it quite cheap.

yarda commented 4 months ago

@sgruszka what do you think?

sgruszka commented 4 months ago

Sorry for late answer, I was on vacation.

I thought a bit about it and usually in the past when we added intel specific feature other CPU vendors usually followed sooner or later. So maybe rename the plugin to just "uncore"? It's just RC.1 release now, thus we can still do it quite cheap.

Yes, sure, make sense. I can prepare the name change.

sgruszka commented 4 months ago

@yarda crated PR #606 for plugin rename .