Package: hdparm
Version: 9.15-1
Severity: important
Setting this to important as it could accelerate disk aging as far as
I understand. Short summary: I think the default for advanced power
management setting (254) for hdparm might be questionable.
Longer rationale: Recently I started hearing a strange noise from my
laptops harddrive from time to time and I didn't notice before. This
is on a ThinkPad T42 with internal 160 GB Hitachi drive. See below
for details of the drive and the controller.
I remembered that Load Cycle issue from a years ago where one is
advised to be careful with Advanced Power Management settings. I
removed my own hdparm.conf entry to the internal harddisk some
while ago that had a good setting cause at least a specific
version of hdparm had problems after I switched driver to libata.
shambhala:/etc> bzr diff -r190..191 hdparm.conf
=== modified file 'hdparm.conf'
--- hdparm.conf 2007-03-17 18:16:37 +0000
+++ hdparm.conf 2008-05-13 21:36:22 +0000
@@ -134,22 +134,24 @@
# hdparm -q -m16 -q -W0 -q -d1 /dev/hda
#}
-/dev/sda {
- mult_sect_io = 16
- write_cache = on
- dma = on
- apm = 128
- acoustic_management = 128
- io32_support = 3
- keep_settings_over_reset = on
- interrupt_unmask = on
-}
-
-/dev/scd0 {
[...]
+# Mit libata nicht mehr spruchreif, 13.5.2008
+
+#/dev/sda {
+# mult_sect_io = 16
+# write_cache = on
+# dma = on
+# apm = 128
+# acoustic_management = 128
+# io32_support = 3
+# keep_settings_over_reset = on
+# interrupt_unmask = on
+#}
+
+#/dev/scd0 {
[...]
I see that on boot APM is set to 254 when I do not set something
different in hdparm.conf or /etc/default/hdparm.
And this gives quite frequent load cycles:
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281756
shambhala:~> date
Sa 14. Nov 10:31:12 CET 2009
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281758
shambhala:~> date
Sa 14. Nov 10:32:12 CET 2009
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281758
shambhala:~> date
Sa 14. Nov 10:32:31 CET 2009
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281759
shambhala:~> date
Sa 14. Nov 10:32:36 CET 2009
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281760
shambhala:~> date
Sa 14. Nov 10:33:30 CET 2009
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281762
shambhala:~> date
Sa 14. Nov 10:35:52 CET 2009
Thus I tried with APM of 128:
shambhala:~> hdparm -B 128 /dev/sda
/dev/sda:
setting Advanced Power Management level to 0x80 (128)
APM_level = 128
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281764
shambhala:~> date
Sa 14. Nov 10:37:53 CET 2009
Still quite frequent.
Then with 0 which didn't work:
shambhala:~> hdparm -B 0 /dev/sda
/dev/sda:
setting Advanced Power Management level to 0x00 (0)
HDIO_DRIVE_CMD failed: Input/output error
APM_level = 128
shambhala:~#5> hdparm -B 1 /dev/sda
With 1:
/dev/sda:
setting Advanced Power Management level to 0x01 (1)
APM_level = 1
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281766
shambhala:~> date
Sa 14. Nov 10:41:57 CET 2009
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281766
shambhala:~> date
Sa 14. Nov 10:42:54 CET 2009
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281767
shambhala:~> date
Sa 14. Nov 10:44:03 CET 2009
Which still did a load cycle in a few minutes.
And finally with 250:
shambhala:~> hdparm -B 250 /dev/sda
/dev/sda:
setting Advanced Power Management level to 0xfa (250)
APM_level = 250
shambhala:~> date
Sa 14. Nov 10:44:46 CET 2009
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281767
shambhala:~> date
Sa 14. Nov 10:57:14 CET 2009
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281767
shambhala:~>
shambhala:~> date
Sa 14. Nov 11:04:27 CET 2009
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281768
shambhala:~> date
Sa 14. Nov 11:04:39 CET 2009
Which makes the harddisk quite quiet. At least it takes over 15 minutes for a
load cycle.
Well or almost 15 minutes:
shambhala:~> smartctl -a /dev/sda | grep "Load_Cycle"
193 Load_Cycle_Count 0x0012 072 072 000 Old_age Always
- 281769
shambhala:~> date
Sa 14. Nov 11:07:11 CET 2009
Now I wonder whether the default of 254 might be so wise, cause AFAIK
frequent load cycles make a harddisk age faster.
I know that different harddisk firmwares interpret the values differently.
But I think the default should either be sane or it should be a debconf
with hints and a warning to look after load cycle count with different
settings.
There should also be a mention of this issue in README.Debian IMHO.
My hdparm.conf is unaltered as far as I know and only contains one
configuration directive that is actually in effect:
shambhala:/etc> grep -v "^#" hdparm.conf | grep -v "^$"
quiet
The controller in use is:
shambhala:~> lspci -nn | grep IDE
00:1f.1 IDE interface [0101]: Intel Corporation 82801DBM (ICH4-M) IDE
Controller [8086:24ca] (rev 01)
The harddisk in use is:
shambhala:~> hdparm -I /dev/sda
/dev/sda:
ATA device, with non-removable media
Model Number: Hitachi HTS541616J9AT00
Serial Number: SB044[...]
Firmware Revision: SB4OA70H
Standards:
Used: ATA/ATAPI-7 T13 1532D revision 1
Supported: 7 6 5 4
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 268435455
LBA48 user addressable sectors: 312581808
Logical/Physical Sector size: 512 bytes
device size with M = 1024*1024: 152627 MBytes
device size with M = 1000*1000: 160041 MBytes (160 GB)
cache/buffer size = 7512 KBytes (type=DualPortCache)
Capabilities:
LBA, IORDY(can be disabled)
Standby timer values: spec'd by Vendor, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = 16
Advanced power management level: 250
Recommended acoustic management value: 128, current value: 128
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=240ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* NOP cmd
* DOWNLOAD_MICROCODE
* Advanced Power Management feature set
Power-Up In Standby feature set
* SET_FEATURES required to spinup after power up
Address Offset Reserved Area Boot
* SET_MAX security extension
* Automatic Acoustic Management feature set
* 48-bit Address feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* FLUSH_CACHE_EXT
* SMART error logging
* SMART self-test
* General Purpose Logging feature set
* WRITE_{DMA|MULTIPLE}_FUA_EXT
* 64-bit World wide name
* IDLE_IMMEDIATE with UNLOAD
Security:
Master password revision code = 65534
supported
not enabled
not locked
frozen
not expired: security count
not supported: enhanced erase
82min for SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000cca525da17b6
NAA : 5
IEEE OUI : 000cca
Unique ID : 525da17b6
HW reset results:
CBLID- above Vih
Device num = 0 determined by the jumper
Checksum: correct
-- System Information:
Debian Release: squeeze/sid
APT prefers testing
APT policy: (450, 'testing'), (400, 'unstable'), (101, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.6.31.5-tp42-toi-3.0.1-04850-g4eddd0d (PREEMPT)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages hdparm depends on:
ii libc6 2.10.1-5 GNU C Library: Shared libraries
ii lsb-base 3.2-23 Linux Standard Base 3.2 init scrip
hdparm recommends no packages.
Versions of packages hdparm suggests:
pn apmd <none> (no description available)
-- no debconf information
--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]