Supriya Ghosh (Editor)

Hdparm

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Developer(s)
  
Mark Lord

Size
  
133 kB

License
  
BSD license

Operating system
  
Linux

Type
  
Utility software

Stable release
  
9.51 / January 19, 2017; 57 days ago (2017-01-19)

hdparm is a command line program for Linux to set and view ATA hard disk drive hardware parameters. It can set parameters such as drive caches, sleep mode, power management, acoustic management, and DMA settings. GParted and Parted Magic both include hdparm.

Changing hardware parameters from suboptimal conservative defaults to their optimal settings can improve performance greatly. For example, turning on DMA can, in some instances, double or triple data throughput. Unfortunately at present there is no reliable method for determining the optimal settings for a given controller/drive combination, except careful trial and error; nor is there yet any central database that collects and shares the combined experience of hdparm users.

hdparm has a more serious drawback: it can crash a computer and make data on its disk inaccessible if certain parameters are misused. Out of approximately sixty-seven parameters, several are dangerous and could result in "massive filesystem corruption" when used indiscriminately.

Usage examples

hdparm has to be run with root privileges, otherwise it will either not be found or the requested actions will not be executed properly.

Display information of the hard drive:

sudo hdparm -I /dev/sda

Turn on DMA for the first hard drive:

sudo hdparm -d1 /dev/sda

Test device read performance speed (-t for timing buffered disk reads) of the first hard drive:

sudo hdparm -t /dev/sda

Enable energy saving spindown after inactivity (24*5=120 seconds):

sudo hdparm -S 24 /dev/sda

To retain hdparm settings after a software reset, run:

sudo hdparm -K 1 /dev/sda

Enable read-ahead:

sudo hdparm -A 1 /dev/sda

If the disk is constantly too noisy, you can change its acoustic management at the cost of read/write performance (Some drives, such as newer WD drives and all SSDs, ignore this setting.):

sudo hdparm -M 128 /dev/sda


If the disk synchronisation intervals are too short, then even small amounts of data will be written to disk which can have severe consequences for its lifespan. The better way would be to collect small data into bigger chunks and wait until the chunk is big enough to be written to disk.

Current web browsers like Chrome write regularly small chunks when browsing in order not to lose any important data when the application crashes. However, this lets the disk spin very often as the drive repeatedly needs to unleash and then park its heads. The generated noises can be thus regarded as distracting by the user. To circumvent this issue, you can switch the drive to the lowest degree of power management (next value, 255, turns power management off):

hdparm -B 254 /dev/sda

Additionally, changing the value of /proc/sys/vm/dirty_expire_centisecs can have an effect on the performance. It sets the flush interval when dirty pages are written to disk.

Note that all these commands are only effective in the long-run, if you make the changes persistent. However, the settings you can set via hdparm are reverted each time you reboot. Therefore, it might be wise to restore the personal settings upon boot. An appropriate place that exists in most Linux distributions is the /etc/rc.local script.

References

Hdparm Wikipedia