Question about SAS HBA cards

I was looking into SATA expansion cards like this one.

I’ve seen suggestions online that going with a SAS HBA card would likely be better for multiple reasons. I know with SATA, the 6Gbps is shared between all of the ports. The articles I’ve looked at generally state “SAS offers higher throughout than SATA…”, but I can’t find specifically that if on a 6Gbps SAS card if the throughout is shared, or if every port can use that 6Gbps simultaneously?

I’ve noticed that the SAS cards seem to be at least PCIe 3.0 x4 whereas the majority of SATA cards are x1, even if they have a dozen ports.

This isn’t correct, although it can certainly appear that way, because…

… as you just pointed out, there are multiple potential bottlenecks. In addition to the nominal transfer rate of 6Gbps for SATA-III or 12Gbps for SAS on the front side of the controller, you’ve got a hard bottleneck defined by the number of (hopefully dedicated) PCIe lanes allocated on the back side of the controller interface.

A single PCIe v3 lane is good for a maximum of roughly 2GiB/sec–but that’s the full duplex rate, achieved only by adding full saturation on both the uplink pair and the downlink pair simultaneously. In other words, you can only read up to 1GiB/sec, and you can only write up to 1GiB/sec, but in theory you could do both simultaneously–if the downstream device supported that, that is. (NVMe does. SATA and SAS, for the most part, do not. It’s a bit more complicated than this, and has to do with the available parallelization of storage queues, but that’s pretty much how it works out in the end.)

So, you’ve got a back-end bottleneck of just under 1GiB/sec for a SATA controller, regardless of the number of ports on it… which won’t get you much north of about 750MiB/sec, which looks similar enough to the 6Gbps == ~~750MiB/sec theoretical maximum on a single SATA channel that one might be excused for thinking that the SATA controller is “sharing the 6Gbps across all ports” rather than having a full 6Gbps link between each controller port and its attached device, although being limited by the back end between the controller and the bus, not the front end between controller and devices!

Yep, if you need more than around 750MiB/sec total throughput, and if and only if your SAS controller actually offers more than one PCIe lane.

If you can find a PCIe x1 SATA controller that supports the full throughput of PCIe v5 instead of PCIe v3, you can get a theoretical maximum of 4GiB/sec out of it, just like you can get a theoretical maximum (I’ve seen about 80% of this in real world workloads) of the same 4GiB/sec out of an LSI 9300-8i, which is PCIe v3 x4.

The challenge here is that everything needs to support the higher version of PCIe. Just because you’ve got a PCIev5 motherboard doesn’t mean you get additional PCIe bandwidth out of a PCIe v3 controller plugged into it!

Thank you for the explanation. It makes sense now. I think for my needs, the 6-port version of the card I linked to above should do. I’ve also had my eye on the 9300-8i. Many people say it’ll be more reliable than the ASMedia controller. The SFF cables might be better for cable management as well.

1 Like