You could check the SMART attibutes of the SSDs with something like@Dunuin thank you for your detailed explanation. Much appreciated.
Currently the Samsung SSD's have a wearout of 4 and 3 % after about a year of operation. Are there statistcs available on how many writes have been done in that time?
smartctl -a /dev/nvme0
. But what you are able to see there and what not depends on the manufacturer. So they might tell you how much data you tried to write to them over their lifetime (like "Data Units Written: 285,976,046 [146 TB]") but they might not show you how much actually was written to the NAND because of the internal write amplification.And I also always install the sysstat package (
apt install sysstat
). With that there is a iostat command that will low IO activity. If you run something like iostat 60 2
it will show you one statistic instantly and that statistic will how you statistics of all your drives collected since boot. If you wait 60 seconds for the command to finish it will show you similar statistics but this time they are just based on the last 60 seconds.ECC will be way slower compared to non ECC RAM. But using ECCs means your server isn't crashing that much and you can rely on it that your data is what it is supposed to be. If you compile the same code 1,000,000 times with ECC you would get 1,000,000 times the same binary. Do it without ECC and only 999,999 binaries might be the same and one of them is corrupted and will cause unexpected behavior when running that binary. But really useful it gets when your RAM is slowly dieing. Then maybe each 10th binary might be corrupted instead of each millionth binary and you are serching for bugs in that program but can't just find them...because the source code is absolutly fine and just the binary is corrupted.The workload up until this time has been (I'll edit the original post to reflect this) a few windows server 2019 VM's All but two configured for web development (Visual Studio, SQL Server, IIS). Developers log into the VM's using RDP and the actual stress comes from the compilation stages.
One other VM is for GPU number crunching like AI and BOINC. I thought having ECC memory here would benefit but I could be missing the point the more I think of it. One other VM will be for running a Digital Audio Workstation.
If you care about your data and you want to rely on it, that your data is always correct, you should go with ECC RAM even it will be slower.
Yes, it shouldn't matter for ZFS which slot you use as long as there is no HW raid and it can access each individual drive. ZFS is also no real raid that uses arrays with a fixed stripe width or something like that. It just distributes datablocks across multiple individual drives dynamically. So it can work like a raid10 but technically it isn't a raid.So if I add 2 more WD black ssds in the 2 remaining M.2 slots on the motherboard I can create an additional ZFS mirror and stripe it to the current one?
And if so then I could also add the remaining 2 WD black ssd's to the AIC Adaptor and create an extra mirror and stripe it again?
And if still better results buy 2 extra ssd's and mirror and stripe again.
If so then I am going to try that and I'd like to run performance tests after each step.
And yes, you can add pairs of drives later and stripe them so it gets one big pool. Just isn't that easy if that pool is also your boot pool.
Pveperf will only benchmark your boot pool and not other pools. "FSYNCS/SECOND: 281.94" is how much sync IOPS your boot pool can handle. All your SSDs will be terrible at handling sync writes because they all are missing the powerloss protection so don't expect good numbers there.currently I get
I am not sure why I am missing some stats in the output as when @udo ran in in this thread (https://forum.proxmox.com/threads/measure-pve-performance.3000/) he got this resultCode:pveperf /var/lib/vz CPU BOGOMIPS: 742451.20 REGEX/SECOND: 4016924 HD SIZE: 71.07 GB (rpool/ROOT/pve-1) FSYNCS/SECOND: 281.94
Code:pveperf /var/lib/vz CPU BOGOMIPS: 27293.47 REGEX/SECOND: 1101025 HD SIZE: 543.34 GB (/dev/mapper/pve-data) BUFFERED READS: 497.18 MB/sec AVERAGE SEEK TIME: 5.51 ms FSYNCS/SECOND: 5646.17
For random read/write you want to stripe them. So the more mirrors you stripe the better your random read/write should be.what would be more optimal in terms of random read/writes?
simply adding new nvme's to the mirror-0 or create extra sets of mirrors each containing 2 nvme's?
If you stripe different 1TB SSD models all other SSDs will be slowed down to the speed of the slowest SSD. So best would be not to mix different models.Also will it matter for either scenario if the nvme’s are not the same brand and model? They are the same size, in terms of what is marketed (1TB), though
Last edited: