Wakeup sources can roughly be classified as: Linux auto-sleep component monitors the use of all system-wide wakeup sources and triggers entry into SUSPEND state when none of the wakeup sources are held. If a component with appropriate privileges has no interest in keeping the system powered, it releases a wakeup source. If a component with appropriate privileges wants to prevent the system from entering SUSPEND state, it acquires a wakeup source. Legato uses Linux wakeup sources (called wake locks in Android) to control the system power state. While CPUIDLE and CPUFREQ seamlessly run in the O/S background, Legato apps have significant impact on the efficiency of system SUSPEND functionality. CPUFREQ: system estimates how much the app processor is loaded and tunes the CPU frequency and voltage as necessary.CPUIDLE: system estimates how long the app processor would be idle and puts it into appropriate low power state.SUSPEND: system saves its state in memory, places all peripherals in low power mode, and puts the app processor into its deepest idle state.Legato uses Linux power management techniques to minimize device power consumption: This provides better performance, but worse power efficiency. Operations needing fast response times or those resulting in high interrupt rates may benefit from keeping the system awake. Use Legato's Power Manager to control the system's wake-up (powered) state. Apps with the appropriate credentials have the option to control the system power state while performing critical operations. Unless the system is busy processing a non-deferrable event, this feature puts the hardware into a SUSPEND state where all peripherals and the CPU are placed into low-power mode. To maximize power savings, the system can use the Linux auto-sleep feature. Set the timer period as long possible to conserve power, and let the O/S go into deeper sleep states. If you use a periodic timer (like Timer API) to wake up your app, it will consume power. If your thread isn't running the Legato event loop, block your thread to put it to sleep when it's not working through poll(), select(), read(), write(), recv(), etc. When an event handler function returns back to the Legato event loop, it puts the thread to sleep (unless there's another event waiting). When all threads are sleeping, the O/S will reduce the CPU power state automatically. Every CPU cycle uses power, so when a power-sensitive app is woken up, it should execute as few instructions as possible before going back to sleep. This way app code only runs when an event occurs, rather than waking up to check for events that haven't happened. To conserve power, apps should register call-back functions only triggered when events occur. Power is also wasted if app code runs busy-wait loops or periodically polls for events. If app code is uses a peripheral device when it doesn't need to, power will be wasted. If a device isn't in use, the driver automatically keeps that device in its lowest power state.Īpp behaviour drives power consumption. Peripheral device power management is usually handled by device drivers and the operating system.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |