/omap5-cpu-pm

Utility for displaying/changing OMAP5/AM57xx CPU power management registers

Primary LanguageC++

omap5-cpu-pm

Utility for displaying/changing OMAP5/AM57xx CPU power management registers

CAUTION: Use at your own risk! I don't know why CPU power management doesn't seem to be enabled by default, but perhaps there's actually a good reason for it. Don't blame me if using this utility causes spontaneous combustion.

Installation

make && sudo cp omap5-cpu-pm /usr/local/sbin/

Usage

To display current settings and state:

sudo omap5-cpu-pm

To change the power domain state requested for each core when idle:

sudo omap5-cpu-pm --on          # remain in ON state at all times
sudo omap5-cpu-pm --inactive    # enter INACTIVE state when cpu idle
sudo omap5-cpu-pm --retention   # enter RETENTION state when cpu idle

In both INACTIVE and RETENTION states the cpu clock is disabled. In RETENTION state the cpu voltage is also lowered.

Note that lower power states will increase wake-up latency.

Issues

Enabling cpu power management appears to mess with cpu load measurement, causing falsely high system load to be reported by uptime. This also appears to cause the "ondemand" cpufreq governor to keep the cpu frequency unnecessarily high. On the other hand, enabling cpu power management appears to be more effective in reducing power dissipation than reducing the cpu frequency (see below).

Effect on CPU temperature

Some example cpu temperature measurements (making sure to give it plenty of time to settle after a change) taken on my BeagleBoard-X15 while idle:

  • 61 ͏°C with cpufreq governor "performance" (1.5 GHz) and requested power state ON
  • 56 ͏°C with cpufreq governor "powersave" (1.0 GHz) and requested power state ON
  • 55 ͏°C with cpufreq governor "performance" (1.5 GHz) and requested power state INACTIVE
  • 52 ͏°C with cpufreq governor "powersave" (1.0 GHz) and requested power state INACTIVE
  • 51 ͏°C with cpufreq governor "performance" (1.5 GHz) and requested power state RETENTION
  • 50 ͏°C with cpufreq governor "powersave" (1.0 GHz) and requested power state RETENTION