PCIe cards we use and have used in our servers

December 7, 2024

In a comment on my entry on how common (desktop) motherboards are supporting more M.2 NVMe slots but fewer PCIe cards, jmassey was curious about what PCIe cards we needed and used. This is a good and interesting question, especially since some number of our 'servers' are actually built using desktop motherboards for various reasons (for example, a certain number of the GPU nodes in our SLURM cluster, and some of our older compute servers, which we put together ourselves using early generation AMD Threadrippers and desktop motherboards for them).

Today, we have three dominant patterns of PCIe cards. Our SLURM GPU nodes obviously have a GPU card (x16 PCIe lanes) and we've added a single port 10G-T card (which I believe are all PCIe x4) so they can pull data from our fileservers as fast as possible. Most of our firewalls have an extra dual-port 10G card (mostly 10G-T but a few use SFPs). And a number of machines have dual-port 1G cards because they need to be on more networks; our current stock of these cards are physically x4 PCIe, although I haven't looked to see if they use all the lanes.

(We also have single-port 1G cards lying around that sometimes get used in various machines; these are x1 cards. The dual-port 10G cards are probably some mix of x4 and x8, since online checks say they come in both varieties. We have and use a few quad-port 1G cards for semi-exotic situations, but I'm not sure how many PCIe lanes they want, physically or otherwise. In theory they could reasonably be x4, since a single 1G is fine at x1.)

In the past, one generation of our fileserver setup had some machines that needed to use PCIe SAS controller in order to be able to talk to all of the drives in their chassis, and I believe these cards were PCIe x8; these machines also used a dual 10G-T card. The current generation handles all of their drives through motherboard controllers, but we might need to move back to cards in future hardware configurations (depending on what the available server motherboards handle on the motherboard). The good news, for fileservers, is that modern server motherboards increasingly have at least one onboard 10G port. But in a worst case situation, a large fileserver might need two SAS controller cards and a 10G card.

It's possible that we'll want to add NVMe drives to some servers (parts of our backup system may be limited by SATA write and read speeds today). Since I don't believe any of our current servers support PCIe bifurcation, this would require one or two PCIe x4 cards and slots (two if we want to mirror this fast storage, one if we decide we don't care). Such a server would likely also want 10G; if it didn't have a motherboard 10G port, that would require another x4 card (or possibly a dual-port 10G card at x8).

The good news for us is that servers tend to make all of their available slots be physically large (generally large enough for x8 cards, and maybe even x16 these days), so you can fit in all these cards even if some of them don't get all the PCIe lanes they'd like. And modern server CPUs are also coming with more and more PCIe lanes, so probably we can actually drive many of those slots at their full width.

(I was going to say that modern server motherboards mostly don't design in M.2 slots that reduce the available PCIe lanes, but that seems to depend on what vendor you look at. A random sampling of Supermicro server motherboards suggests that two M.2 slots are not uncommon, while our Dell R350s have none.)


Comments on this page:

By jmassey at 2024-12-08 11:29:48:

Our SLURM GPU nodes obviously have a GPU card

It seems obvious enough, but also a little weird when I think about it. The GPU is basically a second computer, with its own RAM and a set of processors (and a proprietary operating system), connected over PCIe. I wonder if it'll disappear like floating-point accelerators did.

The PCIe link must be adding a huge amount of latency compared to normal inter-core communication, and the card format adds complexities related to power supply and cooling. One reason we no longer see 7-PCI-slot boards is because a 16-lane slot usually has an adjacent slot reserved for GPU fan exhaust; high-end cards may extend partially or fully above a third slot. Luckily, they leave room for flat M.2 slots underneath.

In theory [quad-1G cards] could reasonably be x4, since a single 1G is fine at x1.

That would depend a lot on the PCIe generation. My newest system has 3.0, which is about 7,800 Gbit/s per lane; even the previous generation could've done quad-1G with one lane. PCIe 6.0, introduced in 2022, can do 60,000 Gbit/s per lane, and next year's 7.0 will double that—which could give us 4-lane quad-100Gbe cards, without any over-provisioning.

There are also huge differences in lane counts, depending on CPU and socket types. Desktop processors have maybe 32 at the high end; the Xeon Silver 4108 mentioned in your linked post appears to have 48; and the new AMD Epyc chips get up to 160. It's common for some of the lanes to be one generation behind the others.

By the way, open-ended PCIe slots exist on some boards, allowing arbitrarily-long cards to be connected with a reduced number of lanes. They're not all that common, but people have been known to create them by mechanically removing the plastic end—which does work, provided the over-long card doesn't short anything out.

Written on 07 December 2024.
« Common motherboards are supporting more and more M.2 NVMe drive slots
Unix's buffered IO in assembly and in C »

Page tools: View Source, View Normal.
Search:
Login: Password:

Last modified: Sat Dec 7 22:00:00 2024
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.