The powertop utility suggests “SATA link power management” be enabled.
Enabling this, which can be done manually with:
echo 'min_power'> /sys/class/scsi_host/host0/link_power_management_policy
saves a shocking 900mW, almost 20% of system power consumption at idle, on my NB10 with Crucial M500 SSD. This extends the runtime of the idle system on battery power by a full hour, from 4h30 to 5h30.
The ‘medium_power’ setting saves approximately 250mW over the default ‘max_performance’ setting and has no noticeable performance impact.
Disk performance is affected if ‘min_power’ is used. Sustained transfers do not drop much – for example (measured with ‘hdparm -Tt /dev/sda’) the drop is under 10% – from 1500MB/sec reads to 1400.
I tested a small data transfer on a completely idle system with:
sync ; echo 3 > /proc/sys/vm/drop_caches ; sleep 5 ;\ time dd if=/dev/zero of=/tmp/emptyfile bs=1024k count=1 ;\ rm emptyfile
The “min_power” setting increases the time it takes complete this 1Mbyte disk write from from 20ms to 120ms – quite dramatic.
The performance loss comes from the time taken to wake the SATA electronics up. Once awake, it’s little slower (if at all), until it goes back to sleep again. A sustained transfer (for example substituting “1000” for “1” in the “count” of the dd command above) sees little difference in performance.
The best option is likely to be, using min_power when on battery, and max_performance when on mains power. The pm-utils package can manage this for you.
There is a possibility of drive corruption and data loss with use of medium_power and min_power settings – although in the great majority of cases, no problems will be seen. I’ve used my NB10+M500 combination intensively with ‘min_power’ enabled and am reasonably happy that it is safe.