Academic researchers have designed a reference architecture SSD, with both NAND and persistent memory inside, for use in database logging and replication.
Such logging is desired for database recoverability and high availability. It requires an update to a local log file and also to one at a remote site for every transaction. If the primary database site goes down, the secondary one can serve as hot backup Persistent Memory, such as Optane or battery-backed DTAM. RDMA transfers are utilised by modern databases to accomplish this logging as fast as possible. The eight authors of a paper published in SIGMOD ’22, “X-SSD: A storage system with native support for database logging and replication”, think the current method is not portable, has a complex data path and low interoperability.
“To address these issues, this paper introduces the X-SSD, a new SSD architecture that mixes NAND Flash and PM memory classes. A X-SSD device can take transaction log writes on a fast, PM-backed data path and be responsible for propagating the operation to remote sites and eventually to NAND Flash storage.” In other words the PM and fast transfer operations are sent down stack to a specially designed SSD, called Villars, where they “offer a more straightforward and robust way to manage PM on behalf of the database and achieve equally fast results.”
The authors note: “Every DIMM slot used for PM is not used for DRAM. This forces the system designers to choose between DRAM or PM capacity. Optane and battery-backed DRAM require specific server support and cannot be ported across servers without certain characteristics. Optane, in particular, is not supported on AMD platforms.”
Their X-SSD design removes this limitation: “Moving PM into a X-SSD device frees DIMM slots for DRAM and restores the ability to deploy PM on vendor-independent server-class machines without special-purpose DIMM slots or battery-backing features. One can then use PM on an AMD server simply by plugging in this new NVMe device.” That’s a neat by-product of their ideas.
Because it is basically an NVMe device, two specific NVMe protocol features are used to craft the drive. Firstly a Controller Memory Buffer (CMB) exposes an internal memory area to applications via memory mapping. The X-SSD uses CMB to expose a second, byte-addressable data path, in addition to the conventional SSD block-based one.
A second NVMe feature, Persistent Memory Region (PMR), can expose another memory area and assumes the device persists the operations against that area. It has additional configuration options compared to the CMB memory area. The X-SSD also uses Non-Transparent Bridging (NTB) which supports interconnecting different hosts’ systems.
The X-SSD has a conventional side – using NAND – for normal block data transfer, and a fast side – using some form of persistent memory – for byte-level logging data transfers. Fast side writes can be acknowledged to the database application before being destaged to NAND.
The conclusion of the 15-page paper is that the authors “showed that the Villars device can absorb transaction log workloads from a modern database with several advantages – simpler interface, comparable latency, and clearer crash behavior semantics – over having the database directly manipulate PM (Persistent Memory).”
One of the paper’s authors is Yong Ho Song of Hanyang University & Samsung Electronics, which caused to us wonder if Samsung could actually produce an X-SSD. We think not, at least in the short-term, as there would be no speed advantage and low-level database code would need rewriting. Both attributes suggest that mass-production of an X-SSD is unlikely.
It’s an interesting idea though, and other scientists/engineers may use it as a base to do interesting things with SSD design.