Western Digital HDD spin down problem in Mac OS 10.6

I’ve bought brand new Western Digital Scorpio Blue 750 GB SATA HDD for my MacBook laptop (as my secondary hard drive). It’s currently the maximum capacity you can get for standard height (9 mm), the 1000 GB model is taller and wouldn’t fit into my OptiBay which I use instead of CD drive.

There is one annoying issue with this drive in Mac OS and that is its aggressive power management which spin downs the drive immediately after last application stops accessing it. Not only causes this clicking sound every few seconds and excessive wear (spin up/down cycle count is limited), but also performance is really crappy, as application accessing the drive after spin down has to wait for drive to spin up again.

To deal with this problem, you have to set APM value of the drive to higher value (as described here):

0 Reserved
1 Minimum power consumption with Standby
2 – 127 Intermediate power management levels with Standby
128 Minimum power consumption without Standby
129 – 253 Intermediate power management levels without Standby
254 Maximum performance
255 Reserved

To observe Load_Cycle_Count and Start_Stop_Count parameters of the drive, I’ve used smartctl:

./smartctl disk1 -a | grep -e "Load_Cycle_Count" -e "Start_Stop_Count"

To set APM value, I’ve used hdapm:

./hdapm disk1 128
disk1: WDC WD7500BPVT-22HXZT1                  
Setting APM level to 0x80: Success

After experimenting a little bit I found the following:

  • value 254 seems to mean no head parking (Load_Cycle_Count doesn’t increase) and no spin down at all (Start_Stop_Count doesn’t increase when MacBook is up and running)
  • Value 128 (possibly 128 – 253) seems to allow head parking approx. 2.5 secs after last disk access (Load_Cycle_Count increases and click can be heard) but no spin down is allowed. Drive still seems to slow down a little bit after some time, but it doesn’t seem to do a complete start/stop cycle as Start_Stop_Count doesn’t increase
  • Value 127 seems to allow heads to be parked quite often and spin down is allowed – drive seems to wait approx. 25 seconds after last access before complete spin down)

Now, the decision between 128 (don’t allow spin down) and 127 (allow spin down) is up to everyone’s preferences. Googling a bit revealed that modern laptop drives can do somewhere about 600,000 load cycles and 50,000 start/stop cycles.

To make sure APM value is set after every reboot, you can place hdapm.plist under /Library/LaunchAgents as described in documentation. I’m using the following script:

[xml]


Label
hdapm
ProgramArguments

/usr/bin/hdapm
disk1
128

RunAtLoad
[/xml]

Comments are closed.