Power, energy, and thermal concerns have constrained embedded systems designs. Computing capability and storage density have increased dramatically, enabling the emergence of handheld devices from special to general purpose computing. In many mobile systems, the disk is among the top energy consumers. Many previous optimizations for disk energy have assumed uniprogramming environments. However, many optimizations degrade in multiprogramming because programs are unaware of other programs (execution context). We introduce a framework to make programs aware of and adapt to their runtime execution context.We evaluated real workloads by collecting user activity traces and characterizing the execution contexts. The study confirms that many users run a limited number of programs concurrently. We applied execution context optimizations to eight programs and tested ten combinations. The programs ran concurrently while the disk's power was measured. Our measurement infrastructure allows interactive sessions to be scripted, recorded, and replayed to compare the optimizations' effects against the baseline. Our experiments covered two write cache policies. For write-through, energy savings was in the range 3-63% with an average of 21%. For write-back, energy savings was in the range -33-61% with an average of 8%. In all cases, our optimizations incurred less than 1% performance penalty.
"Execution Context Optimization for Disk Energy"
Jerry Hom and Ulrich Kremer.
Proceedings of the 2008 international conference on Compilers, architectures and synthesis for embedded systems (CASES'08) , Atlanta, GA, USA, October 2008.
@inproceedings{1450132, author = {Hom, Jerry and Kremer, Ulrich}, title = {Execution context optimization for disk energy}, booktitle = {CASES '08: Proceedings of the 2008 international conference on Compilers, architectures and synthesis for embedded systems}, year = {2008}, isbn = {978-1-60558-469-0}, pages = {255--264}, location = {Atlanta, GA, USA}, doi = {http://doi.acm.org/10.1145/1450095.1450132}, publisher = {ACM}, address = {New York, NY, USA}, }