NASBerry Pi

Adventures with a Raspberry Pi 4 Model B, some hard drives and some Chinese circuit boards.

The Raspberry Pi 4 Model B contains two USB 3.0 ports, something that previous versions did not. This upgrade finally opens up storage array possibilities as the RPi still has no SATA connections. USB 3.0 has a theoretical max transfer rate of 5 Gbps which translates to roughly 640 MBps. This brings it close to SATA 3’s 6.0 Gbps theoretical transfer rate; however, it’s not likely any of these “max” rates will be achievable, especially by a Raspberry Pi. That being said, we can give it the good ol fashioned college dropout try!

Next, lets talk about fancy extras. The Suptronics boards are not necessary at all. You can easily plug two HDD/SDD’s into the two available USB3.0 ports on the Raspberry Pi 4, but for sake of modularity and my desire to 3D print modular enclosures, I bought two expansion boards from Suptronics.

The Suptronics X822 allows you to mount two 2.5″ HDD/SDDs via SATA connections and then converts them over to USB3.0. It also allows you to power the entire rig right from the DC jack which power the Pi via a jumper wire. [Documentation]

The Suptronics X735 is a “smart” power and cooling expansion board that senses the temps and adjusts the speed. It is also claimed to be able to safely shut down the RPi running Raspbian with a 3-7 second depression of the button. [Documentation]

Heads up!

The Suptronics X822’s upstream USB3.0 jumper does NOT work on the Raspberry Pi 4 Model B as the ports were rearranged (I didn’t even realize this until I tried to plug them in). What you will find is that the USB jumper now plugs into one of the expansion USB3.0 ports on the X822. This sucks for the compactness of the whole thing. Not sure how this even happened as prior RPi models didn’t even have USB3.0.

What does this mean? Well, you can still use the board, but you’re going to have to use a cable to jump the upstream port on the X822 to the RPi 4. So much for the slim design.

Anyways…

This page will serve as a record of testing for various types of hard drives and methods in which the hard drives are interfaced. It will continue to be updated as I test.

That being said, here is the current configuration

Raspberry Pi 4 Storage Benchmark Testing

Samsung EVO+ CL10 U1 (microSD)

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 32 bit mode.
        Build: linux

Run began: Sat Nov 23 05:40:25 2019

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     3426     2943     9560     9568     9679     2658
102400      16    14230    15581    20079    20053    20004    13807
102400     512    22279    22949    38963    38930    38929    23317
102400    1024    22828    23025    39040    39020    39012    17798
102400   16384    24746    24769    44180    44083    44134    24862

iozone test complete.

USB 3.0: Seagate Barracuda 1TB 5400RPM (2.5″ Internal HDD)

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 32 bit mode.
        Build: linux

Run began: Sat Nov 23 14:27:14 2019

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    11151    13172    14929    15032     2016     1768
102400      16    41015    45008    46139    47657     7158     6853
102400     512    99346   101355   121738   127505    45954    77901
102400    1024   109938   111060   123744   128825    60772    90006
102400   16384   110876   111036   121348   127312   103544    83364

iozone test complete.

USB 3.0: Seagate Barracuda 1TB 7200RPM (2.5″ Internal HDD)

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 32 bit mode.
        Build: linux

Run began: Sat Nov 23 17:27:57 2019

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     8837    11103    14885    14764     2006     1695
102400      16    36191    40158    45250    45791     7287     6799
102400     512    95890    97159   117716   114139    54371    84232
102400    1024   125403   120640   160471   176793    76717   102263
102400   16384   128367   146876   123975   130077   116287    90703

iozone test complete.

USB3.0: Dual Throughput Test

iozone -l 2 -u 2 -r 16k -s 512M -F seagate_1tb_5400/tmp1 seagate_1tb_7200/tmp2
        Iozone: Performance Test of File I/O
                Version $Revision: 3.429 $
                Compiled for 32 bit mode.
                Build: linux

        Run began: Sat Nov 23 17:57:44 2019

        Record Size 16 kB
        File size set to 524288 kB
        Command line used: iozone -l 2 -u 2 -r 16k -s 512M -F seagate_1tb_5400/tmp1 seagate_1tb_7200/tmp2
        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.
        Min process = 2
        Max process = 2
        Throughput test with 2 processes
        Each process writes a 524288 kByte file in 16 kByte records

        Children see throughput for  2 initial writers  =   74987.70 kB/sec
        Parent sees throughput for  2 initial writers   =   69474.19 kB/sec
        Min throughput per process                      =   33863.10 kB/sec
        Max throughput per process                      =   41124.60 kB/sec
        Avg throughput per process                      =   37493.85 kB/sec
        Min xfer                                        =  433632.00 kB

        Children see throughput for  2 rewriters        =  111439.20 kB/sec
        Parent sees throughput for  2 rewriters         =   95088.92 kB/sec
        Min throughput per process                      =   24268.26 kB/sec
        Max throughput per process                      =   87170.95 kB/sec
        Avg throughput per process                      =   55719.60 kB/sec
        Min xfer                                        =  146160.00 kB

        Children see throughput for  2 readers          = 1455151.50 kB/sec
        Parent sees throughput for  2 readers           = 1238321.19 kB/sec
        Min throughput per process                      =  723034.44 kB/sec
        Max throughput per process                      =  732117.06 kB/sec
        Avg throughput per process                      =  727575.75 kB/sec
        Min xfer                                        =  517888.00 kB

        Children see throughput for 2 re-readers        = 1396920.62 kB/sec
        Parent sees throughput for 2 re-readers         = 1353991.35 kB/sec
        Min throughput per process                      =  695902.38 kB/sec
        Max throughput per process                      =  701018.25 kB/sec
        Avg throughput per process                      =  698460.31 kB/sec
        Min xfer                                        =  520544.00 kB

        Children see throughput for 2 reverse readers   = 1428006.00 kB/sec
        Parent sees throughput for 2 reverse readers    = 1381371.10 kB/sec
        Min throughput per process                      =  694481.56 kB/sec
        Max throughput per process                      =  733524.44 kB/sec
        Avg throughput per process                      =  714003.00 kB/sec
        Min xfer                                        =  496432.00 kB

        Children see throughput for 2 stride readers    = 1397709.31 kB/sec
        Parent sees throughput for 2 stride readers     = 1346960.76 kB/sec
        Min throughput per process                      =  692647.56 kB/sec
        Max throughput per process                      =  705061.75 kB/sec
        Avg throughput per process                      =  698854.66 kB/sec
        Min xfer                                        =  515120.00 kB

        Children see throughput for 2 random readers    = 1465685.56 kB/sec
        Parent sees throughput for 2 random readers     = 1420616.18 kB/sec
        Min throughput per process                      =  725591.12 kB/sec
        Max throughput per process                      =  740094.44 kB/sec
        Avg throughput per process                      =  732842.78 kB/sec
        Min xfer                                        =  514080.00 kB

        Children see throughput for 2 mixed workload    =  886457.75 kB/sec
        Parent sees throughput for 2 mixed workload     =   33919.33 kB/sec
        Min throughput per process                      =  162551.88 kB/sec
        Max throughput per process                      =  723905.88 kB/sec
        Avg throughput per process                      =  443228.88 kB/sec
        Min xfer                                        =  118032.00 kB

        Children see throughput for 2 random writers    =   37976.40 kB/sec
        Parent sees throughput for 2 random writers     =   22049.72 kB/sec
        Min throughput per process                      =   13265.16 kB/sec
        Max throughput per process                      =   24711.24 kB/sec
        Avg throughput per process                      =   18988.20 kB/sec
        Min xfer                                        =  308112.00 kB

        Children see throughput for 2 pwrite writers    =  121606.70 kB/sec
        Parent sees throughput for 2 pwrite writers     =   50090.20 kB/sec
        Min throughput per process                      =   14648.29 kB/sec
        Max throughput per process                      =  106958.41 kB/sec
        Avg throughput per process                      =   60803.35 kB/sec
        Min xfer                                        =   87088.00 kB

        Children see throughput for 2 pread readers     = 1453561.12 kB/sec
        Parent sees throughput for 2 pread readers      = 1228371.57 kB/sec
        Min throughput per process                      =  726303.50 kB/sec
        Max throughput per process                      =  727257.62 kB/sec
        Avg throughput per process                      =  726780.56 kB/sec
        Min xfer                                        =  523632.00 kB

        Children see throughput for  2 fwriters         =  140499.27 kB/sec
        Parent sees throughput for  2 fwriters          =   91076.68 kB/sec
        Min throughput per process                      =   47766.55 kB/sec
        Max throughput per process                      =   92732.72 kB/sec
        Avg throughput per process                      =   70249.63 kB/sec
        Min xfer                                        =  524288.00 kB

        Children see throughput for  2 freaders         = 1438866.69 kB/sec
        Parent sees throughput for  2 freaders          = 1425883.16 kB/sec
        Min throughput per process                      =  714025.19 kB/sec
        Max throughput per process                      =  724841.50 kB/sec
        Avg throughput per process                      =  719433.34 kB/sec
        Min xfer                                        =  524288.00 kB

iozone test complete.

Add a Comment

Your email address will not be published. Required fields are marked *