Question: How to measure the sequential write speed of a hard disk or SSD?
Answer
We may use two ways. The most popular one is to use dd tools. For hard disks, we may not avoid using cache to measure the disk performance. As sequential writes can write the data to the cache, which is basically a DRAM and can perform excessively fast masking the original speed of the HDD. Let’s check how can we measure the HDD speed using dd bypassing HDD write cache:
dd if=/dev/zero of=/hddvz/testfile.img bs=1G count=1 oflag=direct
/hddvz is my HDD mount, oflag=direct instruct the dd to confirm writes to the disk, not just the cache before saying the write is completed.
If it’s a good quality hard disk alone or soft raid 1, you can get speed up to 157-161MBps:
[root@bd3 ~]# dd if=/dev/zero of=/hddvz/testfile.img bs=1G count=1 oflag=direct 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB) copied, 6.82675 s, 157 MB/s [root@bd3 ~]#
With a good hardware raid controller and raid 10, you may be able to reach rates like 320MBps.
There is something to remember, software raid mdadm is able to read simultaneously from two disks. You may have the evidence, with two dd one by one, both in background as following:
[root@bd3 ~]# dd if=/dev/zero of=/hddvz/testfile.img bs=1G count=1 oflag=direct & [1] 12039 [root@bd3 ~]# dd if=/dev/zero of=/hddvz/testfile1.img bs=1G count=1 oflag=direct & [2] 12040 [root@bd3 ~]# 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB) copied, 11.1064 s, 96.7 MB/s 1+0 records in 1+0 records out 1073741824 bytes (1.1 GB) copied, 10.7155 s, 100 MB/s [1]- Done dd if=/dev/zero of=/hddvz/testfile.img bs=1G count=1 oflag=direct [2]+ Done dd if=/dev/zero of=/hddvz/testfile1.img bs=1G count=1 oflag=direct
As you can see, both the request was able to reach 100MBps roughly while running in parallel.
Testing Read Speed Using hdparm
To check the read speed, you may use hdparm like the following:
[root@bd3 ~]# hdparm -Tt /dev/sda /dev/sda: Timing cached reads: 40444 MB in 1.99 seconds = 20365.12 MB/sec Timing buffered disk reads: 396 MB in 3.06 seconds = 129.43 MB/sec [root@bd3 ~]# hdparm -Tt /dev/sdb /dev/sdb: Timing cached reads: 41006 MB in 1.99 seconds = 20649.43 MB/sec Timing buffered disk reads: 562 MB in 3.01 seconds = 186.81 MB/sec [root@bd3 ~]#