持久内存架构与工程实践
《持久内存架构与工程实践》以工程实践为导向,详细阐述了持久内存的整体技术细节。本书对持久内存的硬件和固件架构、编程模型、优化方法等方面进行了深入剖析,并从架构选择、方案实施、性能调优几个方面,对数据库、大数据等场景进行了详细介绍,以帮助读者掌握持久内存应用。《持久内存架构与工程实践》还对持久内存和内存计算的未来发展趋势进行了探讨,抛砖引玉,希望对业界人员在该领域的进一步创新有所帮助。
《持久内存架构与工程实践》适合具有一定基础的计算机和软件行业从业者、研究人员或高校师生阅读,尤其适合在行业内进行云计算的开发工程师学习,也适合相关领域的开发人员和科研人员参考。
目录第壹章 持久内存的需求 / 11.1 持久内存的产生 / 21.1.1 大数据发展对内存的需求 / 21.1.2 内存和存储间的性能鸿沟 / 51.1.3 持久内存的使用场景 / 71.2 非易失性存储介质 / 101.2.1 传统非易失性存储介质 / 101.2.2 新型非易失性存储介质 / 111.2.3 非易失性存储介质主要特性比较 / 141.3 持久内存模块 / 151.3.1 持久内存的JEDEC标准分类 / 151.3.2 Intel傲腾持久内存 / 16参考文献 / 18第2章 持久内存的架构 / 192.1 内存数据持久化 / 202.1.1 数据持久化 / 202.1.2 持久化域 / 212.1.3 异步内存刷新技术 / 232.2 持久内存硬件架构 / 252.2.1 持久内存的硬件模块 / 252.2.2 持久内存的外部接口 / 272.3 持久内存及主机端的固件架构 / 302.3.1 接口规范 / 302.3.2 持久内存固件 / 342.3.3 主机端固件 / 342.4 持久内存的安全考虑 / 372.4.1 威胁模型 / 372.4.2 安全目标 / 382.4.3 基于硬件的内存加密 / 402.5 持久内存的可靠性、可用性和可维护性 / 402.5.1 可靠性、可用性和可维护性定义 / 402.5.2 硬件基础 / 412.5.3 错误检测和恢复 / 422.5.4 单芯片数据纠正和双芯片数据纠正 / 432.5.5 巡检 / 432.5.6 地址区间检查 / 442.5.7 病毒模式 / 452.5.8 错误报告和记录 / 452.5.9 持久内存故障隔离 / 452.5.10 错误注入 / 462.6 持久内存的管理 / 472.6.1 带内管理和带外管理 / 472.6.2 温度管理 / 512.7 持久内存的性能 / 532.7.1 空闲读取延时 / 532.7.2 带宽 / 532.7.3 访问粒度 / 532.7.4 加载读取延时 / 542.7.5 应用性能 / 56第3章 操作系统实现 / 593.1 Linux持久内存内核驱动实现 / 603.1.1 操作系统驱动及实现 / 603.1.2 固件接口表 / 613.1.3 驱动框架 / 613.1.4 块设备接口实现 / 633.1.5 字符设备接口实现 / 663.1.6 NUMA节点接口实现 / 673.1.7 持久内存的RAS适配 / 703.2 Linux持久内存虚拟化实现 / 713.2.1 持久内存虚拟化实现 / 713.2.2 使用配置方法 / 773.2.3 性能优化指导 / 803.3 Windows持久内存驱动实现 / 823.3.1 持久内存支持概述 / 823.3.2 持久内存驱动框架解析 / 823.4 持久内存管理工具 / 833.4.1 持久内存的配置目标和命名空间 / 833.4.2 IPMCTL / 903.4.3 NDCTL / 943.4.4 Windows管理工具 / 97第4章 持久内存的编程和开发库 / 984.1 持久内存SNIA编程模型 / 994.1.1 通用持久内存设备驱动 / 1004.1.2 传统文件系统 / 1004.1.3 持久内存感知文件系统 / 1004.1.4 管理工具和管理界面 / 1014.2 持久内存访问方式 / 1014.2.1 持久内存访问方式 / 1024.2.2 传统块访问方式 / 1044.2.3 底层数据存取方式 / 1054.3 持久内存编程的挑战 / 1064.3.1 数据持久化 / 1074.3.2 断电一致性 / 1074.3.3 数据原子性 / 1084.3.4 持久内存分配 / 1094.3.5 位置独立性 / 1094.4 PMDK编程库 / 1104.4.1 libmemkind库 / 1104.4.2 libpmem库 / 1134.4.3 libpmemobj库 / 1204.4.4 libpmeblk 和libpmemlog / 1434.4.5 libpmemobj-cpp库介绍 / 1434.5 持久内存和PMDK的应用 / 1524.5.1 PMDK库的应用场景 / 1524.5.2 pmemkv键值存储框架的介绍 / 1534.5.3 PMDK在Redis持久化的应用 / 156参考文献 / 162第5章 持久内存性能优化 / 1635.1 与持久内存相关的配置选项和性能特点 / 1645.1.1 持久内存的常见配置选项与使用模式介绍 / 1645.1.2 内存模式下的性能特点与适用业务的特征 / 1645.1.3 AD模式下的性能特点与适用业务的特征 / 1675.2 持久内存的相关性能评测与基础性能表现 / 1705.2.1 不同持久内存配置与模式下的基础性能表现 / 1705.2.2 内存模式下的典型业务场景 / 1715.2.3 AD模式下的典型业务场景 / 1725.3 常用性能优化方式与方法 / 1735.3.1 平台配置优化 / 1735.3.2 微架构选项优化 / 1765.3.3 软件编程与数据管理策略的优化 / 1815.4 性能监控与调优工具 / 1835.4.1 Memory Latency Checker / 1835.4.2 Performance Counter Monitor / 1865.4.3 VTune Amplifier / 188第6章 持久内存在数据库的应用 / 1926.1 Redis概况 / 1936.2 使用持久内存扩展Redis内存容量 / 1946.2.1 使用持久内存扩展内存容量 / 1956.2.2 使用NUMA节点扩展内存容量 / 1966.2.3 使用AD模式扩展内存容量 / 1986.3 使用持久内存的持久化特性提升Redis性能 / 2006.3.1 使用AD模式实现RDB / 2026.3.2 使用AD模式实现AOF / 2046.4 RocksDB概述及性能特性 / 2066.5 RocksDB的LSM索引树 / 2086.6 利用持久内存优化RocksDB性能 / 2116.6.1 RocksDB的性能瓶颈 / 2176.6.2 持久内存优化RocksDB的方式和性能结果 / 219第7章 持久内存在大数据的应用 / 2347.1 持久内存在大数据分析和人工智能中的应用概述 / 2357.2 持久内存在大数据计算方面的加速方案 / 2357.2.1 持久内存在Spark SQL数据分析场景的应用 / 2357.2.2 持久内存在MLlib机器学习场景的应用 / 2417.2.3 Spark PMoF:基于持久内存和RDMA网络的高性能Spark Shuffle方案 / 2477.3 持久内存在大数据存储中的应用 / 2557.3.1 持久内存在HDFS缓存中的应用 / 2557.3.2 持久内存在Alluxio缓存中的应用 / 2607.4 持久内存在Analytics Zoo中的应用 / 2647.4.1 Analytics Zoo简介 / 2647.4.2 持久内存在Analytics Zoo中的具体应用 / 264第8章 持久内存在其他领域的应用 / 2678.1 持久内存的应用方式及可解决的问题 / 2688.1.1 持久内存的应用方式 / 2688.1.2 持久内存能够解决的问题 / 2698.2 持久内存在推荐系统中的应用 / 2708.2.1 推荐系统的主要组成 / 2718.2.2 推荐系统的持久内存应用方法 / 2728.2.3 推荐系统应用案例 / 2728.3 持久内存在缓存系统的应用 / 2778.3.1 缓存系统的分类和特点 / 2778.3.2 缓存系统应用案例 / 2808.4 持久内存在高性能计算中的应用 / 2848.5 持久内存在虚拟云主机中的应用 / 2858.6 持久内存的应用展望 / 286