• 6 Posts
  • 31 Comments
Joined 1 year ago
cake
Cake day: June 4th, 2023

help-circle



  • B350 isn’t a very fast chipset to begin with

    For sure.

    I’m willing to bet the CPU in such a motherboard isn’t exactly current-gen either.

    Reasonable bet, but it’s a Ryzen 9 5950X with 64GB of RAM. I’m pretty proud of how far I’ve managed to stretch this board. 😆 At this point I’m waiting for blown caps, but the case temp is pretty low so it may end up trucking along for surprisingly long time.

    Are you sure you’re even running at PCIe 3.0 speeds too?

    So given the CPU, it should be PCIe 3.0, but that doesn’t remove any of the queues/scheduling suspicions for the chipset.

    I’m now replicating data out of this pool and the read load looks perfectly balanced. Bandwidth’s fine too. I think I have no choice but to benchmark the disks individually outside of ZFS once I’m done with this operation in order to figure out whether any show problems. If not, they’ll go in the spares bin.


  • I put the low IOPS disk in a good USB 3 enclosure, hooked to an on-CPU USB controller. Now things are flipped:

                                            capacity     operations     bandwidth 
    pool                                  alloc   free   read  write   read  write
    ------------------------------------  -----  -----  -----  -----  -----  -----
    storage-volume-backup                 12.6T  3.74T      0    563      0   293M
      mirror-0                            12.6T  3.74T      0    563      0   293M
        wwn-0x5000c500e8736faf                -      -      0    406      0   146M
        wwn-0x5000c500e8737337                -      -      0    156      0   146M
    

    You might be right about the link problem.

    Looking at the B350 diagram, the whole chipset is hooked via PCIe 3.0 x4 link to the CPU. The other pool (the source) is hooked via USB controller on the chipset. The SATA controller is also on the chipset so it also shares the chipset-CPU link. I’m pretty sure I’m also using all the PCIe links the chipset provides for SSDs. So that’s 4GB/s total for the whole chipset. Now I’m probably not saturating the whole link, in this particular workload, but perhaps there’s might be another related bottleneck.


  • Turns out the on-CPU SATA controller isn’t available when the NVMe slot is used. 🫢 Swapped SATA ports, no diff. Put the low IOPS disk in a good USB 3 enclosure, hooked to an on-CPU USB controller. Now things are flipped:

                                            capacity     operations     bandwidth 
    pool                                  alloc   free   read  write   read  write
    ------------------------------------  -----  -----  -----  -----  -----  -----
    storage-volume-backup                 12.6T  3.74T      0    563      0   293M
      mirror-0                            12.6T  3.74T      0    563      0   293M
        wwn-0x5000c500e8736faf                -      -      0    406      0   146M
        wwn-0x5000c500e8737337                -      -      0    156      0   146M
    




    • Lenovo ThinkCentre / Dell OptiPlex USFF machine like the M710q.
    • Secondary NVMe or SATA SSD for a RAID1 mirror
      • Use LVMRAID for this. It uses mdraid underneath but it’s easier to manage
    • External USB disks for storage
      • WD Elements generally work well when well ventilated
      • OWC Mercury Elite Pro Quad has a very well implemented USB path and has been problem-free in my testing
    • Debian / Ubuntu LTS
    • ZFS for the disk storage
    • Backups may require a second copy or similar of this setup so keep that in mind when thinking about the storage space and cost

    Here’s a visual inspiration:









  • I’ve been on the USB train since 2019.

    You’re exactly right, you gotta get devices with good USB-to-SATA chipsets, and you gotta keep them cool.

    I’ve been using a mix of WD Elements, WD MyBook and StarTech/Vantec enclosures (ASM1351). I’ve had to cool all the chipsets on WD because they like bolt the PCBs straight to the drive so it heats up from it.

    From all my testing I’ve discovered that:

    • ASM1351 and ASM235CM are generally problem-free, but the former needs passive cooling if close to a disk. A small heatsink adhered with standard double-sided heat conductive tape is good enough.
    • Host controllers matter too. Intel is generally problem-free. So is VIA. AMD has some issues on the CPU side on some models which are still not fully solved.

    I like this box in particular because it uses a very straightforward design. It’s got 4x ASM235CM with cooling connected to a VIA hub. It’s got a built-in power supply, fan, it even comes with good cables. It fixes a lot of the system variables to known good values. You’re left with connecting it to a good USB host controller.

    WD PCB on disk




  • Thanks for the warning ⚠️🙏

    This isn’t my first rodeo with ZFS on USB. I’ve been running USB for a few years now. Recently I ran this particular box through a battery of tests and I’m reasonably confident that with my particular set of hardware it’ll be fine. It passed everything I threw at it, once connected to a good port on my machine. But you’re generally right and as you can see I discussed that in the testing thread, and I encountered some issues that I managed to solve. If you think I’ve missed something specific - let me know! 😊