File: README.md

package info (click to toggle)
intel-lpmd 0.1.0-1
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 500 kB
  • sloc: ansic: 5,808; xml: 488; makefile: 109; sh: 68
file content (168 lines) | stat: -rw-r--r-- 4,828 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# Intel Low Power Mode Daemon

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.

## Usage

Refer to the man pages for command line arguments and XML configurations:

```sh
man intel_lpmd
man intel_lpmd_control
man intel_lpmd_config.xml
```

## Install Dependencies

### Fedora

```sh
dnf install automake autoconf-archive gcc glib2-devel dbus-glib-devel libxml2-devel libnl3-devel systemd-devel gtk-doc upower-devel
```

### Ubuntu

```sh
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
```

### OpenSUSE

```sh
zypper in automake gcc
```

## Build and Install

```sh
./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


```sh
./autogen.sh prefix=/opt/lpmd_install --localstatedir=/var --sysconfdir=/etc
```

## Run

### Start Service

```sh
sudo systemctl start intel_lpmd.service
```

### Get Status

```sh
sudo systemctl status intel_lpmd.service
```

### Stop Service

```sh
sudo systemctl stop intel_lpmd.service
```

### Terminate using DBUS Interface

```sh
sudo tests/lpm_test_interface.sh 1
```

## Testing Installation from Source

Launch `lpmd` in no-daemon mode:
```sh
./intel_lpmd --no-daemon --dbus-enable --loglevel=debug
```

Start `lpmd` using:
```sh
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.


## Releases

### Release 0.1.0
- Add support for Panther Lake

### Release 0.0.9

- 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.

### Release 0.0.8

- 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.

### Release 0.0.7

- 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.

### Release 0.0.6

- Remove automake and autoconf improvements due to a regression.
- Deprecate the dbus-glib dependency.

### Release 0.0.5

- Fix compiling errors with `-Wall`.
- Remove unintended default config file change to keep it unchanged since v0.0.3.

### Release 0.0.4

- 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.

### Release 0.0.3

- 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.

### Release 0.0.2

- Various fixes and cleanups.

### Release 0.0.1

- Add initial lpmd support.

## Security

See Intel's [Security Center](https://www.intel.com/content/www/us/en/security-center/default.html) for information on how to report a potential security issue or vulnerability.

See also: [Security Policy](security.md)