# Idle power management

Source: [https://docs.qualcomm.com/doc/80-70014-30/topic/idlepowermanagement.html](https://docs.qualcomm.com/doc/80-70014-30/topic/idlepowermanagement.html)

Idle power management, also known as CPU idle power management, keeps the CPU cores
        in the appropriate sleep state for efficient use of energy when the platform is idle.

## CPU Sleep states

A CPU core supports multiple sleep states. Each sleep state has associated entry and
                exit latencies and different levels of power consumption. The selection of sleep
                state of a core depends on how quickly that core is required again for another
                execution.

Each CPU Sleep state is represented by a C-state number. Each C-state is associated
                with two key parameters:

- Power saving: The power savings of CPU increases as you select higher
                        C-states, but this results in increased wake-up latency.
- Wake-up latency: This is the time taken to transition a CPU core from sleep
                        state to running state.

For example, deeper sleep state (C4) has higher wake-up latency and lower power
                consumption as shown in the following figure.

![](data:image/png;base64,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)

Figure : Tradeoff between power and latency

You can view the latencies of CPU Sleep state using the following command:

cat /sys/devices/system/cpu/cpu<X>/cpuidle/state<Y>/latencyCopy to clipboard

Note: Here `<X>` represents the core ID (
                    which varies from 0 to 7) and `<Y>` represents index of Linux
                    Power state (0, 1, 2). Linux Power states are defined in the following
                    table.

You can study and configure sleep states to tune applications for balanced power and
                performance.

The following table lists the supported CPU Sleep states and their associated C-state
                    numbers:
Note: The CPU Sleep states are enabled by
                    default.

Table : Supported Core Power state

| CPU Sleep state | Description | Linux Power state |
| --- | --- | --- |
| C1 | <ul class="ul" id="idlepowermanagement__ul_xgw_rtx_p1c"><br>                                        <li class="li">CPU core clock domain off</li><br><br>                                        <li class="li">Power domains <code class="ph codeph">VDD_APC0/ VDD_APC1</code><br>                                            on</li><br><br>                                        <li class="li">Generic interrupt controller (GIC) clock on</li><br><br>                                    </ul> | State0 (S0) |
| C3 | <ul class="ul" id="idlepowermanagement__ul_x3h_b5x_p1c"><br>                                        <li class="li">CPU core clock domain off</li><br><br>                                        <li class="li">Core power collapse with L1 and L2 cache flushed</li><br><br>                                        <li class="li">Power domains <code class="ph codeph">VDD_APC0/ VDD_APC1</code><br>                                            on</li><br><br>                                    </ul> | State1 (S1) |
| C4 | <ul class="ul" id="idlepowermanagement__ul_umz_qby_p1c"><br>                                        <li class="li">C3 + PLL off for Silver cluster</li><br><br>                                        <li class="li">C3+ PLL power domains off for Gold and Prime<br>                                            clusters</li><br><br>                                    </ul> | State2 (S2) |

## Enable/Disable CPU Sleep states

The following table lists how to configure CPU Sleep states.
Note: If you change the configuration of a sleep state, you
                    should check the power impact on the platform.

| Linux Power state | Enable/Disable | Commands |
| --- | --- | --- |
| S0 | Enable | echo 0 > /sys/devices/system/cpu/cpuX/cpuidle/state0/disableCopy to clipboard |
| S0 | Disable | echo 1 > /sys/devices/system/cpu/cpuX/cpuidle/state0/disableCopy to clipboard |
| S1 | Enable | echo 0 > /sys/devices/system/cpu/cpuX/cpuidle/state1/disableCopy to clipboard |
| S1 | Disable | echo 1 > /sys/devices/system/cpu/cpuX/cpuidle/state1/disableCopy to clipboard |
| S2 | Enable | echo 0 > /sys/devices/system/cpu/cpuX/cpuidle/state2/disableCopy to clipboard |
| S2 | Disable | echo 1 > /sys/devices/system/cpu/cpuX/cpuidle/state2/disableCopy to clipboard |
|  |  |  |

Note: `<X>` denotes the core ID (which
                    varies from 0 to 7).

## Check CPU idle statistics

To check the statistics of CPU Core Sleep states run the following command:

cat /sys/devices/system/cpu/cpu<X>/cpuidle/state<Y>/usageCopy to clipboard

Here `<X>` is the core ID (which varies from 0 to 7) and
                    `<Y>` is the index of the Linux Power state (0,1, and 2).

Following is an example of the output:

<samp class="ph systemoutput">cd /sys/devices/system/cpu</samp>

<samp class="ph systemoutput">grep -r "" cpu*/cpuidle/*/usage</samp>

<samp class="ph systemoutput">cpu0/cpuidle/state0/usage:97681</samp>

<samp class="ph systemoutput">cpu0/cpuidle/state1/usage:95</samp>

<samp class="ph systemoutput">cpu1/cpuidle/state0/usage:180055</samp>

<samp class="ph systemoutput">cpu1/cpuidle/state1/usage:59 </samp>
Note: The `usage` count represents the number of times
                        `cpu<X>` enters a Linux Power state.

**Parent Topic:** [CPU power management](https://docs.qualcomm.com/doc/80-70014-30/topic/cpupowermanagement.html)

Last Published: Jul 15, 2024

[Previous Topic
Dynamic voltage and frequency scaling](https://docs.qualcomm.com/bundle/publicresource/80-70014-30/topics/dcvs.md) [Next Topic
Suspend Power Management state](https://docs.qualcomm.com/bundle/publicresource/80-70014-30/topics/suspendpowermanagement_0.md)