内容推荐 本书以工程实践为导向,详细阐述了持久内存的整体技术细节。本书对持久内存的硬件和固件架构、编程模型、优化方法等方面都进行了深入剖析。从架构选择、方案实施、性能调优几个方面,对数据库、大数据等场景进行了细致介绍,以帮助读者建立掌握持久内存应用的系统方法。本书还对持久内存和内存计算的未来发展趋势也进行了探讨,通过抛砖引玉,希望对业界人员在该领域的进一步创新有所帮助。 本书适合具有一定基础的计算机和软件行业从业者、研究人员或高校师生阅读,尤其适合在行业内进行云计算的开发工程师学习,也适合相关领域的开发人员和科研人员参考。 作者简介 李志明,英特尔数据中心集团平台架构师、首席工程师。长期从事服务器系统的硬件架构和设计开发工作,近年来致力于计算和存储技术在数据中心的应用,解决新兴业务挑战。毕业于上海交通大学电子工程系,拥有硕士学位。 目录 第1章 持久内存的需求 1.1 持久内存的产生 1.1.1 大数据发展对内存的需求 1.1.2 内存和存储间的性能鸿沟 1.1.3 持久内存的使用场景 1.2 非易失性存储介质 1.2.1 传统非易失性存储介质 1.2.2 新型非易失性存储介质 1.2.3 非易失性存储介质主要特性比较 1.3 持久内存模块 1.3.1 持久内存的JEDEC标准分类 1.3.2 Intel傲腾持久内存 参考文献 第2章 持久内存的架构 2.1 内存数据持久化 2.1.1 数据持久化 2.1.2 持久化域 2.1.3 异步内存刷新技术 2.2 持久内存硬件架构 2.2.1 持久内存的硬件模块 2.2.2 持久内存的外部接口 2.3 持久内存及主机端的固件架构 2.3.1 接口规范 2.3.2 持久内存固件 2.3.3 主机端固件 2.4 持久内存的安全考虑 2.4.1 威胁模型 2.4.2 安全目标 2.4.3 基于硬件的内存加密 2.5 持久内存的可靠性、可用性和可维护性 2.5.1 可靠性、可用性和可维护性定义 2.5.2 硬件基础 2.5.3 错误检测和恢复 2.5.4 单芯片数据纠正和双芯片数据纠正 2.5.5 巡检 2.5.6 地址区间检查 2.5.7 病毒模式 2.5.8 错误报告和记录 2.5.9 持久内存故障隔离 2.5.10 错误注入 2.6 持久内存的管理 2.6.1 带内管理和带外管理 2.6.2 温度管理 2.7 持久内存的性能 2.7.1 空闲读取延时 2.7.2 带宽 2.7.3 访问粒度 2.7.4 加载读取延时 2.7.5 应用性能 第3章 操作系统实现 3.1 Linux持久内存内核驱动实现 3.1.1 操作系统驱动及实现 3.1.2 固件接口表 3.1.3 驱动框架 3.1.4 块设备接口实现 3.1.5 字符设备接口实现 3.1.6 NUMA节点接口实现 3.1.7 持久内存的RAS适配 3.2 Linux持久内存虚拟化实现 3.2.1 持久内存虚拟化实现 3.2.2 使用配置方法 3.2.3 性能优化指导 3.3 Windows持久内存驱动实现 3.3.1 持久内存支持概述 3.3.2 持久内存驱动框架解析 3.4 持久内存管理工具 3.4.1 持久内存的配置目标和命名空间 3.4.2 IPMCTL 3.4.3 NDCTL 3.4.4 Windows管理工具 第4章 持久内存的编程和开发库 4.1 持久内存SNIA编程模型 4.1.1 通用持久内存设备驱动 4.1.2 传统文件系统 4.1.3 持久内存感知文件系统 4.1.4 管理工具和管理界面 4.2 持久内存访问方式 4.2.1 持久内存访问方式 4.2.2 传统块访问方式 4.2.3 底层数据存取方式 4.3 持久内存编程的挑战 4.3.1 数据持久化 4.3.2 断电一致性 4.3.3 数据原子性 4.3.4 持久内存分配 4.3.5 位置独立性 4.4 PMDK编程库 4.4.1 libmemkind库 4.4.2 libpmem库 4.4.3 libpmemobj库 4.4.4 libpmeblk和libpmemlog 4.4.5 libpmemobj-cpp库介绍 4.5 持久内存和PMDK的应用 4.5.1 PMDK库的应用场景 4.5.2 pmemkv键值存储框架的介绍 4.5.3 PMDK在Redis持久化的应用 参考文献 第5章 持久内存性能优化 5.1 与持久内存相关的配置选项和性能特点 5.1.1 持久内存的常见配置选项与使用模式介绍 5.1.2 内存模式下的性能特点与适用业务的特征 5.1.3 AD模式下的性能特点与适用业务的特征 5.2 持久内存的相关性能评测与基础性能表现 5.2.1 不同持久内存配置与模式下的基础性能表现 5.2.2 内存模式下的典型业务场景 5.2.3 AD模式下的典型业务场景 5.3 常用性能优化方式与方法 5.3.1 平台配置优化 5.3.2 微架构选项优化 5.3.3 软件编程与数据管理策略的优化 5.4 性能监控与调优工具 5.4.1 Memory Latency Checker 5.4.2 Performance Counter Monitor 5.4.3 VTune Amplifier 第6章 持久内存在数据库的应用 6.1 Redis概况 6.2 使用持久内存扩展Redis内存容量 6.2.1 使用持久内存扩展内存容量 6.2.2 使用NUMA节点扩展内存容量 6.2.3 使用AD模式扩展内存容量 6.3 使用持久内存的持久化特性提升Redis性能 6.3.1 使用AD模式实现RDB 6.3.2 使用AD模式实现AOF 6.4 RocksDB概述及性能特性 6.5 RocksDB的LSM索引树 6.6 利用持久内存优化RocksDB性能 6.6.1 RocksDB的性能瓶颈 6.6.2 持久内存优化RocksDB的方式和性能结果 第7章 持久内存在大数据的应用 7.1 持久内存在大数据分析和人工智能中的应用概述 7.2 持久内存在大数据计算方面的加速方案 7.2.1 持久内存在Spark SQL数据分析场景的应用 7.2.2 持久内存在MLlib机器学习场景的应用 7.2.3 Spark PMoF:基于持久内存和RD |