Hey all,
So in typical fashion I've gotten myself way in over my head and come here asking for some help. The goal of this was to have an all NVMe storage solution that would be the data stores for all of my ESXi nodes.
Right now I'm sitting on a Supermicro 2028U-TN24R4T+ running two E5-2623V3's and 32GBs of Samsung DDR4 2400 RAM. I have four Intel P3520 1.2TB drives and four 900P 280GB drives.
Initially I was going to run this as a FreeNAS system and take the hit on performance, since, it was assumed that with this many NVMe drives, even if I took a 50% hit on performance I could still max out a 40Gbs connection. Well...not so much. The quote is the post from the FreeNAS forum where I was looking for some tips on NVMe pool tuning.
So I decided to try Windows' Storage Space. Local storage performance was better, but still somewhat a mystery. The 900P's in a striped pool yielded a mixed bag of results with results ranging from 1/4th of a drives performance (512b - 16kb) to almost 100% the performance of all 4 drives (64kb - 1MB) and then back down to 50% of all 4 drives performance (2MB - 64MB). All of this was at QD of 4. The P3520's had odd write > read performance under 32kb and about 1 drives worth of performance then at 64kb and up it started to come around on how it should look.
Right now I'm leaning towards going with Windows since it seems to yield more performance than FreeNAS, but I'm open to suggestions or if there are some pro tips for tuning FreeNAS/Windows to help with an all NVMe pool. Looking for any guidance!
So in typical fashion I've gotten myself way in over my head and come here asking for some help. The goal of this was to have an all NVMe storage solution that would be the data stores for all of my ESXi nodes.
Right now I'm sitting on a Supermicro 2028U-TN24R4T+ running two E5-2623V3's and 32GBs of Samsung DDR4 2400 RAM. I have four Intel P3520 1.2TB drives and four 900P 280GB drives.
Initially I was going to run this as a FreeNAS system and take the hit on performance, since, it was assumed that with this many NVMe drives, even if I took a 50% hit on performance I could still max out a 40Gbs connection. Well...not so much. The quote is the post from the FreeNAS forum where I was looking for some tips on NVMe pool tuning.
The tl:dr version of it is, I'm only getting 1 drives worth of performance (if that), no matter how I set up the pools.So here is the code and some of the results. This is with the 4 Intel 900Ps striped.
I had gstat open in another shell to monitor the drive usage. During the first write test the drives maxed out at about 75% usage, and CPU hit 80% with 1.4GB/s writes. The next test was the reads. Drives hit 60% usage and CPU hit 30% usage with 1.3 GB/s reads. Next write test was done with 1M block size. Drives hit 55% usage during the write test and CPU spiked to 55% then dropped down to 40% with 1.8GB/s writes. After that we have the 1M block size reads. Drives hit 50% usage and CPU was at 20% usage with 1.36GB/s reads.
root@freenas:~ # dd if=/dev/zero of=/mnt/test/tmp.dat bs=2048k count=80k
81920+0 records in
81920+0 records out
171798691840 bytes transferred in 120.296428 secs (1428127962 bytes/sec)
root@freenas:~ # dd if=/mnt/test/tmp.dat of=/dev/null bs=2048k count=80k
81920+0 records in
81920+0 records out
171798691840 bytes transferred in 131.082277 secs (1310617234 bytes/sec)
root@freenas:~ # dd if=/dev/zero of=/mnt/test/tmp.dat bs=1M count=40k
40960+0 records in
40960+0 records out
42949672960 bytes transferred in 23.600602 secs (1819854979 bytes/sec)
root@freenas:~ # dd if=/mnt/test/tmp.dat of=/dev/null bs=1M count=40k
40960+0 records in
40960+0 records out
42949672960 bytes transferred in 31.544821 secs (1361544365 bytes/sec)
Next up is the P3520. I didn't bother to do the 2048K block size since it seemed that the 1M block size worked better for this one. First test was writes which maxed at 40% drive usage 40% CPU usage and 1.95GB/s writes. Then did the read test and saw 95% drive usage with 10% CPU usage and 900MB/s reads.
root@freenas:~ # dd if=/dev/zero of=/mnt/test1/tmp.dat bs=1M count=40k
40960+0 records in
40960+0 records out
42949672960 bytes transferred in 21.942736 secs (1957352666 bytes/sec)
root@freenas:~ # dd if=/mnt/test1/tmp.dat of=/dev/null bs=1M count=40k
40960+0 records in
40960+0 records out
42949672960 bytes transferred in 47.276556 secs (908477220 bytes/sec)
And finally all 8 Drives striped together. CPU usage was never above 5-10% for either test. The write test saw all the drives hit around 20-30% usage and 1.9GB/s, while the read test saw the p3520's hit 90% usage while the 900p's were sitting at 15% and 1.4GB/s.
root@freenas:~ # dd if=/dev/zero of=/mnt/test/tmp.dat bs=1M count=50k
51200+0 records in
51200+0 records out
53687091200 bytes transferred in 28.401039 secs (1890321400 bytes/sec)
root@freenas:~ # dd if=/mnt/test/tmp.dat of=/dev/null bs=1M count=40k
40960+0 records in
40960+0 records out
42949672960 bytes transferred in 30.062220 secs (1428692634 bytes/sec)
So this is where I stand. The 900P's are capable of nearly 10GB/s reads and 8GB/s writes when striped, yet I'm barely seeing 20% of that. The P3520's are capable 6.4GB/s reads and 5.2GB/s writes when striped yet I'm seeing around 40% of that. Odd thing is the numbers are really close to each other no matter how I set up the drives.
So just for kicks I decided to do just a single 900P pool and see what the performance was. And guess what? It was exactly the same as if it was a striped pool! So it seems I'm only getting one drives performance out of a pool...No idea what gives about that.
root@freenas:~ # dd if=/dev/zero of=/mnt/test/tmp.dat bs=1M count=50k
51200+0 records in
51200+0 records out
53687091200 bytes transferred in 36.308151 secs (1478651213 bytes/sec)
root@freenas:~ # dd if=/mnt/test/tmp.dat of=/dev/null bs=1M count=40k
40960+0 records in
40960+0 records out
42949672960 bytes transferred in 32.836506 secs (1307985465 bytes/sec)
So I decided to try Windows' Storage Space. Local storage performance was better, but still somewhat a mystery. The 900P's in a striped pool yielded a mixed bag of results with results ranging from 1/4th of a drives performance (512b - 16kb) to almost 100% the performance of all 4 drives (64kb - 1MB) and then back down to 50% of all 4 drives performance (2MB - 64MB). All of this was at QD of 4. The P3520's had odd write > read performance under 32kb and about 1 drives worth of performance then at 64kb and up it started to come around on how it should look.
Right now I'm leaning towards going with Windows since it seems to yield more performance than FreeNAS, but I'm open to suggestions or if there are some pro tips for tuning FreeNAS/Windows to help with an all NVMe pool. Looking for any guidance!