3 ms·
The SATA protocol itself is rather outdated, for example, when using NCQ and if a single command gets an error (say, medium error) all the other pending command
by baruch 5y ago
The SATA protocol itself is rather outdated, for example, when using NCQ and if a single command gets an error (say, medium error) all the other pending commands are aborted and you need to resubmit them. That's quite a pain and a performance killer on top of the latency that the medium error itself induced into the process (to reach it there were multiple retries taking more than a second already).
Another advantage I can see is that the overhead to controlling NVMe is somewhat lower than SATA/AHCI, you can use kernel-bypass (like SPDK) to control many drives more efficiently than through the kernel interface, spending less time in the CPU when you control large number of drives from a single server. The HDD bandwidth is rather low so you can easily put a large number of bridges in there to increase the drive count.
- rektide 5y agoThere's a good chance SATA 3.5 spec (July 2020) may have provided options to avoid the single-failure issue, with the Defined Ordered NCQ Commands feature. But as you say, there's a ton of things that NVMe just does way better though. From the start, it had much more optimized/slimmer & less chatty protocols (mentioned), multiple queues, and much bigger possible queue depths. NVMe was a huge leap forward. And it continues to evolve really good capabilities. Prioritization, streams features, multi-zoned devices... there's so so so much better capabilities available on NVMe.