Last update: 4Feb2022
To allow for a comparison of "apples to apples" and answer questions like "read or write rate is only #MB/sec on my hardware".
Short summary:
- A RPi4 using below SMB 'Extra Options' will max out a 1Gbit/s wired network (common maximum speed in home and office networks)
- SMB 'Extra Options' are platform independent
- performance bottleneck for clients accessing data on the NAS is the network hardware
- best case for wireless network access via WiFi-4/801.11n is for Write ~ 10 MByte/s & Read ~ 13.5 MByte/s
- best case for wireless network access via WiFi-5/801.11ac is Write ~ 18 MByte/s & Read ~ 20 MByte/s
- random access of data is much slower between 1,3 MByte/s to 2 MByte/s for WiFi-4/801.11n & WiFi-5/801.11ac
- investing in fast NAS hardware (i.e. SSD data disk, CPU, RAM) has low to no benefit to clients accessing the data, because network hardware is the real bottleneck
- valid comparisons can only be performed by using the same tools. Details are documented below
SMB 'Extra Options' modified to:
min receivefile size = 16384
write cache size = 524288
getwd cache = yes
socket options = TCP_NODELAY IPTOS_LOWDELAY
read raw = yes
write raw = yes
These are measured values from a:
- server: RPi4 with 4GB RAM running
- omv 5.5.19-1 (usul)
- Debian 5.4.79
- storage: 2x 6TB Toshiba HDWT360 HDD in Icy Box IB-RD3662-C31 /RAID1
- HDDs use Conventional Magnetic Recording (CMR)
- IB-RD3662-C31 uses ASM1061R chipset providing hardware supported RAID1
- connected via original USB3.1 cable of IB-RD3662-C31
- formatted with ext4 file system
- further configuration details at bottom
Measurements:
Performance of SMB share hosted on OMV RPi4 server connected via wired 1Gb Ethernet versus 2 WLAN routers using (802.11n) & (802.11.ac = WiFi5) protocol to a Windows 10 client.
Measurement done with CrystalDiskMark 8 on a Windows 10 client.
Many more benchmarks have been published. Worth mentioning are:
- Jeff Geerling's blog titled "Building the fastest Raspberry Pi NAS, with SATA RAID"
- optimum encrypted RAID5 settings for NAS with RaspberryPI 4 (here)
1) Client and server connected via 1Gbit switch & wired Ethernet performance
[Read Performance]
Measurement | MB/s | IOPS |
SEQ 1MiB (Q= 8, T= 1) | 93.0 | 88.7 |
SEQ 1MiB (Q= 1, T= 1) | 95.4 | 91.0 |
RND 4KiB (Q= 32, T= 1) | 43.2 | 10557.4 |
RND 4KiB (Q= 1, T= 1) | 8.4 | 2054.4 |
[Write Performance]
Measurement | MB/s | IOPS |
SEQ 1MiB (Q= 8, T= 1) | 117.3 | 111.8 |
SEQ 1MiB (Q= 1, T= 1) | 111.4 | 106.2 |
RND 4KiB (Q= 32, T= 1) | 26.7 | 6518.8 |
RND 4KiB (Q= 1, T= 1) | 9.6 | 2337.6 |
2) Connected via WiFi-4 /WLAN(802.11n) (WiFi router was old single core model)
[Read]
SEQ 1MiB (Q= 8, T= 1): 6.1 MB/s [ 5.8 IOPS]
SEQ 1MiB (Q= 1, T= 1): 5.9 MB/s [ 5.6 IOPS]
RND 4KiB (Q= 32, T= 1): 5.7 MB/s [ 1395.3 IOPS]
RND 4KiB (Q= 1, T= 1): 1.3 MB/s [ 313.5 IOPS]
[Write]
SEQ 1MiB (Q= 8, T= 1): 11.7 MB/s [ 11.2 IOPS]
SEQ 1MiB (Q= 1, T= 1): 10.1 MB/s [ 9.6 IOPS]
RND 4KiB (Q= 32, T= 1): 9.7 MB/s [ 2356.0 IOPS]
RND 4KiB (Q= 1, T= 1): 1.3 MB/s [ 317.6 IOPS]
3) Connected via WiFi-4 /WLAN (802.11n) (WiFi router was new dual core model)
[Read]
SEQ 1MiB (Q= 8, T= 1): 14.2 MB/s [ 13.6 IOPS]
SEQ 1MiB (Q= 1, T= 1): 13.6 MB/s [ 13.0 IOPS]
RND 4KiB (Q= 32, T= 1): 11.3 MB/s [ 2765.9 IOPS]
RND 4KiB (Q= 1, T= 1): 2.0 MB/s [ 485.6 IOPS]
[Write]
SEQ 1MiB (Q= 8, T= 1): 12.2 MB/s [ 11.6 IOPS]
SEQ 1MiB (Q= 1, T= 1): 11.3 MB/s [ 10.8 IOPS]
RND 4KiB (Q= 32, T= 1): 10.9 MB/s [ 2655.3 IOPS]
RND 4KiB (Q= 1, T= 1): 1.9 MB/s [ 458.0 IOPS]
3) Connected via WiFi-5 /WLAN (802.11ac) (WiFi router was new dual core model)
[Read]
SEQ 1MiB (Q= 8, T= 1): 38.4 MB/s [ 36.6 IOPS]
SEQ 1MiB (Q= 1, T= 1): 19.9 MB/s [ 19.0 IOPS]
RND 4KiB (Q= 32, T= 1): 21.1 MB/s [ 5140.6 IOPS]
RND 4KiB (Q= 1, T= 1): 1.7 MB/s [ 426.0 IOPS]
[Write]
SEQ 1MiB (Q= 8, T= 1): 31.0 MB/s [ 29.6 IOPS]
SEQ 1MiB (Q= 1, T= 1): 17.8 MB/s [ 17.0 IOPS]
RND 4KiB (Q= 32, T= 1): 15.0 MB/s [ 3672.4 IOPS]
RND 4KiB (Q= 1, T= 1): 1.7 MB/s [ 423.3 IOPS]
------------------------------------------------------------------------------
Profile: Default
Test: 64 MiB (x5) [Z: 22% (1237/5544GiB)]
Mode: [Admin]
Time: Measure 5 sec / Interval 5 sec
Date: 2020/12/20 15:53:48
Client OS: Windows 10 Professional [10.0 Build 19042] (x64)
------------------------------------------------------------------------------
For reference and troubleshooting below information is needed
Server:
output from tested system:
root@nas:~# uname -a
Linux nas 5.4.79-v7l+ #1373 SMP Mon Nov 23 13:27:40 GMT 2020 armv7l GNU/Linux
root@nas:~# lsusb -t
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 5000M
|__ Port 2: Dev 2, If 0, Class=Mass Storage, Driver=uas, 5000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/1p, 480M
|__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
Good performance is provided by SATA-to-USB adapters supported by "Driver=uas"
------------------------------------------------------------------------------
Measured with: CrystalDiskMark 8.0.0 x64 (C) 2007-2020 hiyohiyo
Crystal Dew World: https://crystalmark.info/
------------------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes