Last Week on My Mac: Drag racing SSDs

I once cherished occasional rides in the second-fastest E-type Jaguar in the UK. My friend Ken, who took it to drag races each weekend, worked hard to maximise performance from its huge petrol engine. In the dead of night, when no one was around, he used to time its acceleration from 80 to 120 miles per hour (130-190 km/hour). On public roads.

His benchmark was based on what was, to him, the critical point of his drag start, where he won or lost. When we’re discussing performance of M1 Macs, that’s the sort of measurement that we need. When it comes to assessing Apple’s internal SSDs, this is a serious business too: Apple currently charges the user around £/$/€ 400 per TB of SSD, and £/$/€ 200 for additional memory to take an M1 from 8 to 16 GB. Even if cost is no obstacle, before you commit any money you need to know whether the current maximum of 16 GB of RAM is sufficient.

Car analogies with computers fail in the end, but one common essential in both these benchmark tests is that we know exactly what we’re talking about. Ken used a long, flat and straight section of country road for his testing, which was very similar to a dragstrip. No matter where we look for SSD performance benchmarks, details of the tests performed seem rather ill-defined, and none appears to bear much resemblance to the real world.

As with most other processes in life, the rate at which data can be transferred either way between main memory and the storage blocks in an SSD is restricted by a rate-limiting step. One way of envisaging this is the hydraulic model: a large pool of water is at the top of an even incline, with an empty lake at the bottom. Connecting them are sections of pipe, whose diameter determines the rate of flow through that section. The pipe which determines the overall rate of transfer is thus the section with the smallest bore. Water won’t reach the lake at the bottom any faster than it can flow through the narrowest of the pipes on the way.

It transpires from tear-downs that current M1 Macs don’t contain conventional SSDs as we might know them, but bare flash memory which is controlled by the M1 SoC, much in the way that the T2 SoC is the internal disk controller in modern Intel Macs. One potential trick would be to map that flash memory storage into the M1’s Unified Memory Architecture, something not possible with an Intel Mac. Although that’s feasible, Apple didn’t mention it in its presentation of the M1 architecture at WWDC this year, so I suspect that it’s not currently implemented.

Writing to SSDs is more complex and open to variation. As the write process itself is likely to be the slowest step, tricks are commonly used to make that appear faster than it really is. Placing cache memory between main memory and the SSD can make smaller writes appear considerably faster, as they appear to complete once the data has been written to the cache, leaving the slower SSD writing from the contents of the cache. One way to detect that in a benchmark is to very the size of the data to be written: once that exceeds the size of the cache, there should be a marked reduction in performance. If an M1 Mac were to use its Unified Memory as the cache, that could require writes of greater than 12 GB before it became noticeable.

Reading from an SSD into main memory should be much simpler, and there aren’t as many tricks to be pulled. Unless access to main memory is slower than reading from the SSD, there’s no value in using a cache, which will actually slow the whole process down. So read rates from SSDs being controlled by a T2 or M1 should be broadly similar.

I’ve now looked at three of the packaged benchmarks available, and there’s not even a consensus between them. Blackmagic Disk Speed Test reports the M1 SSD having a read rate of around 2.7 GB/s which seems consistent across many different M1 Macs and users. ATTO Disk Benchmark claims read speeds are highly dependent on the size of the test, and could be anything up to 10 or even 20 GB/s. I just added AmorphousDiskMark to my collection, thanks to a recommendation by checknickelson, which reports sequential reads of 2.5 to 3.3 GB/s, falling as low as 0.08 GB/s in “random sequences”. Although these are slightly faster than those obtained from a T2 Mac, differences aren’t consistent.

My own tentative exploration of reading from an SSD shows that speeds attained are far from similar between 10 MB and 10 GB, which is more consistent with the odd results from the ATTO test. There’s clearly something I don’t understand here, so it’s time to investigate further. If there’s any interest, I’m happy to make my own utility available for others to try. It won’t be as exhilarating as riding in an E-type Jaguar at well over 100 miles an hour, but hopefully a great deal safer and perfectly legal.