04-08-2018, 12:18 PM
I've received my Rock64 4GB a few weeks back but I'm having some trouble getting the external hard drive to perform as it should.
I really hope anyone here has some idea's on how to get performance up to spec because I'm about to pull my hair out with this issue. The main purpose of the Rock64 was a replacement for my RasbPI3 as a NAS. Since the Rock64 has Gigabit ethernet and USB3 it seemed like a good fit but so far it's been dissapointing. (It's rock stable though )
The drive I'm a Seagate STEA4000400 USB3 (powered by wall adapter) which performs great on my Windows rig. Transferring files from the same server as I'm using to test with the Rock64 gives me a stable 110MB/s up/down.
I'm currently running bionic-minimal-rock64-0.6.31-209-arm64, but I've also tried xenial-minimal-rock64-0.5.15-136-arm64 (the current stable release) and but had similar results.
Right now I'm only get around 20MB/s write and about 40MB/s read on the drive when using RSYNC or SAMBA, which seems way too low.
I've tried Rsync (SSH), then after reading SSH might be the culprit for poor speed changed to NFS, then when this didn't help I tried the Rsync protocol (no notable change in performance). Then said screw it and tried transferring files via samba, same crap performance. I just tried to do a local rysnc moving files around on the drive, around 18MB/s.
At first the drive was formatted as EXT4, I've formatted it to NTFS now and still get the same performance. (I didn't expect any improvement, but this gave me the change to test the drive on my windows machine, which doesn't have the problem).
Here's some more debugging I've tried to do to narrow down the cause.. (all done with governor @ performance on 4.4.120-rockchip-ayufan-209)
Iperf with Rock64 as client:
Rock64 as server:
As client is a bit slower, but acceptable (if anyone knows why I'd gladly hear it, firewall is disabled)
iozone test:
Not sure if these are good results
Test with DD:
Cleared cache with
Then tested read, seems fine:
This is how the drive is mounted in fstab: (ext4 I had some bad perf)
Hope someone one of the smart people on here can help me figure this one out.
Thanks in advance!
I really hope anyone here has some idea's on how to get performance up to spec because I'm about to pull my hair out with this issue. The main purpose of the Rock64 was a replacement for my RasbPI3 as a NAS. Since the Rock64 has Gigabit ethernet and USB3 it seemed like a good fit but so far it's been dissapointing. (It's rock stable though )
The drive I'm a Seagate STEA4000400 USB3 (powered by wall adapter) which performs great on my Windows rig. Transferring files from the same server as I'm using to test with the Rock64 gives me a stable 110MB/s up/down.
I'm currently running bionic-minimal-rock64-0.6.31-209-arm64, but I've also tried xenial-minimal-rock64-0.5.15-136-arm64 (the current stable release) and but had similar results.
Right now I'm only get around 20MB/s write and about 40MB/s read on the drive when using RSYNC or SAMBA, which seems way too low.
I've tried Rsync (SSH), then after reading SSH might be the culprit for poor speed changed to NFS, then when this didn't help I tried the Rsync protocol (no notable change in performance). Then said screw it and tried transferring files via samba, same crap performance. I just tried to do a local rysnc moving files around on the drive, around 18MB/s.
At first the drive was formatted as EXT4, I've formatted it to NTFS now and still get the same performance. (I didn't expect any improvement, but this gave me the change to test the drive on my windows machine, which doesn't have the problem).
Here's some more debugging I've tried to do to narrow down the cause.. (all done with governor @ performance on 4.4.120-rockchip-ayufan-209)
Iperf with Rock64 as client:
Code:
sudo iperf3 -c 192.168.2.10
\Connecting to host 192.168.2.10, port 5201
[ 4] local 192.168.2.101 port 52794 connected to 192.168.2.10 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 96.3 MBytes 805 Mbits/sec 0 946 KBytes
[ 4] 1.00-2.00 sec 100 MBytes 839 Mbits/sec 0 1.04 MBytes
[ 4] 2.00-3.00 sec 100 MBytes 839 Mbits/sec 0 1.25 MBytes
[ 4] 3.00-4.00 sec 100 MBytes 839 Mbits/sec 0 1.25 MBytes
[ 4] 4.00-5.00 sec 100 MBytes 840 Mbits/sec 0 1.90 MBytes
[ 4] 5.00-6.01 sec 101 MBytes 845 Mbits/sec 0 1.90 MBytes
[ 4] 6.01-7.00 sec 100 MBytes 840 Mbits/sec 0 1.90 MBytes
[ 4] 7.00-8.00 sec 100 MBytes 842 Mbits/sec 0 1.90 MBytes
[ 4] 8.00-9.01 sec 101 MBytes 845 Mbits/sec 0 1.93 MBytes
[ 4] 9.01-10.00 sec 100 MBytes 840 Mbits/sec 0 1.93 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 999 MBytes 838 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 995 MBytes 834 Mbits/sec receiver
Rock64 as server:
Code:
sudo iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.2.10, port 48590
[ 5] local 192.168.2.101 port 5201 connected to 192.168.2.10 port 48592
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-1.00 sec 108 MBytes 907 Mbits/sec
[ 5] 1.00-2.00 sec 112 MBytes 941 Mbits/sec
[ 5] 2.00-3.00 sec 112 MBytes 940 Mbits/sec
[ 5] 3.00-4.00 sec 112 MBytes 940 Mbits/sec
[ 5] 4.00-5.00 sec 112 MBytes 941 Mbits/sec
[ 5] 5.00-6.00 sec 112 MBytes 941 Mbits/sec
[ 5] 6.00-7.00 sec 112 MBytes 941 Mbits/sec
[ 5] 7.00-8.00 sec 112 MBytes 941 Mbits/sec
[ 5] 8.00-9.00 sec 111 MBytes 933 Mbits/sec
[ 5] 9.00-10.00 sec 112 MBytes 941 Mbits/sec
[ 5] 10.00-10.03 sec 3.43 MBytes 929 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth
[ 5] 0.00-10.03 sec 0.00 Bytes 0.00 bits/sec sender
[ 5] 0.00-10.03 sec 1.09 GBytes 937 Mbits/sec receiver
As client is a bit slower, but acceptable (if anyone knows why I'd gladly hear it, firewall is disabled)
iozone test:
Code:
iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
Iozone: Performance Test of File I/O
Version $Revision: 3.429 $
Compiled for 64 bit mode.
Build: linux
Contributors:William Norcott, Don Capps, Isom Crawford, Kirby Collins
Al Slater, Scott Rhine, Mike Wisner, Ken Goss
Steve Landherr, Brad Smith, Mark Kelly, Dr. Alain CYR,
Randy Dunlap, Mark Montague, Dan Million, Gavin Brebner,
Jean-Marc Zucconi, Jeff Blomberg, Benny Halevy, Dave Boone,
Erik Habbinga, Kris Strecker, Walter Wong, Joshua Root,
Fabrice Bacchella, Zhenghua Xue, Qin Li, Darren Sawyer,
Vangel Bojaxhi, Ben England, Vikentsi Lapa.
Run began: Sun Apr 8 19:54:02 2018
Include fsync in write timing
O_DIRECT feature enabled
Auto Mode
File size set to 102400 kB
Record Size 4 kB
Record Size 16 kB
Record Size 512 kB
Record Size 1024 kB
Record Size 16384 kB
Command line used: iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
Output is in kBytes/sec
Time Resolution = 0.000001 seconds.
Processor cache size set to 1024 kBytes.
Processor cache line size set to 32 bytes.
File stride size set to 17 * record size.
random random bkwd record stride
kB reclen write rewrite read reread read write read rewrite read fwrite frewrite fread freread
102400 4 22657 26762 91373 92627 90584 31170
102400 16 53854 65291 261840 273802 270460 65326
102400 512 88260 91791 308807 324209 361771 94020
102400 1024 85033 92685 356563 368805 368856 92340
102400 16384 91176 96230 350895 369697 370204 97167
Test with DD:
Code:
/mnt/sg1/test$ dd if=/dev/zero of=./largefile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 29.5178 s, 36.4 MB/s
Cleared cache with
Code:
sudo sh -c "sync && echo 3 > /proc/sys/vm/drop_caches"
Then tested read, seems fine:
Code:
/mnt/sg1/test$ dd if=./largefile of=/dev/null bs=4k
262144+0 records in
262144+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.97084 s, 154 MB/s
This is how the drive is mounted in fstab: (ext4 I had some bad perf)
Code:
/dev/disk/by-id/ata-ST4000DM004-2CV104_ZFN0B7VM-part1 /mnt/sg1 ntfs-3g rw, big_writes, defaults,nofail 0 0
Hope someone one of the smart people on here can help me figure this one out.
Thanks in advance!