泛读笔记:《NVM: Is it Not Very Meaningful for Databases?》
文章发布时间:
最后更新时间:
文章总字数:
预计阅读时间:
页面浏览: 加载中...
最后更新时间:
文章总字数:
693
预计阅读时间:
2 分钟
页面浏览: 加载中...
1. 摘要
持久性或非易失性存储器(PMEM)提供了扩展的存储容量和更快的持久性存储访问.然而,目前还没有对不同PMEM模式下现有的数据库引擎进行全面的实证分析,以了解数据库如何从各种硬件配置中受益.为此,我们在AppDirect模式和内存模式下使用PMEM在共同基准下分析了多个不同的引擎.我们的结果表明,尽管易失性存储器容量更大,但内存模式下的PMEM并没有提供任何明显的性能优势.此外,使用PMEM作为持久存储通常会加快查询执行,但有一些注意事项,因为I/O路径没有完全优化,因此并不总是能够证明额外的成本是合理的.我们通过对不同工作负载下不同引擎和数据库配置的综合评估证明了这一点.
2. 背景

每个内存通道都通过集成的内存控制器(iMC)连接到CPU,该控制器维护PMEM DIRECT的读/写队列,并确保断电时的持久性.对于2插槽服务器,最大内存容量为6 TB.
PMEM的内部访问粒度为256字节,顺序存取模式具有最高的带宽,仅比DRAM低2-3倍.
PMEM在三种模式下运行:内存模式,AppDirect模式和混合模式.
AppDirect模式和传统操作系统的比较
- 操作系统页面缓存缓存最近从磁盘访问的数据。用户级程序通过read(2)和write(2)等系统调用访问页面缓存。页面缓存使用预取等技术来进一步改进I/O。
- 直接内存访问(DMA)是一种允许数据在外围设备(如网络或存储设备)和内存之间传输而不通过CPU的功能。DMA操作直接在外围设备和内存之间传输数据,完全绕过CPU和页面缓存。
- 在传统的系统中,操作系统页面缓存和预取被用来提高I/O操作的性能。在AppDirect模式下,OS页面缓存不可用,应用程序直接使用mmap(2)建立到持久内存的映射。
- NVM不是外围设备,因此DMA不可用,CPU必须参与PMEM和CPU之间的每次数据传输。
- 尽管PMEM有自己的预取器,但它不能使用OS页缓存来获得额外的内存容量,它必须直接依赖于应用程序分配的内存。
3. 实验

