Intel Low Power Mode Daemon (lpmd) is a Linux daemon designed to optimize active idle power. It selects the most power-efficient CPUs based on a configuration file or CPU topology. Depending on system utilization and other hints, it puts the system into Low Power Mode by activating the power-efficient CPUs and disabling the rest, and restores the system from Low Power Mode by activating all CPUs.
Refer to the man pages for command line arguments and XML configurations:
man intel_lpmd
man intel_lpmd_control
man intel_lpmd_config.xml
dnf install automake autoconf-archive gcc glib2-devel dbus-glib-devel libxml2-devel libnl3-devel systemd-devel gtk-doc upower-devel
sudo apt install autoconf autoconf-archive gcc libglib2.0-dev libdbus-1-dev libdbus-glib-1-dev libxml2-dev libnl-3-dev libnl-genl-3-dev libsystemd-dev gtk-doc-tools libupower-glib-dev
zypper in automake gcc
./autogen.sh
make
sudo make install
The generated artifacts are copied to respective directories under /usr/local
. If a custom install path is preferred other than system default, make sure --localstatedir
and --sysconfdir
are set to the right path that the system can understand. If installed via RPM then artifacts would be under /usr
.
Example command for installation using prefix under /opt/lpmd_install
dir with --localstatedir
and --sysconfdir
set to system default
./autogen.sh prefix=/opt/lpmd_install --localstatedir=/var --sysconfdir=/etc
sudo systemctl start intel_lpmd.service
sudo systemctl status intel_lpmd.service
sudo systemctl stop intel_lpmd.service
sudo tests/lpm_test_interface.sh 1
Launch lpmd
in no-daemon mode:
./intel_lpmd --no-daemon --dbus-enable --loglevel=debug
Start lpmd
using:
sudo sh tests/lpm_test_interface.sh 4
Run a workload and monitor lpmd
to ensure it puts the system in the appropriate state based on the load.
- Fix lpmd from processing HFI/WLT updates when it is not in auto mode.
- Improve README and other documents.
- Add support for graphics utilization detection.
- Add support for config states based on both WLT and graphics utilization.
- Introduce LunarLake platform specific config file.
- Minor fixes and cleanups.
- Introduce workload type proxy support.
- Add support for model/sku specific config file.
- Add detection for AC/DC status.
- Honor power profile daemon default EPP when restoring.
- Introduce MeteorLake-P platform specific config file.
- Minor fixes and cleanups.
- Change lpmd description from "Low Power Mode Daemon" to "Energy Optimizer (lpmd)" because it covers more scenarios.
- Fix invalid cgroup setting during probe, in case lpmd doesn't quit smoothly and cleanups are not done properly in the previous run.
- Introduce a new parameter
--ignore-platform-check
. - Provide more detailed information when lpmd fails to probe on an unvalidated platform.
- Various fixes for array bound check, potential memory leak, etc.
- Autotool improvements.
- Remove automake and autoconf improvements due to a regression.
- Deprecate the dbus-glib dependency.
- Fix compiling errors with
-Wall
. - Remove unintended default config file change to keep it unchanged since v0.0.3.
- Enhance HFI monitor to handle back-to-back HFI LPM hints.
- Enhance HFI monitor to handle HFI hints for banned CPUs.
- Introduce support for multiple Low Power states.
- Introduce support for workload type hint.
- Allow change EPP during Low Power modes transition.
- Minor fixes and cleanups.
- Convert from glib-dbus to GDBus.
- Add handling for CPU hotplug.
- Use strict CPU model check to allow intel_lpmd to run on validated platforms only, including ADL/RPL/MTL for now.
- CPUID.7 Hybrid bit is set
- /sys/firmware/acpi/pm_profile returns 2 (mobile platform)
- Use
cpuid()
to detect Lcores instead of using cache sysfs. - Enhance Ecore module detection.
- Fix pthread error handling, suggested by ColinIanKing.
- Werror fixes from aekoroglu.
- Various fixes and cleanups.
- Add initial lpmd support.
See Intel's Security Center for information on how to report a potential security issue or vulnerability.
See also: Security Policy