作者 |
李志明 等 |
丛书名 |
出版社 |
电子工业出版社 |
ISBN |
9787121401268 |
简要 |
简介 |
内容简介书籍计算机书籍 本书以工程实践为导向,详细阐述了持久内存的整体技术细节。本书对持久内存的硬件和固件架构、编程模型、优化方法等方面都进行了深入剖析。从架构选择、方案实施、性能调优几个方面,对数据库、大数据等场景进行了细致介绍,以帮助读者建立掌握持久内存应用的系统方法。本书还对持久内存和内存计算的未来发展趋势也进行了探讨,通过抛砖引玉,希望对业界人员在该领域的进一步创新有所帮助。 |
目录 |
第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 |