Hello all,
This is my first time attempting to build and configure a NAS. I’m running into some issues surrounding performance, iPerf3, and link state that I can’t seem to squash. I do not know if all or some of these issues are related, any advice and help is appreciated. I am new, but functional, in Linux, but networking is proving difficult for me to grasp. I am trying to learn!
Hardware (Server [made from leftovers]):
CPU: 2X Xeon E5520 | RAM: 12GB (6x2GB) ECC | NIC: 2X Intel 82574 1GbE (onboard) | 5x WD10EZEX 1TB HDD, 120 GB SSD boot drive
TrueNAS Setup:
SCALE Ver. 25.04.0 | one pool [RAIDz2 Data, no other VDEV] | one SMB dataset+share [Std SYNC, LZ4 compression, no Atime or dedup]
Networking:
known good Cat6 cable from onboard 1GbE NIC to 2.5Gb port on Arris router | Server IPv4 address set to static in router settings | Router DNS set to local PiHole address | TrueNAS nameserver set to PiHole/DNS address | Interface set with DHCP deselected, MTU set to 1500 (have tried 9000), and server static IP set as Alias
Client:
Win10 Ver 10.0.19045 Build 19045 (WiFi 6 connected)
Samsung S24+, Android 14 (WiFi 6 connected)
Issues: I’m getting 1-11 MB/s on data transfer between my PC and the SMB share folder while transferring one large video file. Given the drive performances in this pool I’d expect close to 300 MB/s or near the 1GbE NIC limit. Transfer speeds fluctuate significantly. The Interface shows LINK STATE DOWN on the dashboard despite being able to connect to the share. Yesterday, iPerf3 was unable to run, error iperf3: error - failed to read /dev/urandom: Bad address
after accepting connection from the client. Unable to diagnose. Today, iPerf3 works fine, showing 40Mb/s (why so low?), then reverts back to Bad Address error after an autologout from the web GUI. iperf3 results:
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.01 sec 1.50 MBytes 12.5 Mbits/sec
[ 5] 1.01-2.00 sec 3.50 MBytes 29.6 Mbits/sec
[ 5] 2.00-3.01 sec 3.88 MBytes 32.1 Mbits/sec
[ 5] 3.01-4.00 sec 9.62 MBytes 81.6 Mbits/sec
[ 5] 4.00-5.01 sec 13.8 MBytes 115 Mbits/sec
[ 5] 5.01-6.01 sec 9.00 MBytes 75.3 Mbits/sec
[ 5] 6.01-7.01 sec 2.50 MBytes 21.0 Mbits/sec
[ 5] 7.01-8.01 sec 1.25 MBytes 10.4 Mbits/sec
[ 5] 8.01-9.01 sec 2.62 MBytes 22.0 Mbits/sec
[ 5] 9.01-10.01 sec 2.25 MBytes 18.8 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.01 sec 49.9 MBytes 41.8 Mbits/sec sender
[ 5] 0.00-10.02 sec 49.5 MBytes 41.4 Mbits/sec receiver
iperf Done.
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.01 sec 640 KBytes 5.20 Mbits/sec
[ 5] 1.01-2.01 sec 3.25 MBytes 27.2 Mbits/sec
[ 5] 2.01-3.01 sec 1.62 MBytes 13.6 Mbits/sec
[ 5] 3.01-4.01 sec 2.75 MBytes 23.1 Mbits/sec
[ 5] 4.01-5.00 sec 3.50 MBytes 29.6 Mbits/sec
[ 5] 5.00-6.00 sec 1.00 MBytes 8.38 Mbits/sec
[ 5] 6.00-7.01 sec 2.12 MBytes 17.7 Mbits/sec
[ 5] 7.01-8.01 sec 2.75 MBytes 23.3 Mbits/sec
[ 5] 8.01-9.01 sec 1.62 MBytes 13.6 Mbits/sec
[ 5] 9.01-10.01 sec 5.00 MBytes 41.8 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.01 sec 24.2 MBytes 20.3 Mbits/sec sender
[ 5] 0.00-10.02 sec 24.1 MBytes 20.2 Mbits/sec receiver
iperf Done.
[ ID] Interval Transfer Bitrate
[ 5] 0.00-1.00 sec 3.50 MBytes 29.3 Mbits/sec
[ 5] 1.00-2.01 sec 2.88 MBytes 23.9 Mbits/sec
[ 5] 2.01-3.01 sec 6.88 MBytes 57.3 Mbits/sec
[ 5] 3.01-4.00 sec 1.50 MBytes 12.7 Mbits/sec
[ 5] 4.00-5.00 sec 4.00 MBytes 33.5 Mbits/sec
[ 5] 5.00-6.01 sec 5.75 MBytes 48.0 Mbits/sec
[ 5] 6.01-7.01 sec 12.4 MBytes 103 Mbits/sec
[ 5] 7.01-8.00 sec 11.5 MBytes 97.8 Mbits/sec
[ 5] 8.00-9.00 sec 4.12 MBytes 34.5 Mbits/sec
[ 5] 9.00-10.01 sec 2.25 MBytes 18.7 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.01 sec 54.8 MBytes 45.9 Mbits/sec sender
[ 5] 0.00-10.02 sec 54.3 MBytes 45.4 Mbits/sec receiver
Note the wild swings in bitrate. This seemingly correlates with my file transfer speeds and variance.
Attempted troubleshooting with commands pulled from this forum and across other searches:
- All SMART tests came back clean, despite the drives being high hours.
- All drives were reading the appropriate individual read/write speeds (~160MB/s) using
hdparm -Tt
. - dd checks as below:
dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.920226 s, 1.2 GB/s
dd if=/dev/random of=/tmp/test1.img bs=1G count=1 oflag=dsync
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.28256 s, 203 MB/s
Why such a disparity? I’m assuming the /zero is falsely inflating due to cache/RAM read writing?
- I am able to successfully ping the server from the Win10 client with both the hostname and ip address, although with some fluctuation in ping between 1 and 5ms.
- I can read and write files on the SMB share from both phone and Win10 clients.
- ip route shows the link as up
Any insight as to why I’m seemingly an order of magnitude off in transfer/read/write speeds, why the dashboard claims the link is down when connection is holding, or why iPerf3 will not execute, would be greatly appreciated. Thanks!