Skip to content

Storage and infrastructure: throughput, IOPS and latency measured through the fabric, not over a patch cable

We test the network side of storage: NAS and SAN over Ethernet with NFS, SMB, iSCSI and NVMe/TCP, NVMe-oF over RoCEv2 on lossless Ethernet, S3-compatible object storage such as RustFS, hyperconverged clusters under node failure, backup and replication windows over an impaired WAN, and the top-of-rack switch that carries all of it next to the application traffic. Ports at 1G, 10G and 100G in CloudLAB, 25G as breakout from 100G; your array, your hosts or your virtual appliance in the rack or on the lab hypervisor.

Throughput against queue depth, through the ToR NVMe/TCP array, 100G, application mix on the same ports. Same hosts before and after tuning the switch.
0612 READ THROUGHPUT, GB/S 148163264 QUEUE DEPTH PER HOST datasheet 11 GB/s 6.8 GB/s, 0.3 % loss 10.4 GB/s, no loss Delivered ToR config Tuned ToR, day 6
  • 1G · 10G · 100Gports for hosts, arrays and the ToR
  • NVMe/TCP · RoCEv2 · S3 · NFSprotocols driven from the bench hosts
  • From 2 weeksfor a run
  • 1–3 daystest plan and quote

When the number is needed

Three moments in a storage project when the datasheet stops being an answer

A datasheet gives the throughput of an array on a direct cable with one block size. Each moment below asks what the array, the hosts and the switch between them do with your block sizes, your mix and your failures, and ends with a number in a report.

  1. 1

    Shortlist

    Array or HCI tender, 2–3 candidates

    Every candidate takes the same I/O profile from the same hosts through the same switch: block sizes, read and write mix, queue depth, protocol. Vendors see the plan before the first I/O and the raw results after the last one.

    Ranked table per KPI, ceiling per model, 3–4 weeks for 3 systems

  2. 2

    Acceptance

    Before the migration

    The delivered array, the planned ToR pair and your host profile with the production config: MTU, PFC and ECN per queue, multipathing, NIC offloads, bonding. Measured against the design, with node, link and path failures during the run.

    Signed report with pass and fail per case, config exports, from 2 weeks

  3. 3

    Change

    Firmware, NIC driver or fabric change

    The acceptance cases run again on the new array firmware, the new NIC driver, the new switch release or the changed QoS map. What moved, by how much, and whether the backup window still closes before the morning.

    Diff per KPI against the last run, 3 business days

What we test

Five device classes, and the numbers each one has to show

The hosts, the switch and the I/O profile stay the same across the row; the pass criteria do not. The table is the starting point of the plan; your workload and your design set the thresholds.

Device classNumbers in the reportTraffic and config on the benchTypical size
01NAS and SAN array with an Ethernet front end Throughput and IOPS per block size and queue depth, latency p50 and p99, controller failover Bench hosts drive your I/O profile through the ToR pair, app mix on the same ports, multipathing 2–8 front-end ports, 25G and 100G
02NVMe-oF target and initiator pair over RoCEv2 or TCP Throughput and IOPS at 4 kB to 1 MB, latency per queue, pause time and ECN marks per port Initiators on bench hosts, PFC and ECN on the storage queue, incast on one target, a link failed 100G ports, 8–32 initiators
03Hyperconverged and S3 object storage cluster S3 PUT and GET throughput and latency per object size, rebuild time on node loss, east-west traffic Nodes in the rack or on the lab hypervisor, VMs or S3 clients, objects 1 kB to 128 MB, GET, PUT and mixed 3–8 nodes, 25G uplinks
04Top-of-rack or leaf switch carrying storage Loss and pause per queue with storage and app traffic, buffer headroom on incast, uplink failover Storage flows and the app mix at line rate, your QoS, PFC and ECN config, RFC 2544 baseline 32–64 ports, 25G and 100G
05Backup server and WAN link Backup and replication window over your WAN profile, throughput per stream, restore time of a sample WAN emulator with your delay and loss, the backup product on the bench, jobs at peak and on failover 1G to 10G WAN, 10 to 200 TB sets

Any vendor, physical or virtual, including software-defined storage on bench hosts. Named test tools are picked for the setup and listed in the report. Backup and VoIP products we also integrate and support in client networks after the test.

The bench around one array and its ToR pair
Load hosts your block sizes, QD, mix Generator ports app mix, 10G to 100G ToR-1 · PFC, ECNToR-2 · PFC, ECN ToR pair under test your QoS map, PFC, ECN, MTU Array, targets NVMe/TCP, RoCEv2, S3 Config, counters pause, ECN marks, drops LINK, NODE OR PATH DOWN ON PURPOSE throughput · IOPS latency p99 · loss

Around the array

What sits on each side of the switch while the storage is measured

An IOPS number only means something with the right things around the array: the hosts that will drive it, the switch and the queues it will cross, and the failures it has to survive with I/O running

  1. Lossless where it has to be

    PFC per queue, ECN thresholds, DCBX, MTU 9000 and the QoS map from your export. The bench counts pause frames, ECN marks and drops per port, so a slow array can be told apart from a switch that pauses the whole link.

  2. Your block sizes, queue depths and object sizes

    4 kB random, 64 kB and 1 MB sequential, the read and write mix and the queue depth from your workload statistics, driven from as many hosts as your design has. For object storage: GET, PUT and mixed with object sizes from 1 kB to 128 MB, distributed clients, latency percentiles. Not one stream from one laptop.

  3. Failures with I/O running

    Node loss, uplink loss, NIC port failover, controller and path failover, a backup job started during peak. Each one timed from the last completed I/O to the first one back, with latency recorded through the event.

Typical scenario

An NVMe/TCP array rated at 11 GB/s, 6.8 GB/s through the customer's ToR, and the queue counter that explained it

An integrator brings a new array and the planned ToR pair for acceptance before a migration. On a direct cable the array shows the datasheet figure. Through the ToR with the delivered config and the application mix on the same 100G ports it gives 6.8 GB/s with 0.3 % loss: no PFC on the storage queue, ECN off, incast from 16 hosts into one port. With PFC on that queue, ECN thresholds set and storage in its own class, 10.4 GB/s and no loss, with the pause frames and the ECN marks counted per port.

6.8 → 10.4 GB/s
sequential read through the ToR, 16 hosts, QD 32
0.3 % → 0
frame loss at 100G with the application mix
9 days
from the first I/O to the signed report

Composite scenario from projects of this type. Numbers are realistic and not from one client.

Read throughput through the ToR, GB/s
Direct cable Delivered ToR config Tuned ToR, day 6 11.0 6.8 10.4 Design 10 036912 below the design clears the design

What you take away

Four numbers that end the argument, and the table they live in

The report is built for the meeting after the test: the array vendor, the switch vendor, the integrator and your platform team read the same table, with the pass band from the design next to the measured value

Each number comes with its evidence: host-side I/O statistics, per-queue counters from the switch, array counters, captures and the config export of the run

Throughput
Per block size, queue depth and protocol, through the switch with the application mix running. Not the direct-cable figure from the datasheet.
Latency
p50 and p99 per block size under load, and the same numbers through a node loss, a path failover and a backup job, so the design has a ceiling with a margin
Lossless
Pause time, ECN marks and drops per queue and port, and the incast level at which the storage queue backs up into the rest of the fabric
Windows
Backup, replication and rebuild time for your data set over your WAN profile, before and after a failover, with the config lines behind each missed window
ACC-STO-02 Acceptance, NVMe/TCP array and ToR pair Rerun, day 6

Result table, 6 of 14 cases

KPIPass bandMeasuredResult
Sequential read, 1 MB, QD 32, 16 hosts≥ 10 GB/s10.4 GB/sPass
Random read, 4 kB, QD 64, IOPS≥ 1.5M1.7MPass
Latency p99, 4 kB random, QD 64≤ 300 µs240 µsPass
Frame loss at 100G with the application mix00Pass
Controller failover, I/O stall≤ 5 s2.4 sPass
Backup window, 20 TB over 10G WAN, 30 ms RTT≤ 9 h8.6 hPass with a note

Where it runs

The CloudLAB bench, and the pages behind this one

Arrays and switches ship to CloudLAB or we connect the bench to your lab; virtual appliances and software-defined storage run on the bench hypervisor, and you watch the run through the portal. The bench has 1G, 10G and 100G ports, 25G as breakout from 100G, 100G ports for RoCEv2 agreed per setup, WAN emulators per link, rack space and VMs for your systems, KVM and serial on every unit, and a TEST4NET engineer on every session.

Before the brief

What platform teams ask first

Which storage systems can you test?

Any vendor with an Ethernet front end: NAS and SAN arrays over NFS, SMB, iSCSI and NVMe/TCP, NVMe-oF targets over RoCEv2, S3-compatible object storage such as RustFS, hyperconverged clusters, software-defined storage on bench hosts, backup servers and their WAN. The bench is Ethernet.

Do you need our data or our hosts?

No data. The I/O profile comes from your workload statistics: block sizes, read and write mix, queue depth, host count, object sizes for S3. Bench hosts drive it; your own servers can sit in the rack instead if the NIC, the driver or the bonding is part of the question. A data-warehouse workload modelled on TPC-DS, on a query engine over S3, is agreed per project and reported as our own run, not as a TPC result. Configs come as anonymised exports.

What about RoCE and lossless Ethernet?

PFC, ECN and DCBX are tested per queue on the switch under test, with pause time and marks counted per port and incast driven from 8 to 32 initiators. For a leaf-spine fabric carrying RDMA at scale see the AI fabric and RoCEv2 page; the storage page covers the array, its targets and the ToR in front of them.

Can you measure our backup window over the WAN?

Yes. A WAN emulator sits on the link with your delay, jitter and loss, the backup product and its agents run on the bench, and the job is timed for a sample set and extrapolated to yours. The same run repeats after a link failover and during peak application traffic.

Do you ship the array back?

Yes. Arrays, nodes and switches go into the CloudLAB rack with KVM and console access and return after the run, or stay cabled for the next firmware under a hosted plan. For a system that is already racked we connect the bench to your lab over a dedicated link.

How long does it take and what do we get?

Test plan and quote in 1–3 business days after the brief. A run takes from 2 weeks for one array or one cluster and 3–4 weeks for a shortlist of 3 systems. The report has every case with its pass band, the measured value, per-queue counters, captures and config exports, plus a one-page summary for the steering meeting.

Send the array model, the host count and the switch plan. The plan comes back in 1–3 business days.

No prices on the site: scope first, then the quote. The array vendor and the integrator can sit in on the brief.

Send the shortlist

You have the method. Now get the numbers.

Name the models and the KPIs that matter. An engineer replies within one business day with a test plan draft and a quote.

Prefer to chat? Message an engineer on WhatsApp

We use what you send only to answer you. See our Privacy Policy.