Overly-Agressive intel_lpmd config by default?

intel_lpmd manages CPUs with hybrid topology (e. g. P / E / LPE cores). It is installed by default on Fedora KDE Workstation. In a recent update, intel_lpmd gained support for my CPU (Arrow Lake H, Core Ultra 7 255H).

My CPU has a hybrid design with 6P+8E+2LPE cores (Performance, Efficiency, Low Power Efficiency)

Ever since this update, if I have my performance profile set to “balanced”, intel_lpmd disables all P-cores, if it is set to “power save”, even the E cores are turned off.

While this might seem like a good idea in theory (saving power by disabling “big” cores), in practice I don’t really see the power savings. Setting my system to “Energy Saver” now leaves me with just 2 extremely weak LPE cores, which don’t sit on the main compute tile, don’t have L3 cache and immediately spike to 80-100% usage even on an idle desktop. Package power draw stays at ~4.3 watts, but when enabling all other cores, it only increases to ~4.7 watts, so the effect of intel_lpmd is rather minimal while grinding system performance to a halt.

Before this update, the power profiles mainly just affected the scheduler and CPU clock speed (e. g. disabling turbo when in energy saver, leaving everything unchanged in balanced and never going below base clock in performance mode). This seems like a more reasonable approach than broadly disabling half my CPU by default, and gutting it in energy saver mode, while not even saving that much power.

I didn’t try changing the config of intel_lpmd yet, but it might be possible to change some stuff so that it doesn’t take such drastic measures. Haven’t tried that yet though.

Another thing I noticed is that intel_lpmd only disables the cores for userspace, but the kernel still has to handle interrupts on CPU 0, which is on the compute tile and a P core, so I’m not sure if the compute tile can be disabled when only the LPE cores are active.

Can you add your observations here please and thanks, 2532653 – Latest version of Intel-lpmd makes power-save cause everything to be slow

Yes, will do. Currently still working on a fixed LPMD config for my CPU.

Commented on the bug report with my findings: 2532653 – Latest version of Intel-lpmd makes power-save cause everything to be slow

Also wrote a fixed config (replace /etc/intel_lpmd/intel_lpmd_config_F6_M197.xml):

<?xml version="1.0"?>
<Configuration>
        <lp_mode_cpus></lp_mode_cpus>
        <lp_mode_epp></lp_mode_epp>
        <Mode>1</Mode>
        <PerformanceDef>-1</PerformanceDef>
        <BalancedDef>0</BalancedDef>
        <PowersaverDef>0</PowersaverDef>
        <HfiLpmEnable>0</HfiLpmEnable>
        <WLTHintEnable>1</WLTHintEnable>
        <WLTHintPollEnable>1</WLTHintPollEnable>
        <HfiSuvEnable>0</HfiSuvEnable>
        <WLTHintMask>15</WLTHintMask>
        <IgnoreITMT>0</IgnoreITMT>

        <States>
                <CPUFamily> 6 </CPUFamily>
                <CPUModel> 197 </CPUModel>
                <CPUConfig> * </CPUConfig>
                <State>
                        <ID> 1 </ID>
                        <Name> Idle </Name>
                        <WLTTypeMask> 3 </WLTTypeMask>
                        <ActiveLcores>ALL</ActiveLcores>
                        <ActiveEcores>ALL</ActiveEcores>
                        <IRQMigrate>1</IRQMigrate>
                        <EPP>255</EPP>
                        <EPB>15</EPB>
                </State>
                <State>
                        <ID> 2 </ID>
                        <Name> Sustained Load </Name>
                        <WLTType> 2 </WLTType>
                        <ActiveLcores>ALL</ActiveLcores>
                        <ActiveEcores>ALL</ActiveEcores>
                        <ActivePcores>ALL</ActivePcores>
                        <IRQMigrate>1</IRQMigrate>
                        <EPP>64</EPP>
                        <EPB>4</EPB>
                </State>
                <State>
                        <ID> 3 </ID>
                        <Name> Bursty Load </Name>
                        <WLTType> 3 </WLTType>
                        <ActiveLcores>ALL</ActiveLcores>
                        <ActiveEcores>ALL</ActiveEcores>
                        <ActivePcores>ALL</ActivePcores>
                        <IRQMigrate>1</IRQMigrate>
                        <EPP>128</EPP>
                        <EPB>6</EPB>
                </State>
        </States>

</Configuration>

This config:

  • Enables all cores in performance mode
  • Enables / Disables P cores based on system load in Balanced and Energy Saver mode
  • LPE and E cores are always enabled.