《持久性内存存储系统关键技术研究》由清华大学博士后陈游旻撰写,内容荣获2021年度CCF优秀博士学位论文奖。全书重新思考了基于持久性内存的存储系统架构方式,并在操作系统、网络系统、存储软件等不同层次展开了研究。针对不同的问题,作者均提出了对应的解决方法或解决方案。
《持久性内存存储系统关键技术研究》共七章:
第1章 引言,主要介绍了研究背景与意义,概述了持久性内存存储系统,并简要叙述了全书的研究内容、主要贡献及组织结构。
第2章 相关工作,主要介绍了基于持久性内存的单机存储系统,基于RDMA的分布式系统,以及分布式持久性内存存储系统。
第3章 Kuco:用户态与内核态协同的文件系统架构,首先概述了研究内容与研究动机,然后介绍了Kuco的总体设计,接着介绍了KucoFS的实现细节,随后进行了实验和性能评估。
第4章 ScaleRPC:面向连接分组的分布式内存通信机制,首先概述了研究内容和研究动机,然后介绍了ScaleRPC架构设计,接着进行了实验和性能评估,然后介绍了ScaleRPC在真实场景下的应用。
第5章 Plor:融合悲观锁与乐观读的并发控制协议,首先概述了研究内容、研究背景和研究动机,然后介绍了Plor的基本内容,接着介绍了Plor的总体架构和Chronus的实现细节,随后进行了实验和性能评估。
第6章 FlatStore:基于日志结构的键值存储引擎,首先概述了研究内容、研究背景和研究动机,然后介绍了FlatStore架构设计,接着介绍了FlatStore实现细节,随后进行了实验和性能评估。
第7章 总结与展望,对分布式持久性内存存储系统的构建及关键技术进行了总述,并总结了全书的主要研究工作,随后对未来的研究进行了展望。
第1章 引言
1.1 研究背景与意义 1
1.2 持久性内存存储系统概述 5
1.2.1 持久性内存与RDMA技术 5
1.2.2 持久性内存存储系统发展趋势 8
1.2.3 关键问题与挑战 10
1.3 研究内容与主要贡献 13
1.3.1 研究内容 13
1.3.2 主要贡献 16
1.4 本书组织结构 19
第2章 相关工作
2.1 基于持久性内存的单机存储系统 20
2.1.1 精简化的存储软件栈设计 21
2.1.2 持久性内存编程模型 25
2.1.3 小结 27
2.2 基于RDMA的分布式系统 28
2.2.1 基于RDMA的键值存储系统 29
2.2.2 基于RDMA的事务系统 31
2.2.3 小结 32
2.3 分布式持久性内存存储系统 33
2.3.1 访问模式抽象 33
2.3.2 I/O路径优化 35
2.3.3 小结 36
第3章 Kuco:用户态与内核态协同的文件系统架构
3.1 概述 37
3.2 研究动机 41
3.3 Kuco总体设计 46
3.3.1 总体架构概述 46
3.3.2 协同索引 48
3.3.3 两级锁 52
3.3.4 三阶段写协议 54
3.3.5 版本读协议 55
3.4 KucoFS实现细节 58
3.4.1 数据布局 58
3.4.2 崩溃一致性及恢复 59
3.4.3 写保护 62
3.4.4 读保护 63
3.4.5 内存映射I/O 64
3.5 实验和性能评估 64
3.5.1 实验环境设置 65
3.5.2 优化技术效果分析 65
3.5.3 Filebench基准测试 74
3.5.4 Redis真实应用 76
3.6 本章小结 77
第4章 ScaleRPC:面向连接分组的分布式内存通信机制
4.1 概述 79
4.2 研究动机 82
4.2.1 RDMA扩展性问题 82
4.2.2 成因分析 83
4.2.3 现有的RDMA扩展性解决方案 86
4.3 ScaleRPC架构设计 88
4.3.1 总体描述 88
4.3.2 连接分组 89
4.3.3 虚拟映射 91
4.3.4 ScaleRPC部署的几点考虑 94
4.4 实验和性能评估 95
4.4.1 实验环境设置 95
4.4.2 总体性能评估 97
4.4.3 内部优化机制分析 101
4.4.4 敏感性分析 103
4.5 ScaleRPC在真实场景下的应用 105
4.5.1 基于ScaleRPC的分布式文件系统 105
4.5.2 基于ScaleRPC的分布式事务系统 107
4.6 本章小结 113
第5章 Plor:融合悲观锁与乐观读的并发控制协议
5.1 概述 114
5.2 背景介绍和研究动机 118
5.2.1 两阶段锁 118
5.2.2 乐观并发控制 119
5.2.3 研究动机 120
5.3 Plor概述 125
5.4 总体架构 127
5.4.1 Plor并发控制协议 127
5.4.2 原子锁 134
5.4.3 随机指数退避策略 136
5.5 Chronus实现细节 137
5.6 实验和性能评估 139
5.6.1 实验环境设置 140
5.6.2 高冲突负载 142
5.6.3 低冲突负载 147
5.6.4 敏感性分析 148
5.7 本章小结 155
第6章 FlatStore:基于日志结构的键值存储引擎
6.1 概述 156
6.2 背景介绍和研究动机 160
6.2.1 部分工业级负载的典型特征 161
6.2.2 粒度不匹配问题分析 161
6.2.3 傲腾持久性内存硬件特性分析 163
6.2.4 问题与挑战 164
6.3 FlatStore架构设计 165
6.3.1 总体描述 166
6.3.2 压缩日志格式及分配器 167
6.3.3 水平批量持久化技术 173
6.3.4 日志清理 177
6.3.5 系统恢复 178
6.4 FlatStore实现细节 180
6.4.1 基于哈希索引的FlatStore-H 180
6.4.2 基于树状索引的FlatStore-M 181
6.5 实验和性能评估 181
6.5.1 实验环境设置 181
6.5.2 YCSB微观基准测试 183
6.5.3 FacebookETC负载测试 187
6.5.4 多核扩展性测试 188
6.5.5 内部优化机制分析 189
6.5.6 日志清理性能分析 193
6.6 本章小结 194
第7章 总结与展望
7.1 分布式持久性内存存储系统的构建及关键技术 195
7.1.1 TH-DPMS总体架构 196
7.1.2 TH-DPMS系统测试及关键技术验证 201
7.2 主要研究工作总结 207
7.3 未来研究展望 210