Many upcoming ARM based board and device will support better connectivity with Gigagit Ethernet and USB 3.0 port, and Wi-Fi 802.11ac support. Since my media files are stored in a USB 2.0 hard drive, and my network is still using fast Ethernet and 802.11n, I had to go shopping. I’ve already purchased a 5-port Gigabit switch (D-Link DGS-1005A), and an an external USB 3.0 hard drive (Seagate Expansion 1TB Portable External Hard Drive), but I’m still looking for a decent and reasonably priced 802.11ac router (Suggestions welcomed).
I’ll plan to use the USB 3.0 drive both to test file transfers over Gigabit, USB 3.0 performance, and file systems compatibility. So I’ve partitioned the drive using four common filesystems: NTFS, EXT-4, FAT32, and BTRFS, and both to make sure the drive is suitable for Gigabit transfer, and as a reference point, I’ve also performed some benchmarks.
There are several tools to test a drive performance, but I ended up using Bonnie++ in Ubuntu 14.04, because I’m used to it, and it appears to be available for Android (Version 1.96) which could be useful for future tests.
I used to default settings, running bonnie++ -d mount_point. The program uses double the amount of RAM (16GB) to write on the hard drive, which means I could only test NTFS, EXT-4 and BTRFS, as FAT32 was probably hit by its 4GB file limit has bonnie++ failed to run. Let’s have a look at the result (tabled generated with bon_csv2html).
|Version 1.97||Sequential Output||Sequential Input||Random
|Size||Per Char||Block||Rewrite||Per Char||Block|
|K/sec||% CPU||K/sec||% CPU||K/sec||% CPU||K/sec||% CPU||K/sec||% CPU||/sec||% CPU|
Click here for full results with sequential create and random create values.
You can read the readme for a full understand of the vocabulary used in Bonnie++, but sequential output tests the writing speed with putc (per char) and write (block) functions, and sequential input test the reading speed using getc and read functions. From this test, it seems ext-4 is the most suitable file system achieving about 113 MB/s read throughput, and 91.7MB/s write throughput, and both NTFS and BTRFS are much slower, especially when it comes to writing performance. 113 MB/s correspond to about 908 Mbps which is close to the theoretical speed achievable via Gigabit Ethernet.
I’ve also test the drive using “Disks” utility in Ubuntu, but this tool apparently measures raw speed, as I’ve noticed it may unmount the partitions before running the benchmark. Here are the results I got for NTFS, ext-4 and BTRFS partitions.
We’ll notice the performance seems to drop off as the readhead moves along the drive, which may be expected from a mechanical drive. Partition 1 averages 104.5 MB/s, partition 2 95.2 MB/s, and partition 4 drops to 62.9 MB.s on average, and close to just 50MB/s at the extremity of the drive. This probably explains why BTRFS has fared relatively poorly with Bonnie++.
For reference, I’ve also tested the performance of my Internal drive (Seagate 1TB – ST1000DM003-9YN162), and my external USB 2.0 drive (Seagate expansion, also ST1000DM003-9YN162). The USB 3.0 expansion drive was detected as a Seagate Momentus drive (ST1000LM024 HN-M101MBB) by Disks, so it’s interesting to see what kind of performance we can get from different interfaces SATA, USB 3.0, and USB 2.0.
As expected SATA II is still much fast than USB 3.0 with 142.8 MB/s read speed on average. The range is quite wide though between 200MB/s and 50MB/s. The big and short dropat at 50MB/s could be because it’s the drive used by the system, and another process access the disk at that time (TBC).
In theory USB 2.0 should provide 480 Mbps of bandwidth (60MB/s), but in this test throughput was pretty constant just below 30 MB/s, which shows the transfer speed is not limited by the mechanical parts of the drive, but my the USB 2.0 interface. This type of drive would be not suitable to transfer files over a Gigabit connection.
So finally, I’ll probably test files transfer over Gigabit and 802.11ac using the internal hard drive of my PC via HTTP, test video playback with the USB 2.0 drive via SAMBA/CIFS, unless I start to get videos with 200Mbps+ bitrate, and used to USB 3.0 hard drive directly with the TV Box or mini PC to test file transfer, and file systems support.