Benchmarks:WD Elements
======================
:author: Aaron Ball
:email: nullspoon@iohq.net

== Benchmarks:WD Elements

For my work computer, I installed https://archlinux.org[Arch Linux] on an
external USB hard drive. My idea behind that is that if I'm ever working from
home and forget to bring my charger with me, I can just plug the drive into
another computer and I'm back up and running. So far it's worked great. A few
months back though, I dropped the drive while it was running and while it was
surprisingly okay (despite being read-only until reboot), it was a bit slower.
I would assume a head crash, but thus far I have noticed no data corruption.

All that said, I want to get another drive that I can mirror with (software
raid 1 anybody?), just in case something happens. I've been hunting around
online for the last few days and have found it to be impressively difficult to
find real specs on external USB hard drives.  Sure, you can get that it's USB3
and maybe even its rpm, but you're almost guaranteed not to find cache size or
even what drive is inside the enclosure, metrics I consider to be very
important. That's why I've decided to post the IO metrics for this drive.
Hopefully someone will find these metrics useful.

image:files/WD_Elements.jpg[height=300]

* *Manufacturer*: http://www.wdc.com/en/[Western Digital]
* *Name*: Elements
* *Made in*: Malaysia
* *Size*: 1TB
* *Interface*: USB 3.0/2.0
* *Average Write Speed*: 104 MB/s
* *Average Read Speed*: 107 MB/s


[[benchmarks]]
=== Benchmarks

[[usb3-devzero-write]]
==== USB3 /dev/zero Write

The fastest place I can think of to get data from and avoid any bottlenecks
outside of the drive is to write from /dev/zero. The amount of processing power
that goes into writing all zeros __is insignificant next to the power of the
force__...er...reading data from another drive, potentially introducing more
bottlenecks and not getting good measurements. Let us begin...

----
dd if=/dev/zero of=/dev/sdc bs=1M count=8192
8191+1 records in
8191+1 records out
8589131776 bytes (8.6 GB) copied, 82.9999 s, 103 MB/s
----

Double the amount of data being written...

----
dd if=/dev/zero of=/dev/sdc bs=1M count=16384
16384+0 records in
16384+0 records out
17179869184 bytes (17 GB) copied, 161.13 s, 107 MB/s
----

Looks like overall this drive consistently averages just over 100 MB/s plugged
in to USB3.


[[usb3-read-to-devnull]]
==== USB3 Read to /dev/null

Here we're basically doing the same as writing from /dev/zero, but instead
we're reading verbatim the first _x_ consecutive number of bytes and sending
them to a device that literally can't be a bottleneck: /dev/null. It's like
sending dead satellites floating into space
(https://www.youtube.com/watch?v=rWVGupqvCL8[spaaaaacce]) instead of spending
the time to land them (if they don't burn up) and disassembling. If I had to
pick somewhere to send something fast where there wouldn't be any bottlenecks,
the vast void of space is where I'd send it - that is equivelant to /dev/null.
Not a great analogy, I know, but honestly, I just wanted to reference
https://www.youtube.com/watch?v=rWVGupqvCL8[that Portal] video.

----
dd if=/dev/sdc of=/dev/null bs=1M count=8192
8192+0 records in
8192+0 records out
8589934592 bytes (8.6 GB) copied, 80.5907 s, 107 MB/s
----


[[conclusion]]
=== Conclusion

* **Average write speed**: 104 MBps (832 Mbps = .832 Gbps)
* **Average read speed**: 107 MBps (856 Mbps = .856 Gbps)

Overall I'd say this drive is okay. As mentioned, the maximum speed of the
https://en.wikipedia.org/wiki/USB_3.0[USB3 spec] is 5 Gbps and this is getting
just shy of 1/5 that. I won't balk at that because a 100 megabytes per second
transfer rate is still pretty impressive for an external hard drive (that's
838,860,800 bits per second!).

One final thing to note, I ran these benchmarks on two systems, my laptop and
my server, to make sure the USB3 port, processor, bus, etc.  weren't themselves
bottlenecks. The transfer rates were nearly identical (insignificantly
different).


Category:Western_Digital

Category:Hard_Drives

Category:Benchmarks


// vim: set syntax=asciidoc:
