It pays to be a winner: How a fast SSD can slow others down

One good reason to use a Thunderbolt hub is that you have too many SSDs for the ports on your Mac. So what happens when you connect two fast TB3 SSDs to your hub, and your Mac tries to write to or read from both simultaneously?

As TB ports have been in short supply since they first started appearing on our Macs, and hubs are relatively recent, there’s limited information about what happens with simultaneous access to fast TB3 disks. There is, though, the basic principle that the total transfer rate to devices connected to a hub can’t exceed the capacity of the hub’s connection to the host computer. Thus, over a single TB4 connection of 3 GB/s data transfer rate, the total transfer rates of all data devices connected to that hub also can’t exceed 3 GB/s. So with two SSDs writing or reading at once, each is likely to get 1.5 GB/s, and the two added together shouldn’t exceed 3.0 GB/s.

Is that borne out by measurements, though?

Methods

To assess this, I used the same techniques as detailed yesterday, with a significant variation: here I only use Stibium’s random read and write tests. The number of tests was adjusted for each SSD so two would run simultaneously, with each set running in a separate instance of the Stibium app. With a little practice, the two tests could be run at the same time, and each complete close to the other. Using random reads and writes, the two concurrent tests would be most unlikely to reach any kind of synchrony, but the great majority of their running time should occur concurrently.

Single sets of measurements of read and write speeds were made for each of the three SSDs when connected direct to the Mac, and through the hubs as the only active device. Simultaneous tests were run in two different setups: with one external SSD connected direct and reading/writing at the same time as the internal SSD, and in two external SSDs both connected to the same hub.

The number of reads/writes was adjusted for each test to try to ensure that simultaneous measurements were started within 2 seconds of one another, and completed at close to the same time, ensuring that the majority of reads/writes in that test were made while both SSDs were reading/writing simultaneously. Total numbers of reads/writes used in each test run were 50 and 100, depending on the expected speed of the test on that SSD.

Overall Results

These are summarised in the table, where each cell gives first the read, then the write speed, in GB/s.

hubssdmultitests1

Bold results are those that depart most significantly from solo performance when connected direct to the Mac.

I have already discussed the throttling of write speeds seen in disks A and B when connected to the hub, and the fact that this doesn’t apply to all TB3 SSDs, and isn’t reflected in read performance.

As expected, both read and write performance were limited when both SSDs were connected to a hub and transferring data simultaneously. This resulted in a small additional reduction in write speeds on disks A and B, and a fairly uniform reduction in read performance across all three SSDs.

Faster SSDs steal bandwidth from slower ones

Results for simultaneous write measurements were complicated by the contrasting performance of disk C. When tested in combination with either disk A or B, disk C stole much of the bandwidth available and wrote at only slightly reduced speed (compared to writing solo). As a result, write speeds of disks A and B were further reduced, typically halving to 0.8 GB/s, until disk C had completed its writes. This is shown in the graph below, where measurements from Disk C are marked as circles, and those for Disk A as asterisks *.

hubwritespeedsteal1

For the first 25 seconds of this test, Disk C, already the faster of the two, sustained a write speed of almost 2.5 GB/s, while Disk A only managed about 0.8 GB/s. This allowed Disk C to complete its tests first, and a few seconds later write speed of Disk A returned to 1.5 GB/s.

During the 19 seconds that both disks were performing writes, Disk C wrote a total of 46.7 GB, and Disk A only 14.1 GB. Thus the total transfer to both disks over that period was 60.8 GB, representing average write speeds of 2.5 GB/s for Disk C and 0.75 GB/s for Disk A, and an overall transfer rate to both disks of 3.2 GB/s. That’s slightly more than the generally assumed maximum of 3 GB/s for TB3. Surprisingly, the time interval between completion of Disk C’s writes and increase in Disk A’s speed was about 4 seconds.

This demonstrates how write speed to a faster SSD may be maintained at the cost of reduced speed to a slower SSD, something entirely unexpected.

It pays to be a winner

When I undertook my Commando training, to be awarded the Green Beret, our training team enjoyed playing this game with us. They’d find a short steep hill, and launch us sprinting as fast as we could to its top. The first few to finish were taken out and didn’t have to take part any more, while the rest had to walk down to the bottom, ready to be told to sprint back up again. This process repeated until just a few exhausted trainees remained, who had sprinted up so many times they could barely walk.

Just as it then paid to be a winner, so it pays an SSD to be fastest when connected to a TB4 hub.

Read throttling?

I don’t usually measure SSD performance using the random read/write option in Stibium, instead preferring a more efficient test that doesn’t perform so many larger transfers. When analysing these results, I came across an interesting phenomenon that I’ve not seen reported elsewhere, in which read speeds of larger files become throttled, both on the internal SSD in a Mac Studio M1 Max, and in Disk C when connected direct to a TB4 port on the Mac. These are shown in the following two graphs.

hubintextwritespeedsbysize

The first shows measured write speeds for the internal SSD in circles, and Disk C with asterisks *, for the size of each file written during a test sequence of 50 or 100 random sizes evenly distributed from 2 MB to 2 GB. As usual, smaller files show lower speeds, and there’s substantial scatter in write speeds for the internal SSD. However, both quickly level out at around 7 GB/s for the internal, and 2.8 GB/s for the external SSD.

hubintextreadspeedsbysize

The equivalent graph for read speeds is similar up to a file size of 550 MB, where it falls sharply for both SSDs. The internal SSD drops from about 6.7 to 5.2 GB/s, and the external from 2.9 to 2.5 GB/s. I don’t have an explanation for this apparent throttling, but it could account for some of the disparities seen when using other benchmark tests on SSDs.

Conclusions

  • Simultaneous read and write performance of full-speed TB3 SSDs is maintained when connected direct to a Mac.
  • Simultaneous read performance of full-speed TB3 SSDs connected to a hub is constrained to that of the single port the hub is connected to, as expected.
  • Simultaneous write performance of full-speed TB3 SSDs connected to a hub may not be evenly allocated, and can prefer the faster of two, further reducing the write speed of the slower.
  • If performance of SSDs connected to a TB4 hub is critical, select SSDs of similar performance. Slower drives may get even slower when simultaneous writes occur.
  • Maximum transfer speed over a single TB3 port might be as high as 3.2 GB/s, as sustained here over a period of almost 20 seconds.
  • Predicting performance for multiple SSDs isn’t simple. More testing is required to understand when it pays to be a winner.