Hello,
Recently I have prepared a second TrueNas for my NFS VM Storage. I made some tests and the results are not satisfying at all. Im looking for some advice to get a proper/better result.
Here is my current config on NVMe Pool:
HP DL380 Gen10 With NVMe Expansion Kit
8 x 8 TB Intel DCP4510 U.2 NVMe
2 x Xeon Gold 6136 3.0Ghz (I preffered this for better base clock)
18x64 GB DDR4 2666MHZ ECC Ram Total 1152GB
40G ConnectX-3 Pro For NFS Share over network
2x300GB Sas for TrueNas boot-pool (mirrored)
My Pool configuration;
4 x 2-Way Mirror 28.87 TiB Free
I made it this way because I need more iops and redundancy. 30TB is fair enough for me, i can sacrifice size for more iops so i made much vdevs as possible ( more vdevs = more iops)
solnet-array-test results;
I made some research on forum & web and tested with different tools, configuration etc.
So here is the test results of this pool, with cache and compression disabled ( zfs pool primarycache=none & zfs pool primarycache=metadata)
I tried to make much tests as possible, i can make another tests if its needed. The main improvement i want to make here is IOPS, i don't need much throughput at all.
Each disk gives around 650k? read iops, so im thinking i need to get at least 2M IOPS?
Thanks
Recently I have prepared a second TrueNas for my NFS VM Storage. I made some tests and the results are not satisfying at all. Im looking for some advice to get a proper/better result.
Here is my current config on NVMe Pool:
HP DL380 Gen10 With NVMe Expansion Kit
8 x 8 TB Intel DCP4510 U.2 NVMe
2 x Xeon Gold 6136 3.0Ghz (I preffered this for better base clock)
18x64 GB DDR4 2666MHZ ECC Ram Total 1152GB
40G ConnectX-3 Pro For NFS Share over network
2x300GB Sas for TrueNas boot-pool (mirrored)
My Pool configuration;
4 x 2-Way Mirror 28.87 TiB Free
I made it this way because I need more iops and redundancy. 30TB is fair enough for me, i can sacrifice size for more iops so i made much vdevs as possible ( more vdevs = more iops)
solnet-array-test results;
Code:
Completed: initial serial array read (baseline speeds)
Array's average speed is 1867.62 MB/sec per disk
Disk Disk Size MB/sec %ofAvg
------- ---------- ------ ------
nvd0 7630885MB 1871 100
nvd1 7630885MB 1881 101
nvd2 7630885MB 1844 99
nvd3 7630885MB 1850 99
nvd4 7630885MB 1884 101
nvd5 7630885MB 1891 101
nvd6 7630885MB 1863 100
nvd7 7630885MB 1857 99
Performing initial parallel array read
Fri Mar 8 17:01:09 PST 2024
The disk nvd0 appears to be 7630885 MB.
Disk is reading at about 2380 MB/sec
This suggests that this pass may take around 53 minutes
Serial Parall % of
Disk Disk Size MB/sec MB/sec Serial
------- ---------- ------ ------ ------
nvd0 7630885MB 1871 2801 150 ++FAST++
nvd1 7630885MB 1881 2834 151 ++FAST++
nvd2 7630885MB 1844 2831 154 ++FAST++
nvd3 7630885MB 1850 2816 152 ++FAST++
nvd4 7630885MB 1884 2813 149 ++FAST++
nvd5 7630885MB 1891 2834 150 ++FAST++
nvd6 7630885MB 1863 2816 151 ++FAST++
nvd7 7630885MB 1857 2833 153 ++FAST++
Awaiting completion: initial parallel array read
Fri Mar 8 17:46:54 PST 2024
Completed: initial parallel array read
Disk's average time is 2732 seconds per disk
Disk Bytes Transferred Seconds %ofAvg
------- ----------------- ------- ------
nvd0 8001563222016 2740 100
nvd1 8001563222016 2723 100
nvd2 8001563222016 2723 100
nvd3 8001563222016 2739 100
nvd4 8001563222016 2738 100
nvd5 8001563222016 2722 100
nvd6 8001563222016 2745 100
nvd7 8001563222016 2730 100
Performing initial parallel seek-stress array read
Fri Mar 8 17:46:54 PST 2024
The disk nvd0 appears to be 7630885 MB.
Disk is reading at about 3132 MB/sec
This suggests that this pass may take around 41 minutes
Serial Parall % of
Disk Disk Size MB/sec MB/sec Serial
------- ---------- ------ ------ ------
nvd0 7630885MB 1871 3133 167
nvd1 7630885MB 1881 3134 167
nvd2 7630885MB 1844 3133 170
nvd3 7630885MB 1850 3111 168
nvd4 7630885MB 1884 3125 166
nvd5 7630885MB 1891 3126 165
nvd6 7630885MB 1863 3136 168
nvd7 7630885MB 1857 3125 168
I made some research on forum & web and tested with different tools, configuration etc.
So here is the test results of this pool, with cache and compression disabled ( zfs pool primarycache=none & zfs pool primarycache=metadata)
Code:
zfs get primarycache NVMe NAME PROPERTY VALUE SOURCE NVMe primarycache metadata local BS : 4k & Size 256M --bs=4k --direct=1 --directory=/mnt/NVMe/ --gtod_reduce=1--ioengine==posixaio -iodepth=32 --group_reporting --name=randrw --numjobs=24 --ramp_time=10 --runtime=60 --rw=randrw --size=256M --time_based read: IOPS=32.7k, BW=128MiB/s (134MB/s)(7678MiB/60026msec write: IOPS=32.7k, BW=128MiB/s (134MB/s)(7675MiB/60026msec); BS: 4K & Size 4M (CPU Usage was %100) --bs=4k --direct=1 --directory=/mnt/NVMe/ --gtod_reduce=1--ioengine==posixaio -iodepth=32 --group_reporting --name=randrw --numjobs=24 --ramp_time=10 --runtime=60 --rw=randrw --size=4M --time_based READ: IOPS=839k, bw=3279MiB/s (3438MB/s), 3279MiB/s-3279MiB/s (3438MB/s-3438MB/s), io=96.1GiB (103GB), run=30002-30002msec WRITE: IOPS=839k, bw=3278MiB/s (3437MB/s), 3278MiB/s-3278MiB/s (3437MB/s-3437MB/s), io=96.0GiB (103GB), run=30002-30002msec BS: 4K & Size 1M (CPU Usage was %100) read: IOPS=872k, BW=3406MiB/s (3572MB/s)(99.8GiB/30002msec) write: IOPS=872k, BW=3405MiB/s (3570MB/s)(99.8GiB/30002msec); BS : 128k & Size 256M (CPU Usage was %100) --bs=128k --direct=1 --directory=/mnt/NVMe/ --gtod_reduce=1--ioengine==posixaio -iodepth=32 --group_reporting --name=randrw --numjobs=24 --ramp_time=10 --runtime=60 --rw=randrw --size=256M --time_based READ: bw=4174MiB/s (4377MB/s), 4174MiB/s-4174MiB/s (4377MB/s-4377MB/s), io=245GiB (263GB), run=60025-60025msec WRITE: bw=4171MiB/s (4374MB/s), 4171MiB/s-4171MiB/s (4374MB/s-4374MB/s), io=245GiB (263GB), run=60025-60025msec BS : 128k & Size 4M (CPU Usage was %100) read: IOPS=425k, BW=51.9GiB/s (55.8GB/s)(1558GiB/30002msec) write: IOPS=425k, BW=51.9GiB/s (55.8GB/s)(1558GiB/30002msec); 0 zone resets BS : 128k & Size 1M (CPU Usage was %100) read: IOPS=684k, BW=83.5GiB/s (89.6GB/s)(2505GiB/30002msec) write: IOPS=683k, BW=83.4GiB/s (89.6GB/s)(2503GiB/30002msec); 0 zone resets
I tried to make much tests as possible, i can make another tests if its needed. The main improvement i want to make here is IOPS, i don't need much throughput at all.
Each disk gives around 650k? read iops, so im thinking i need to get at least 2M IOPS?
Thanks