intel_lpmd_config.xml(5)

πŸ“¦
version 0.1.0^git20260608.40d18a6 Β· 5 versions
, in centos-stream 10, centos-stream 9, fedora 43, fedora 44

πŸ¦‹ intel_lpmd_config.xml β€” section 5 of the File Formats Manual πŸ¦‹

okay bestie, listen up πŸ’– this is the page about intel_lpmd_config.xml, and it's genuinely iconic. it's part of the File Formats Manual, it lives in section 5, and it's the whole vibe guide for the Intel Low Power Mode Daemon. no cap. let's go ✨


🌸 NAME 🌸

intel_lpmd_config.xml β€” the configuration file for intel_lpmd πŸŽ€


✨ SYNOPSIS ✨

$(TDCONFDIR)/etc/intel_lpmd/intel_lpmd_config.xml

that's literally where it lives, bestie. that's the path. 🫢


πŸ’œ DESCRIPTION πŸ’œ

intel_lpmd_config.xml is the config file for the Intel Low Power Mode Daemon. it's the place where you describe states and the rules for switching between those states. and what even is a state? it's a custom, user-defined set of parameters that the platform should use to hit that sweet spot between optimal performance and energy saving πŸ‘‘. the switching rules are basically "what system info decides whether we need to change state or not" β€” and that info can come from a hardware source, OR it can be calculated in software if the hardware features just aren't there. either way, we ball πŸ’…

lp_mode_cpus is the set of active CPUs when the system is in Low Power Mode. usually this is the group of the most power-efficient CPUs on a platform, because that's how you get the best power saving. if you don't specify it, the intel_lpmd tool can detect it automatically for you β€” no stress 🌈. for example: it uses L-cores on the Intel PantherLake platform, the E-core Module on the Intel Alderlake platform, and the Low Power E-cores on SoC Die on the Intel Meteorlake platform. she knows what she's doing, fr fr.

Mode specifies the way to migrate the tasks to the lp_mode_cpus. three flavors, pick your fighter:

  • Mode 0: set cpuset to the lp_mode_cpus for systemd. all tasks created by systemd will run on these CPUs only. this is supported for cgroup v2 based systemd only ⚠️.
  • Mode 1: isolate the non-lp_mode_cpus so that tasks are scheduled to the lp_mode_cpus only.
  • Mode 2: force idle injection to the non-lp_mode_cpus and leverage the scheduler to schedule the other tasks to the lp_mode_cpus.

PerformanceDef / BalancedDef / PowersaverDef specifies the default behavior for a given power profile. the values:

  • -1 : Never enter Low Power Mode. she stays awake, always πŸ’€
  • 0 : opportunistic Low Power Mode enter/exit based on HFI/Utilization request. main character energy β€” she comes and goes as she pleases ✨
  • 1 : Always stay in Low Power Mode. committed. loyal. periodt πŸ‘‘

HfiLpmEnable specifies if the HFI monitor can capture the HFI hints for Low Power Mode.

HfiSuvEnable specifies if the HFI monitor can capture the HFI hints for survivability mode.

WLTHintEnable β€” Enable use of hardware Workload type hints.

WLTHintNotificationDelay β€” Set hardware workload notification delay in milliseconds.

WLTProxyEnable β€” Enable use of Proxy Workload type hints.

util_entry_threshold specifies the system utilization threshold for entering Low Power Mode. the system workload is considered to fit the lp_mode_cpus capacity when system utilization is under this threshold. setting it to 0 or leaving it empty disables the utilization monitor ⚠️.

util_exit_threshold specifies the CPU utilization threshold for exiting Low Power Mode. the system workload is considered to not fit the lp_mode_cpus capacity when the utilization of the busiest lp_mode_cpus is above this threshold. setting it to 0 or leaving it empty disables the utilization monitor ⚠️.

IgnoreITMT β€” Avoid changing scheduler ITMT flag. this means that during transition to low power mode, the ITMT flag is not changed, which reduces latency during switching πŸŽοΈπŸ’¨. this flag is not used when the configuration uses "State" based configuration, where this flag can be defined per state. also, ITMT is only relevant for platforms before Lunar Lake and the debugfs file is not present on later platforms. iykyk.

States β€” Allows one to define per-platform low power states. each state definition has an entry condition and a set of parameters to use.


πŸŽ€ State Definition πŸŽ€

there can be multiple state configurations present, bestie. each configuration is valid for a platform. a state header defines parameters, which are used to match a platform. the matchers:

  • CPUFamily β€” CPU generation to match.
  • CPUModel β€” CPU model to match.
  • CPUConfig β€” Define a configuration of CPUs and TDP to match different skews for the same CPU model and family. the CPU configuration string format is: xPyEzL-tdpW. for example: 12P8E2L-28W, defines a platform with 6 P-cores with hyper threading enabled, 8 E cores, 2 LPE cores and the TDP is 28W. this configuration allows the wildcard "*" to match any combination πŸ¦‹.

🌈 Per State Definition 🌈

each "State" defines entry criteria and parameters to use. here's the whole cast:

  • ID β€” A unique ID for the state.
  • Name β€” A name for the state.
  • EntrySystemLoadThres β€” System Entry load threshold in percent. system utilization is different based on the number of active CPUs in a configuration. this value is calculated from /proc/stat sysfs. to enter into this state, the system utilization must be less or equal to this value.
  • EnterCPULoadThres β€” CPU Entry load threshold in percent. per-CPU utilization is also obtained from /proc/stat. to enter into this state, any active CPU utilization must be less or equal to this value. EnterCPULoadThres is checked before EntrySystemLoadThres to match a state πŸ‘€.
  • WLTType β€” Workload type value to enter into this state. if this value is defined then utilization based entry triggers are not used. to use this, WLTHintEnable must be enabled, so that hardware notifications are enabled.
  • WLTTypeMask β€” Mask of workload type values to enter into this state. this has higher priority than WLTType. if this value is defined then utilization based entry triggers are not used.
  • ActiveCPUs β€” Active CPUs in this state. the list can be comma separated or use "-" for a range. this is optional to have active CPUs in a state.
  • EPP β€” EPP to apply for this state. -1 to ignore.
  • EPB β€” EPB to apply for this state. -1 to ignore.
  • ITMTState β€” Set the state of ITMT flag. -1 to ignore. ITMT is only relevant for platforms before MTL and the debugfs file is not present on later platforms.
  • IRQMigrate β€” Migrate IRQs to the active CPUs in this state. -1 to ignore.
  • MinPollInterval β€” Minimum polling interval in milliseconds.
  • MaxPollInterval β€” Maximum polling interval in milli seconds. this is optional, if there is no maximum is desired.
  • PollIntervalIncrement β€” Polling interval increment in milli seconds. if this value is -1, then polling increment is adaptive based on the utilization 🧚.

πŸ’… FILE FORMAT πŸ’…

the configuration file format conforms to XML specifications. yes bestie, XML. she's retro, she's classic, she ate πŸ“

<Configuration>
     <!--
          CPU format example: 1,2,4..6,8-10
     -->
     <lp_mode_cpus>Example CPUs</lp_mode_cpus>

     <!--
          Mode values
          0: Cgroup v2
          1: Cgroup v2 isolate
          2: CPU idle injection
     -->
     <Mode>0|1|2</Mode>

     <!--
          Default behavior when Performance power setting is used
          -1: force off. (Never enter Low Power Mode)
           1: force on. (Always stay in Low Power Mode)
           0: auto. (opportunistic Low Power Mode enter/exit)
     -->
     <PerformanceDef>-1|0|1</PerformanceDef>

     <!--
          Default behavior when Balanced power setting is used
          -1: force off. (Never enter Low Power Mode)
           1: force on. (Always stay in Low Power Mode)
           0: auto. (opportunistic Low Power Mode enter/exit)
     -->
     <BalancedDef>-1|0|1</BalancedDef>

     <!--
          Default behavior when Power saver setting is used
          -1: force off. (Never enter Low Power Mode)
           1: force on. (Always stay in Low Power Mode)
           0: auto. (opportunistic Low Power Mode enter/exit)
     -->
     <PowersaverDef>-1|0|1</PowersaverDef>

     <!--
          Use HFI LPM hints
          0 : No
          1 : Yes
     -->
     <HfiLpmEnable>0|1</HfiLpmEnable>

     <!--
          Use HFI SUV hints
          0 : No
          1 : Yes
     -->
     <HfiSuvEnable>0|1</HfiSuvEnable>

     <!--
          System utilization threshold to enter LP mode
          from 0 - 100
     -->
     <util_entry_threshold>Example threshold</util_entry_threshold>

     <!--
          System utilization threshold to exit LP mode
          from 0 - 100
     -->
     <util_exit_threshold>Example threshold</util_exit_threshold>

     <!--
          EPP to use in Low Power Mode
          0-255: Valid EPP value to use in Low Power Mode
             -1: Don't change EPP in Low Power Mode
     -->
     <lp_mode_epp>-1 | EPP value</lp_mode_epp>

</Configuration>

⭐ EXAMPLE CONFIGURATIONS ⭐

πŸ’– Example 1: This is the minimum configuration. πŸ’–

  • lp_mode_cpus: not set. Detects the lp_mode_cpus automatically.
  • Mode: 0. Use cgroup-v2 systemd for task migration.
  • HfiLpmEnable: 0. Ignore HFI Low Power mode hints.
  • HfiSuvEnable: 0. Ignore HFI Survivability mode hints. with both HfiLpmEnable and HfiSuvEnable cleared, the HFI monitor will be disabled ⚠️.
  • util_entry_threshold: 0. Disable utilization monitor.
  • util_exit_threshold: 0. Disable utilization monitor.
  • lp_mode_epp: -1. Do not change EPP when entering Low Power Mode.
<?xml version="1.0"?>
<Configuration>
     <lp_mode_cpus></lp_mode_cpus>
     <Mode>0</Mode>
     <HfiLpmEnable>0</HfiLpmEnable>
     <HfiSuvEnable>0</HfiSuvEnable>
     <util_entry_threshold>0</util_entry_threshold>
     <util_exit_threshold>0</util_exit_threshold>
     <lp_mode_epp>-1</lp_mode_epp>
</Configuration>

🌸 Example 2: 🌸

This is the typical configuration. The utilization thresholds and delays may be different based on requirement.

  • lp_mode_cpus: not set. Detects the lp_mode_cpus automatically.
  • Mode: 0. Use cgroup-v2 systemd for task migration.
  • HfiLpmEnable: 1. Enter/Exit Low Power Mode based on HFI hints.
  • HfiSuvEnable: 1. Enter/Exit Survivability mode based on HFI hints.
  • util_entry_threshold: 5. Enter Low Power Mode when system utilization is lower than 5%.
  • util_exit_threshold: 95. Exit Low Power Mode when the utilization of any of the lp_mode_cpus is higher than 95%.
  • lp_mode_epp: -1. Do not change EPP when entering Low Power Mode.
<?xml version="1.0"?>
<Configuration>
     <lp_mode_cpus></lp_mode_cpus>
     <Mode>0</Mode>
     <HfiLpmEnable>1</HfiLpmEnable>
     <HfiSuvEnable>1</HfiSuvEnable>
     <util_entry_threshold>5</util_entry_threshold>
     <util_exit_threshold>95</util_exit_threshold>
     <lp_mode_epp>-1</lp_mode_epp>
</Configuration>

🚧 Currently unimplemented options 🚧

Bestie, listen. These four knobs are in the config file, they parse, they look real β€” but they do not do anything yet. They're the group-chat member who's in the server but never types. Set them if you want, the daemon will just vibe past them. No cap.

  • EntryDelayMS β€” this one's supposed to be the sample interval the utilization Monitor uses when the system wants to enter Low Power Mode based on system utilization. Setting it to 0, or just leaving it empty, would make the utilization Monitor fall back to its default interval of 1000 milli seconds. πŸ’€
  • ExitDelayMS β€” this one's supposed to be the sample interval the utilization Monitor uses when the system wants to exit Low Power Mode based on CPU utilization. Setting it to 0 or leaving it empty would make the Monitor go adaptive instead β€” and the adaptive interval is based on CPU utilization, so the busier the CPU is, the shorter the interval the utilization monitor uses. Busy CPU = short attention span, honestly relatable. 😭
  • EntryHystMS β€” this one's supposed to be a hysteresis threshold for when the system is in Low Power Mode. If it were set, then whenever the previous average time stayed in Low Power Mode was lower than this value, the current enter-Low-Power-Mode request would get ignored β€” because the system is expected to exit Low Power Mode soon anyway, so like, why bother. 🫢 Setting it to 0 or leaving it empty would disable this hysteresis algorithm entirely.
  • ExitHystMS β€” the mirror twin. Supposed to be a hysteresis threshold for when the system is not in Low Power Mode. If it were set, then whenever the previous average time stayed out of Low-Power-Mode was lower than this value, the current exit-Low-Power-Mode request would get ignored β€” because the system is expected to enter Low Power Mode soon, so exiting is giving pointless. πŸ’… Setting it to 0 or leaving it empty would disable this hysteresis algorithm.
⚠️ Vibe check: all four of these are currently unimplemented. So don't come for the daemon when your carefully tuned EntryHystMS does literally nothing. It's not you, it's the code. πŸŽ€

πŸ‘€ SEE ALSO πŸ‘€

The whole squad, go read them:


And that's the whole page, bestie!! πŸ¦‹ This little masterpiece is from the intel_lpmd_config.xml(5) manual, dated 8 Apr 2026 β€” yes, the source/version and date footer, we clocked it, we honoured it, we're mentioning it in a sign-off like the icons we are. Go forth and configure responsibly. βœ¨πŸ‘‘

πŸ“¦ where this page comes from