持久内存架构与工程实践pdf下载pdf下载

持久内存架构与工程实践百度网盘pdf下载

作者:
简介:本篇主要提供持久内存架构与工程实践pdf下载
出版社:电子工业出版社
出版时间:2021-01
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

产品特色

编辑推荐

适读人群 :具有一定基础的计算机和软件行业从业者、研究人员或高校师生,尤其适合在行业内进行云计算的开发工程师、相关领域的开发人员和科研人员

第一本全面介绍持久内存原理、设计与实现的系统性著作

不可错过的下一代 AI 系统底层技术

英特尔公司多位一线专家的理论知识结晶与经验总结

剖析持久内存的开发、验证和应用等前沿工作

囊括持久内存产生背景、技术分类、硬件和固件架构、编程模型和开发库、性能优化方法,以及在数据库及大数据等领域的应用

英特尔内部数十年材料科学研究、半导体创新和制造专业知识的结晶


内容简介

《持久内存架构与工程实践》以工程实践为导向,详细阐述了持久内存的整体技术细节。本书对持久内存的硬件和固件架构、编程模型、优化方法等方面进行了深入剖析,并从架构选择、方案实施、性能调优几个方面,对数据库、大数据等场景进行了详细介绍,以帮助读者掌握持久内存应用。《持久内存架构与工程实践》还对持久内存和内存计算的未来发展趋势进行了探讨,抛砖引玉,希望对业界人员在该领域的进一步创新有所帮助。

《持久内存架构与工程实践》适合具有一定基础的计算机和软件行业从业者、研究人员或高校师生阅读,尤其适合在行业内进行云计算的开发工程师学习,也适合相关领域的开发人员和科研人员参考。


作者简介

李志明

英特尔数据中心集团平台架构师、首席工程师。长期从事服务器系统的硬件架构和设计开发工作,近年来致力于计算和存储技术在数据中心的应用,解决新兴业务挑战。毕业于上海交通大学电子工程系,拥有硕士学位。



吴国安

英特尔持久内存产品工程部经理,在IA架构、性能优化、软件协同硬件开发方面有多年工作经验。目前主要支持客户应用英特尔数据中心级持久内存,进行软件开发和应用适配,提供IA架构上的客户方案技术咨询和支持。在2012年加入英特尔之前,任职意法半导体负责数字电视软件开发和集成的工作。2005年硕士毕业于上海交通大学。



李翔

就职于英特尔数据中心部门,主要从事持久内存的研发与调试,深入参与持久内存初代产品的调试与验证及未来产品的设计与规划,对持久内存的架构与应用有深入的理解。硕士毕业于上海大学信号与信息处理专业,先后就职于华为、思科等科技公司从事产品研发与调试工作。



斯佩峰

英特尔数据中心集团资深软件工程师。长期从事x86服务器的固件开发和软件性能调优,目前专注于持久内存对数据库及存储类应用的优化。



杜凡

资深Linux内核工程师,有十余年的Linux内核开发、性能调优经验。现就职于英特尔,在持久内存方向深耕数年。熟知英特尔持久内存产品,对Linux内核NVDIMM和内存管理子系统有深入理解。深度参与持久内存在不同应用场景的调研与开发,积累了丰富的持久内存在互联网企业中应用经验。曾就职于WindRiver,负责网络协议加密产品的开发, 以及网络协议栈XFRM模块的社区维护工作。



束文辉

英特尔数据中心集团解决方案架构师,专注于大型云计算客户的业务性能特征化与至强平台与非易失性存储的功耗性能调优。具有云计算系统开发经验,熟悉大型IT及数据中心的管理与运维体系,如Web/DB、虚拟化、网络和存储等。毕业于南京大学软件工程系,拥有硕士学位。



徐铖

现就职于英特尔亚太研发有限公司开源技术部门,从事多年大数据技术研究和开发工作,目前主要专注于基于英特尔平台的大数据技术优化。积极的开源项目贡献者,是Apache Hive、Apache ORC和Apache Commons项目的Committer。



胡寅玮

长期从事软件开发和信息技术管理工作。现任英特尔数据中心事业部,云计算软件研发部门经理,致力于服务器产品的软件和固件研发、系统集成及性能优化。


精彩书评

持久内存是一项令人兴奋的新技术,广受应用程序开发者的关注。本书全面介绍了持久内存的属性、编程使用的开发库,以及实际应用程序和诸多使用案例。 本书的出版有助于软件开发人员从基础学习材料开始,循序渐进地掌握常见用例的分析方法。软件架构师和程序员在创建持久内存感知应用程序时,可以参考本书。


安迪·鲁道夫(Andy Rudoff)

英特尔公司资深首席工程师、软件架构师,SNIA持久内存编程模型主要贡献者,PMDK发起人



接近内存级别的延时和吞吐,高密度和数据持久化,单位成本却大幅低于内存,持久内存因为这些新颖特性的加入改变了传统的存储体系。该新型存储介质的出现和发展丰富了传统的存储层级,会对数据处理、数据分析领域带来新的挑战和机遇,尤其是内存数据库和内存计算与分析系统方面。本书系统性地总结了持久内存的架构原理、编程开发方式,以及在数据库与数据计算分析等领域的应用,对持久内存这个新兴技术的发展有很好的指导意义。


李飞飞

阿里云智能数据库产品事业部负责人,达摩院数据库与存储实验室负责人,ACM杰出科学家



计算架构的持续变革,支撑了互联网经济的迅猛发展。在此背景下,英特尔持久内存的出现,为云数据中心的计算和存储架构的进一步创新提供了更多的可能性。本书的内容基于大量的客户项目,英特尔工程技术团队对持久内存进行了全景式的总结。对于希望通过新架构优化云计算平台的互联网企业和众多政企客户来说,这些宝贵的经验具有重要的借鉴意义。


梁雅莉

英特尔公司市场营销集团副总裁,中国区行业解决方案部总经理


目录

目录

第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

前言/序言

推荐序一


当我们审视人工智能、5G、自动驾驶、电子商务、区块链等行业的技术发展趋势时,都会碰到一个挑战:其对数据的需求持续增长,并且超过了我们现有的存储、移动和处理数据的能力。DRAM(Dynamic Random Access Memory)虽然速度足够快,且可以将稳定的数据流提供给功能强大的处理器和AI算法,但由于其价格昂贵,因此只能用于小容量设计。当数据量超过DRAM的容量时,处理器就要从后级存储中获取数据,从而导致访问延时呈指数级增长。因此,我在整个职业生涯中一直致力于开发新兴的存储技术,以期解决DRAM速度与存储容量和非易失性之间的矛盾,从而推动该行业的持续发展。

借助英特尔傲腾持久内存,我们在内存-存储子系统中创建了一个新层次,这使整个行业都会受益。持久内存基于革命性的英特尔3D-XPoint技术,将传统内存的速度与容量和持久性结合在一起。自从该方案于2019年4月推出起,我们已经看到了一系列针对数据存储问题的创新解决方案。例如,在相同成本的硬件上支持更高密度的虚拟机,或通过从持久内存中重建数据库来减少重新加载时间。DRAM已接近其扩展极限,而处理器技术还需继续扩展性能及其相应的内存需求,因此拓展新层次的内存是一个必然趋势。英特尔只是这场革命的第一个成员。

中国有着丰富的创新成长土壤。从2019年英特尔傲腾持久内存发布后,中国就一直站在持久内存应用创新的前沿。从AI推理系统优化、内存数据库更具扩展性和负担性,到建立适合社区的开放性解决方案,中国公司对持久内存和新的内存-存储架构进行了大量探索,并在生产环境中进行了部署实践。

自20多年前NAND闪存问世以来,在内存-存储架构中引入新层级是业界最艰巨的挑战。创新者们正在尝试把物理及虚拟化的基础架构、中间件和软件融合在一起,以加速下一波技术发展趋势。我很荣幸能为这项工作做出一些贡献,也欢迎您加入这场持久内存技术革命。


阿尔珀·伊尔克巴哈(Alper Ilkbahar)

数据平台事业部副总裁

内存和存储产品事业部总经理

英特尔公司

2021年1月


推荐序二

持久内存并不是一个全新的概念。学术界早在20世纪就已经开始了对持久内存颗粒和应用技术的研究。随着移动互联网的蓬勃发展,应用接入端对存储系统的要求不断提高,数据规模越来越大,数据访问频率越来越高,曾被寄予厚望的Flash技术,愈发难以满足需求。从早期的Flash DIMM(一种将Flash颗粒贴在DIMM条上的技术),到NVDIMM标准的确立,再到基于DRAM+Flash的NVDIMM-N产品的问世,业界关于持久内存的尝试从未停止。但真正把持久内存从实验室推向工业界的是2016年英特尔公司和美光(Micron)公司联合发布的3D-XPoint技术,以及之后英特尔公司基于3D-XPoint研发的英特尔傲腾系列产品和配套的软硬件架构。

Flash是一项被熟知的技术,手机、计算机等各类电子产品都使用Flash作为数据存储介质。在数据中心内部,Flash作为主要的高速存储介质,响应着峰值高达每秒上亿次的请求。作为硬盘的替代品,Flash非常好地解决了读写延时和存储密度低等问题。然而,Flash的读写长尾延时、页对齐访问、读写放大及擦写寿命短等问题,限制了Flash的使用场景。此外,从平均访问延时上分析,Flash百微秒的量级与内存几十纳秒的量级有着约103量级的差距。简单来说,访问一次Flash的耗时与访问1000次内存的耗时相同,存储系统中的数据持久化操作仍是突出的性能瓶颈。传统的DRAM,由于其容量有限且数据易失,无法满足数据量和编程模型的需求。持久内存,尤其是3D-XPoint技术的出现,在一定程度上解决了这些问题。

持久内存拥有比Flash更低的读写延时、更稳定的QoS、更长的寿命,其近似内存的读写访问模式可以提供更好的性能。利用3D-XPoint技术的高存储密度,可以将单台机器的内存容量轻松扩展到几TB。借助持久内存的数据非易失特性,可以重新构建存储系统的数据持久化架构,实现更好的服务质量和更高的数据恢复效率。然而令人遗憾的是,国内关于持久内存的研究较少,且缺乏系统性,对这项技术感兴趣的人很难通过网络获取相关资料。已经使用持久内存技术的团队,对该技术的了解往往也只停留在表面。这极大地限制了技术人员对持久内存的技术探索和规模部署,导致一些适合部署持久内存的场景还在使用不适合的旧技术,甚至干脆不能提供满足需求的策略。

这本由英特尔公司一线技术人员编写的《持久内存架构与工程实践》,详细地介绍了持久内存技术的软硬件架构。相信有一定计算机体系结构基础的读者,在读完这本书之后,对持久内存会有更清晰的认识,进而可以尝试在自己的项目里使用持久内存。我阅读本书之后,有如下体会。首先,本书的知识结构非常系统。不像网络上关于持久内存的只言片语,或者一些应用场景中对持久内存介绍的浅尝辄止,本书比较系统和全面地介绍了持久内存的原理、架构及使用模式等。其次,内容有针对性且通俗易懂。本书作者来自英特尔公司一线技术团队,他们在推广持久内存技术的过程中,汇总了业务团队和一线研发人员最关注的问题,并在书中对这些问题进行了有针对性的解答和介绍,内容鞭辟入里。最后,本书还集成了持久内存工程实践的例子。这些工程实践是过去一年中知名互联网厂商规模部署持久内存的真实案例,时效性强,极具参考性,是不可多得的技术资料。

国内的技术人员为了解最新技术,在很多时候只能阅读翻译的外文书籍,或者查阅国外的资料,因此获取的资料要么已经过时,难以举一反三,要么翻译不符合我们的语义,难以全面理解,要么举例离我们的生活太远,不能很好领悟。本书完全由国人编写,面向国内技术人员,书中的案例更多地取自国内场景,在确保严谨的同时,为读者带来了很好的阅读体验。

在移动互联网时代,越来越多的国内厂商探索出了有自身特色的应用。希望这本书可以帮助读者在自己的场景中,借助持久内存,创造出更大的价值。

感谢李志明、潘丽娜、朱大义、张志杰和整个英特尔团队,在百度导入持久内存技术的过程中给予的帮助。谢谢!


张家军

系统部高级经理

百度

2021年1月

前言

动态随机访问内存是计算机系统的核心部件,用来暂时保存计算所需的数据和中间结果。动态随机访问内存的访问延时远远小于硬盘甚至固态硬盘,微处理器需要先把访问的数据从硬盘读取到内存中,然后在内存中直接对数据进行处理,最后再将数据写回硬盘中。如果大部分数据都不在内存中,那么程序的性能将受限于硬盘的读取速度;同时,为了防止意外断电造成的数据丢失或者数据完整性被破坏,数据需要以阻塞的方式频繁写入硬盘,减少程序并发性并降低性能。持久内存的出现可以从根本上解决上述问题,常用的数据可以常驻在持久内存中,微处理器可以直接访问及处理,不需要频繁地向磁盘写入。持久内存最先在存储等场景获得广泛关注,2019年英特尔发布的傲腾持久内存把该技术的应用进一步拓展到云计算的各个细分领域。


为什么写作本书

持久内存技术是内存领域革命性的技术,从根本上改变了内存和存储设备的界限。持久内存技术对产业界和学术界产生了深远影响,涉及计算机微架构、系统硬件、固件、操作系统、开发库和应用软件等众多领域。我们在推动持久内存在互联网行业应用时发现,即便资深计算机行业从业者也需要花费几个月阅读大量的文献并进行大量的实践,才能充分掌握持久内存技术的核心概念并将其应用到自身的领域中。尽管国外的学术会议陆续有相关的研究发表,且发布了持久内存编程库的英文在线书籍,但仍然缺乏对持久内存系统性的介绍和应用实践的总结,而且中文的资源基本处于空白状态。与此相对的是,中国的云计算用户和厂商对该技术的兴趣非常高,一些早期应用原型甚至处于世界的前列。基于此,我们萌发了系统性地总结持久内存技术和应用实践的想法,以推动持久内存应用技术在中国更快、更广泛的传播,促进更多的创新。


关于本书作者

本书作者均就职于英特尔公司,从事持久内存的开发、验证和应用等前沿工作,具备丰富的理论知识和一线实战经验,并与相关产业合作伙伴有着密切的合作。

第1章由胡寅玮负责,桂丙武参与编写;第2章由李翔负责,周瑜锋、李军、李志明参与编写;第3章由杜凡负责,任磊、杨伟参与编写;第4章由吴国安编写;第5章由束文辉编写;第6章由斯佩峰负责,吴国安、周雨馨参与编写;第7章由徐铖负责,张建、杜炜、双琳娜、刘献阳等参与编写;第8章由李志明编写。全书由李志明统稿。


本书主要内容

本书共包括8章,可以分为三部分:

架构基础。第1章介绍持久内存产生的背景及技术的分类;第2章介绍持久内存的硬件、固件架构和性能。

软件、编程和优化。第3章介绍操作系统和虚拟化下的驱动实现;第4章介绍编程模型和开发库;第5章介绍性能优化方法和工具。

应用实践。第6章介绍数据库应用;第7章介绍大数据应用;第8章介绍其他领域的应用。第6章、第7章中的案例多数由本书作者开发,第8章中的案例来自公开文献或经合作伙伴授权发布。


致谢

感谢英特尔数据平台事业部副总裁阿尔珀•伊尔克巴哈(Alper Ilkbahar)先生,他在非易失存储领域耕耘多年,对持久内存在英特尔及产业界的推动发挥了巨大的作用。自2017年起,阿尔珀•伊尔克巴哈就对持久内存在中国的技术发展和客户合作给予了充分支持,促进了一大批人才的培养。感谢英特尔公司院士Naga Gurumoorthy,资深首席工程师Lily Looi、Andy Rudoff、Arafa、Mohamed Arafa、Ian Steiner、Min Liu,首席工程师Kaushik Balasubramanian、Jane Xu等人在持久内存技术发展中做出的巨大贡献。以上人才和知识储备是本书得以写成的基础。感谢英特尔资深总监周翔对持久内存在中国发展的推动,他的激励直接促成了本书的写作。

感谢百度公司的系统部高级经理张家军在百忙中为本书作序,他的团队对持久内存在信息流和搜索等领域的应用起到了行业示范作用。

感谢本书所有作者在繁忙工作之余完成了本书的写作。感谢阿里巴巴的付秋雷(花名漠冰)、严春宝(花名叶目),百度的胡剑阳,快手的张新杰、任恺、王靖、徐雷鸣和刘富聪,以及英特尔公司的王宝临、朱大义、张志杰、王晨光、王超提供的宝贵案例。感谢何飞龙、唐浩栋、刘景奇、潘丽娜、张骏、彭翔宇、龚海峰、梁晓国、应蓓蓓、Simin Xiong、Ren Wu、John Wither等人为本书提供宝贵意见。感谢余志东、翟纲对本书的大力支持。

感谢电子工业出版社博文视点的宋亚东编辑在本书构架、写作过程中给予我们的持续帮助,他专业负责的态度让我们获益匪浅。

由于作者水平有限,书中不足之处在所难免,敬请专家和读者给予批评指正。


李志明