Disk Speed Test (Read/Write): HDD, SSD Performance in Linux

From this article you’ll learn how to measure an input/output performance of a file system on such devices as HDD, SSD, USB Flash Drive etc.

I’ll show how to test the read/write speed of a disk from the Linux command line using dd command.

I’ll also show how to install and use hdparm utility for measuring read speed of a disk on Linux Mint, Ubuntu, Debian, CentOS, RHEL.

Take the average result: To get the accurate read/write speed, you should repeat the below tests several times (usually 3-5) and take the average result.

dd: TEST Disk WRITE Speed

Run the following command to test the WRITE speed of a disk:

$ sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 3.28696 s, 327 MB/s

dd: TEST Disk READ Speed

The file tempfile, that has just been created by the previous command, was cached in a buffer and its read speed is much higher then the real read speed directly from the disk.

To get the real speed, we have to clear cache.

Run the following command to find out the READ speed from buffer:

$ dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.159273 s, 6.7 GB/s

Clear the cache and accurately measure the real READ speed directly from the disk:

$ sudo /sbin/sysctl -w vm.drop_caches=3
vm.drop_caches = 3
$ dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.27431 s, 472 MB/s

dd: TEST Read/Write Speed of an External Drive

Cool Tip: Have added a new drive to /etc/fstab? No need to reboot! Mount it with one command! Read more →

To check the performance of some External HDD, SSD, USB Flash Drive or any other removable device or remote file-system, simply access the mount point and repeat the above commands.

Or you can replace tempfile with the path to your mount point e.g.:

$ sync; dd if=/dev/zero of=/media/user/MyUSB/tempfile bs=1M count=1024; sync

Reminder: All the above commands use the temporary file tempfile. Don’t forget to delete it when you complete the tests.

hdparm: Test HDD, SSD, USB Flash Drive’s Performance

hdparm is a Linux command line utility that allows to set and view hardware parameters of hard disk drives.

And it can also be used as a simple benchmarking tool that allows to quickly find out the READ speed of a disk.

hdparm is available from standard repositories on the most Linux distributions.

Install hdparm depending on your Linux distribution.

Cool Tip: Troubleshooting an issue with a hard drive performance? It will be a good idea also to test download/upload Internet speed. It can be easily done from the Linux command line! Read more →

On Linux Mint, Ubuntu, Debian:

$ sudo apt-get install hdparm

On CentOS, RHEL:

$ sudo yum install hdparm

Run hdparm as follows, to measure the READ speed of a storage drive device /dev/sda:

$ sudo hdparm -Tt /dev/sda
/dev/sda:
 Timing cached reads:   16924 MB in  2.00 seconds = 8469.95 MB/sec
 Timing buffered disk reads: 1386 MB in  3.00 seconds = 461.50 MB/sec

4 Replies to “Disk Speed Test (Read/Write): HDD, SSD Performance in Linux”

  1. Awesome. Thanks.

    williamj@SilverK:~$ sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
    1024+0 records in
    1024+0 records out
    1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.313688 s, 3.4 GB/s
    williamj@SilverK:~$ dd if=tempfile of=/dev/null bs=1M count=1024
    1024+0 records in
    1024+0 records out
    1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.093416 s, 11.5 GB/s
    williamj@SilverK:~$ sudo /sbin/sysctl -w vm.drop_caches=3
    [sudo] password for williamj: 
    vm.drop_caches = 3
    williamj@SilverK:~$ dd if=tempfile of=/dev/null bs=1M count=1024
    1024+0 records in
    1024+0 records out
    1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.7639 s, 1.4 GB/s
  2. Good Information!

  3. soooooooooo simple!!!!!…….

  4. Anyone has hdparm version for Android?

Leave a Reply