stems from the power consumption
of an idle processor being much lower
than an active processor, even if running at a lower speed. The overall power consumption will be less if the processor spends a short time at full speed
and then falls back to idle, rather than
spending twice as long being active at
a lower frequency.
Paying the Price for Graphics
Although the processor is the major
component in determining power
consumption, other parts of the platform also contribute. LCD panels in
laptops are perhaps the most obvious
secondary source. Modern hardware is
moving from traditional cathode tube
backlights to LED lighting, saving a
small but significant quantity of power
while providing the same level of illumination. Subtler techniques are beginning to appear in recent graphics
chipsets. Intel has introduced technology to monitor the color distribution
across the screen, which allows the
backlight to be dimmed when the majority of the screen is dark. The intensity of brighter colors can be increased
in order to compensate, resulting in
power savings with little user-visible
degradation.
Compressing the contents of the
framebuffer can result in an additional reduction of power draw. A simple
run-length encoding is often enough
to achieve a significant reduction in
image size, which means that the video hardware can reduce the amount of
data that has to be read from the framebuffer memory and transferred to the
screen. This simple optimization can
save about 0.5 watts. An intriguing outcome of this is that desktop wallpaper
design may influence system power
consumption.
Hard drives have long been one of
the more obvious aspects of power
management. Even with all the advances made in recent years, hard-drive
technology still requires an object to
spin at high speed. In the absence of
perpetual motion, this inevitably consumes power. For more than a decade
operating systems have included support for spinning hard drives down
after periods of inactivity. This indeed
reduces power consumption, but it
carries other costs. One is that disks
are rated for only a certain number of
there are limits to
how much power
can be saved
via fundamental
improvements in
semiconductor
technology, and
vendors are being
forced to adopt
high-tech solutions
to maintain the
rate of progress.
We cannot rely
on technological
breakthroughs to be
the silver bullet. We
need to be smarter
in how we use what
we already have
available.
spin-up/spin-down cycles and risk mechanical failure if this number is exceeded. A less-than-optimal approach
to saving hard-drive power can therefore reduce hard-drive life expectancy.
Another cost is that spinning a disk
back up uses more power than keeping
a disk spinning. If access patterns are
less than ideal, a drive will be spun up
again shortly after being spun down.
Not only will this result in higher average power consumption, but it will
also lead to undesirable latency for applications trying to use the disk.
Making effective use of this form of
power management requires a sensible
approach to disk I/O. In the absence
of cached data, a read from disk is inevitably going to result in spinning the
disk back up. From a power management viewpoint, it makes more sense
for an application to read all the data
it is likely to need at startup and then
avoid reading from disk in the future.
Writes are more interesting. For most
functionality, writes can be cached
indefinitely. This avoids unnecessary
disk spin-up, but increases the risk of
data loss should the machine crash or
run out of power.
The Linux kernel’s so-called “laptop
mode” offers a compromise approach
in which writes are cached for a user-definable period of time if the disk is
not spun up. They will be written out
either when the user’s time threshold
is reached or when a read is forced to
hit the disk. This reduces the average
length of time that dirty data will remain cached, while also trying to avoid
explicitly spinning the disk up to flush
it.
Another way of avoiding write-outs
is to reduce the number of writes in the
first place. At the application level, it
makes sense to collate writes as much
as possible. Instead of writing data out
piecemeal, applications should keep
track of which information needs writing and then write it all whenever triggering any sort of write access.
At the operating-system level, writes
can be reduced through careful consideration of the semantics of the file
system. The metadata associated with
a file on a Unix system includes a field
that records the last time a file was accessed for any reason. This means that
any read of a file will trigger a write to
update the atime (time of last access),