论文网址
https://hpides.github.io/viper/
介绍
However, simply drop-in replacing existing storage with PMem does not yield good results, as block-based access behaves differently in PMem than on disk and ignores PMem’s byte addressability, layout, and unique performance characteristics.
要解决如何正确地将KV持久化到PM中;要利用好字节存取能力和它特殊的性能特征。
In this paper, we propose three PMem-specific access patterns and implement them in a hybrid PMem-DRAM KVS called Viper.
三种访问模式;hybrid PMem-DRAM KVS
We employ a DRAM-based hash index and a PMem-aware storage layout to utilize the random-write speed of DRAM and efficient sequential-write performance PMem.
将Hash索引存储到DRAM中,因为DRAM的随机写性能很好;再利用PM的很好的顺序写性能。
“我感觉这篇文章比较有意思的点在与它通过存储布局设计把不同threads的读写操作都尽量均衡的分配到了不同的DIMM上,并且把粒度(VPage)设为4kb(实测中这样的offset在顺序写时候Latency最低),Viper没有做缓存设计(因为实际测试中DRAM和PMem的顺序写入的Latency差不多)”

讨论
由于这篇论文应用了PM的顺序写性能,而且openGauss的日志也是顺序写的,因此可以参考这篇论文来探讨如何将PM应用于openGauss的日志系统。
在spitfire论文中,探讨了dram-pm-ssd的三层存储结构,其实在openGauss中应该也可以用这种结构来实现日志系统。如果单纯地使用PM持久化日志,由于日志过于庞大,全部存储在PM中不太合适,我想最终还是要dump到磁盘当中的。