120 likes | 231 Vues
This project explores the implementation of Dynamic Voltage Scaling (DVS) algorithms on Linux 2.6 and the Intel Pentium 4-M processor. By developing our own DVS algorithms, we aim to increase energy efficiency in mobile devices. We analyze the effects of various DVS algorithms, including AvgN, Past, Peak, and Future, to optimize CPU performance without significant changes to the scheduler. Our experimental setup, conducted on an IBM Thinkpad T30, evaluates energy consumption under different workloads and identifies the best DVS strategies for efficiency.
E N D
CSC 2228 ProjectDynamic Voltage Scaling in Mobile Devices David Tam, Winnie Tsang, Catalin Drula
What We Did? • Implement DVS algs+ develop our own • Target: Linux 2.6 & Intel P4-M
Why is this important? • DVS goal = save energy • Explore DVS algs on Linux 2.6 & P4-M SpeedStep • Used hypothetical idle times • Developed new DVS alg with OS info • DVS alg: • AvgN*, PAST, PEAK, FUTURE
Architecture 3 Components: OS SCHEDULER MOD run_cycles() idle_cycles() excess_cycles() DVS Governors AvgN* Past Peak Future set_speed () increase_speed() decrease_speed() CPUFREQ INTERFACE + DRIVERS
DVS Interpretation • Goal: stretch task to consume 99% of the given quantum • No major changes to scheduler Busy Idle Given Quantum
DVS ALGORITHMS • FUTURE • Our own proposed algorithm • Idea: • Look into the run_queue: • Get hypothetical idle time in the future • Prediction and Speed Setting is same as PAST
EXPERIMENTAL SETUP Platform: • IBM Thinkpad T30 • Redhat 9 2.6.0-test9 Linux kernel. • Intel Mobile Pentium 4 - M processor • Used ACPI in Linux to measure capacity (mWh)
EXPERIMENTAL SETUP Experiments: • Workload is 2m30sec long and consists of: • An mpeg video running in the background • Sleep for 20 seconds • Compile Linux kernel (linking stage) • lasts 20-30 seconds • Sleep for 20 seconds • Same compilation again
Energy Usage 1200 High Speed (1.6 Ghz) Low Speed (1.2 Ghz) 1000 AvgN n=0, hysteresis 50-70, interval 50 AvgN n=5, hysteresis 50-70, interval 800 50 Past, hysteresis 50-70, interval 1000 600 Battery Usage (mWh) Past, hysteresis 40-80, interval 1000 Future, hysteresis 50-70, interval 400 1000 Future, hysteresis 40-80, interval 1000 Peak, interval 1000 200 Peak, interval 500 0 AvgN Static Past Future Peak Algorithm EXPERIMENTAL RESULTS
Compile Time High Speed (1.6 Ghz) 35 Low Speed (1.2 Ghz) 30 AvgN n=0, hysteresis 50-70, interval 50 25 AvgN n=5, hysteresis 50-70, interval 50 Past, hysteresis 50-70, interval 1000 20 Compile Time (s) Past, hysteresis 40-80, interval 1000 15 Future, hysteresis 50-70, interval 1000 10 Future, hysteresis 40-80, interval 1000 Peak, interval 1000 5 Peak, interval 500 0 AvgN Static Past Future Peak Algorithm EXPERIMENTAL RESULTS
FUTURE WORK • Implementation of excess cycle • Fine tuning DVS alg parameters • More workloads • New DVS algs
CONCLUSION & CONTRIBUTIONS • Best policies are AVGn and PAST • DVS algs on new OS & real hardware • Used hype idle times • “Future” alg • Contributions to Linux community: • 4 governors for CPUFreq • Make available on web