Abstract
Persistent memory (PMEM) is a fast-to-access non-volatile memory device by itself. To get the best out of it, however, we need to modify software design as PMEM-aware. In this presentation, I will talk about my case study to improve the transaction processing performance of PostgreSQL, an open-source database management system (DBMS). I redesigned a typical two-level transaction logging architecture that had consisted of DRAM and persistent disk like HDD or SSD, into a single-level one on PMEM. Database researchers and engineers have optimized logging architectures, assuming that persistent disk has been slower than main memory and not good at random access. Therefore, a DBMS has buffered and serialized logs on DRAM then output them sequentially to disk. Such a two-level architecture has improved performance. However, using PMEM instead of disk in the two-level architecture, I got worse performance than the single-level one due to overhead. This is because PMEM is as fast as DRAM and is better at random access than disk. To clarify that, I will present differences between the designs of the two logging architectures and their performance profiling results. I also tried to redesign some other architectures but gave them up because there seemed to be limited or little chance to improve performance by fixing them. Those histories will lead us to know what characteristics are suitable for PMEM and what components are worth being changed as PMEM-aware.
Learning Objectives
How to redesign a transaction logging architecture as PMEM-aware,How and how much the performance improved by redesign,What sort of architectures to be modernized for PMEM