How to check HBA Performance?

Hello Guys,

Is there anyway I can check the throughput/performance of my LSI 9400-16 for all the drives connected to it. In short, checking read/write speed for each drive connected to the HBA Card.

I guess you could do a comparison between the HBA & the motherbaord ports by writing files to a single disk when connected one way & comparing it to the other way.

Solnet-test-array should do the read part.

But, not for the fist time, you’re overthinking it… “HBA performance” is bottlenecked by the speed of spinning rust.

1 Like

In this video:
https://www.youtube.com/watch?v=MlwStnNTccg

The YouTuber “The Art of Server” benchmarks several HBAs (including the LSI 9400-16i) mainly focusing on power consumption and efficiency under load.
As a side effect of this power consumption tests, I/O and throughput measurements are also obtained.

From the results, it seems clear that a 9400-16i in a PCIe 3.0 x8 slot would not be meaningfully stressed by 16 HDDs, even fast ones. The combined throughput of 3–4 GB/s would stay well below PCIe 3.0 x8 limits.

Even in lower bandwidth configurations (like PCIe 3.0 x4 or PCIe 2.0 x8), the controller can still work for HDD setups, but it would be “tighter”, especially under mixed workloads.

2 Likes

That’s not something i wanted to do. But more if the HBA is performing normally and giving 6Gbps per port the disk is connected to.

1 Like

That i know but i basically wanted to check if all my drives speed (individually) to see if they’re all doing 6Gbps connectivity and then total aggregate throughput.

During boot dmesg would report the link speed to each drive (so you can confirm it is 6 gig), I’m sure some creative grep could get you what confirmation.

It’d also notify if link drops down in speed after the fact (in fact that may be an alarm).

Yes, verified and all disks reports 6Gbps

No current spinning disk will deliver 6 Gbit/s of throughput, not even when reading data.

For example the sustained read rate of the popular WD Red Plus drives is around 200 MB/s give or take.

That’s why the “HBA performance” is most probably none of your concerns.

1 Like

i would try fio

That is understood.

Can you explain please?

FIO is a Linux command-line tool to benchmark storage (throughput, IOPS, latency) on drives, filesystems or whole pools.

You can test single drives or run workloads in parallel. If you run it against raw devices (/dev/sdX), write tests can be destructive, so be careful on systems with existing data (like ZFS/TrueNAS pools). In that case it’s safer to run it against a dataset/file instead.

You could then monitor the load in real time with tools like iostat or zpool iostat -v while fio is running.

Just keep in mind what you are actually measuring: it’s neither the theoretical max performance of the HBA nor the PCIe 3.0 x8 link nor a pure single-drive maximum, but the real-world throughput of the system as it is currently configured.

It’s powerful, but you need to be clear about what exactly you’re testing and where the I/O is going.

As always: use at your own risk and make sure you fully understand the test parameters and the impact on your storage system before running any benchmarks, especially write tests.
Maybe have a look first on the documentation: https://fio.readthedocs.io and / or the manual page (man fio ).

Or use solnet-test-array…

Just wondering, you experiencing any degradation or just curious? I’ve never considered the HBA to add any additional latency vs direction connection to motherboard. I could even imagine a possible situation where the motherboard has the controller through a chipset vs an hba on pcie lanes directly to cpu where the hba could outperform (overloaded chipset io) - but even that is stretching things.