Modern processors implement runtime power saving modes called "C states". Each of these states is denoted by the letter C followed by a number. The larger the number, the deeper the C state and the more power that state saves. In a deep C state the majority of the processor will be unclocked and powered down, reducing the CPU power consumption to a very low level.
C states offer significant power savings, but cannot be entered when the CPU is executing instructions. The best power savings can be obtained by running the CPU as fast as possible until any outstanding work is completed and then allowing the CPU to go completely idle. The powersave governor will extend the time taken to complete the work and reduce the amount of time spent idle. On any modern CPU the benefit of carrying out the work at a lower clock and voltage will be outweighed by the loss of the idle time. In almost any workload, powersave will consume more energy than any other option.
The ondemand governor jumps the processor to full performance once demand reaches a certain threshold. It then drops back to lower performance states when the work is exhausted. This allows a return to idle in as short a timeframe as possible. The reason to prefer ondemand over performance is that very short bursty workloads will prevent the CPU from entering deep C states anyway, but do not generally benefit from being run at the higher CPU speeds. Not raising the processor clock for this workload can save some energy.
The conservative governor behaves like ondemand but takes longer to switch states. This will almost always result in it taking longer for the processor to become idle, thus increasing power consumption.
Summary: Use ondemand. Conservative is a valid option for processors that take a sufficiently long time to switch performance states that ondemand will not work.
Note: There are some workloads which currently interact poorly with the default ondemand settings. If you find one of these workloads, please contact me.
Summary: Don't use p4-clockmod except to prevent processors overheating
Summary: Attempt to batch work. Decode multiple frames into a buffer and display them rather than attempting to decode each frame just in time.
Summary: If users need to perform thermal management of their systems, write an application that monitors the temperature and limits the CPU speed appropriately. Don't attempt to perform thermal management by using power management functionality to statically limit the processor frequency.
Summary: Don't offer the choice of disabling compositing when on battery. It reduces functionality for no power benefit.
Summary: If the user has not requested an animated screensaver, turn the screen off immediately rather than drawing a black screen.
Summary: Try to design desktop backgrounds with vertical gradients rather than horizontal ones.
Summary: Try to avoid anything that unnecessarily updates the screen.
Summary: Don't implement a static spindown timeout. Use a dynamic learning algorithm that adapts to the user's access patterns.
Summary: Avoid unnecessary file accesses and seeking within files. Try to use single large files rather than multiple small ones.
Summary: Use relatime on filesystems when possible.