持久内存架构与工程实践
作者:李志明,吴国安,李翔 等 著
出版社:电子工业出版社
出版时间:2021-01-01
ISBN:9787121401268
定价:¥99.00
目录
第1章 持久内存的需求 / 1
1.1 持久内存的产生 / 2
1.1.1 大数据发展对内存的需求 / 2
1.1.2 内存和存储间的性能鸿沟 / 5
1.1.3 持久内存的使用场景 / 7
1.2 非易失性存储介质 / 10
1.2.1 传统非易失性存储介质 / 10
1.2.2 新型非易失性存储介质 / 11
1.2.3 非易失性存储介质主要特性比较 / 14
1.3 持久内存模块 / 15
1.3.1 持久内存的JEDEC标准分类 / 15
1.3.2 Intel傲腾持久内存 / 16
参考文献 / 18
第2章 持久内存的架构 / 19
2.1 内存数据持久化 / 20
2.1.1 数据持久化 / 20
2.1.2 持久化域 / 21
2.1.3 异步内存刷新技术 / 23
2.2 持久内存硬件架构 / 25
2.2.1 持久内存的硬件模块 / 25
2.2.2 持久内存的外部接口 / 27
2.3 持久内存及主机端的固件架构 / 30
2.3.1 接口规范 / 30
2.3.2 持久内存固件 / 34
2.3.3 主机端固件 / 34
2.4 持久内存的安全考虑 / 37
2.4.1 威胁模型 / 37
2.4.2 安全目标 / 38
2.4.3 基于硬件的内存加密 / 40
2.5 持久内存的可靠性、可用性和可维护性 / 40
2.5.1 可靠性、可用性和可维护性定义 / 40
2.5.2 硬件基础 / 41
2.5.3 错误检测和恢复 / 42
2.5.4 单芯片数据纠正和双芯片数据纠正 / 43
2.5.5 巡检 / 43
2.5.6 地址区间检查 / 44
2.5.7 病毒模式 / 45
2.5.8 错误报告和记录 / 45
2.5.9 持久内存故障隔离 / 45
2.5.10 错误注入 / 46
2.6 持久内存的管理 / 47
2.6.1 带内管理和带外管理 / 47
2.6.2 温度管理 / 51
2.7 持久内存的性能 / 53
2.7.1 空闲读取延时 / 53
2.7.2 带宽 / 53
2.7.3 访问粒度 / 53
2.7.4 加载读取延时 / 54
2.7.5 应用性能 / 56
第3章 操作系统实现 / 59
3.1 Linux持久内存内核驱动实现 / 60
3.1.1 操作系统驱动及实现 / 60
3.1.2 固件接口表 / 61
3.1.3 驱动框架 / 61
3.1.4 块设备接口实现 / 63
3.1.5 字符设备接口实现 / 66
3.1.6 NUMA节点接口实现 / 67
3.1.7 持久内存的RAS适配 / 70
3.2 Linux持久内存虚拟化实现 / 71
3.2.1 持久内存虚拟化实现 / 71
3.2.2 使用配置方法 / 77
3.2.3 性能优化指导 / 80
3.3 Windows持久内存驱动实现 / 82
3.3.1 持久内存支持概述 / 82
3.3.2 持久内存驱动框架解析 / 82
3.4 持久内存管理工具 / 83
3.4.1 持久内存的配置目标和命名空间 / 83
3.4.2 IPMCTL / 90
3.4.3 NDCTL / 94
3.4.4 Windows管理工具 / 97
第4章 持久内存的编程和开发库 / 98
4.1 持久内存SNIA编程模型 / 99
4.1.1 通用持久内存设备驱动 / 100
4.1.2 传统文件系统 / 100
4.1.3 持久内存感知文件系统 / 100
4.1.4 管理工具和管理界面 / 101
4.2 持久内存访问方式 / 101
4.2.1 持久内存访问方式 / 102
4.2.2 传统块访问方式 / 104
4.2.3 底层数据存取方式 / 105
4.3 持久内存编程的挑战 / 106
4.3.1 数据持久化 / 107
4.3.2 断电一致性 / 107
4.3.3 数据原子性 / 108
4.3.4 持久内存分配 / 109
4.3.5 位置独立性 / 109
4.4 PMDK编程库 / 110
4.4.1 libmemkind库 / 110
4.4.2 libpmem库 / 113
4.4.3 libpmemobj库 / 120
4.4.4 libpmeblk 和libpmemlog / 143
4.4.5 libpmemobj-cpp库介绍 / 143
4.5 持久内存和PMDK的应用 / 152
4.5.1 PMDK库的应用场景 / 152
4.5.2 pmemkv键值存储框架的介绍 / 153
4.5.3 PMDK在Redis持久化的应用 / 156
参考文献 / 162
第5章 持久内存性能优化 / 163
5.1 与持久内存相关的配置选项和性能特点 / 164
5.1.1 持久内存的常见配置选项与使用模式介绍 / 164
5.1.2 内存模式下的性能特点与适用业务的特征 / 164
5.1.3 AD模式下的性能特点与适用业务的特征 / 167
5.2 持久内存的相关性能评测与基础性能表现 / 170
5.2.1 不同持久内存配置与模式下的基础性能表现 / 170
5.2.2 内存模式下的典型业务场景 / 171
5.2.3 AD模式下的典型业务场景 / 172
5.3 常用性能优化方式与方法 / 173
5.3.1 平台配置优化 / 173
5.3.2 微架构选项优化 / 176
5.3.3 软件编程与数据管理策略的优化 / 181
5.4 性能监控与调优工具 / 183
5.4.1 Memory Latency Checker / 183
5.4.2 Performance Counter Monitor / 186
5.4.3 VTune Amplifier / 188
第6章 持久内存在数据库的应用 / 192
6.1 Redis概况 / 193
6.2 使用持久内存扩展Redis内存容量 / 194
6.2.1 使用持久内存扩展内存容量 / 195
6.2.2 使用NUMA节点扩展内存容量 / 196
6.2.3 使用AD模式扩展内存容量 / 198
6.3 使用持久内存的持久化特性提升Redis性能 / 200
6.3.1 使用AD模式实现RDB / 202
6.3.2 使用AD模式实现AOF / 204
6.4 RocksDB概述及性能特性 / 206
6.5 RocksDB的LSM索引树 / 208
6.6 利用持久内存优化RocksDB性能 / 211
6.6.1 RocksDB的性能瓶颈 / 217
6.6.2 持久内存优化RocksDB的方式和性能结果 / 219
第7章 持久内存在大数据的应用 / 234
7.1 持久内存在大数据分析和人工智能中的应用概述 / 235
7.2 持久内存在大数据计算方面的加速方案 / 235
7.2.1 持久内存在Spark SQL数据分析场景的应用 / 235
7.2.2 持久内存在MLlib机器学习场景的应用 / 241
7.2.3 Spark PMoF:基于持久内存和RDMA网络的高性能Spark Shuffle方案 / 247
7.3 持久内存在大数据存储中的应用 / 255
7.3.1 持久内存在HDFS缓存中的应用 / 255
7.3.2 持久内存在Alluxio缓存中的应用 / 260
7.4 持久内存在Analytics Zoo中的应用 / 264
7.4.1 Analytics Zoo简介 / 264
7.4.2 持久内存在Analytics Zoo中的具体应用 / 264
第8章 持久内存在其他领域的应用 / 267
8.1 持久内存的应用方式及可解决的问题 / 268
8.1.1 持久内存的应用方式 / 268
8.1.2 持久内存能够解决的问题 / 269
8.2 持久内存在推荐系统中的应用 / 270
8.2.1 推荐系统的主要组成 / 271
8.2.2 推荐系统的持久内存应用方法 / 272
8.2.3 推荐系统应用案例 / 272
8.3 持久内存在缓存系统的应用 / 277
8.3.1 缓存系统的分类和特点 / 277
8.3.2 缓存系统应用案例 / 280
8.4 持久内存在高性能计算中的应用 / 284
8.5 持久内存在虚拟云主机中的应用 / 285
8.6 持久内存的应用展望 / 286