持久內存架構與工程實踐

李志明 等

買這商品的人也買了...

商品描述

本書以工程實踐為導向,詳細闡述了持久內存的整體技術細節。本書對持久內存的硬件和固件架構、編程模型、優化方法等方面都進行了深入剖析。從架構選擇、方案實施、性能調優幾個方面,對數據庫、大數據等場景進行了細致介紹,以幫助讀者建立掌握持久內存應用的系統方法。本書還對持久內存和內存計算的未來發展趨勢也進行了探討,通過拋磚引玉,希望對業界人員在該領域的進一步創新有所幫助。

作者簡介

李志明

英特爾數據中心集團平台架構師、首席工程師。長期從事服務器系統的硬件架構和設計開發工作,近年來致力於計算和存儲技術在數據中心的應用,解決新興業務挑戰。畢業於上海交通大學電子工程系,擁有碩士學位。


吳國安

英特爾持久內存產品工程部經理,在IA架構、性能優化、軟件協同硬件開發方面有多年工作經驗。目前主要支持客戶應用英特爾數據中心級持久內存,進行軟件開發和應用適配,提供IA架構上的客戶方案技術諮詢和支持。在2012年加入英特爾之前,任職意法半導體負責數字電視軟件開發和集成的工作。2005年碩士畢業於上海交通大學。


李翔

就職於英特爾數據中心部門,主要從事持久內存的研發與調試,深入參與持久內存初代產品的調試與驗證及未來產品的設計與規劃,對持久內存的架構與應用有深入的理解。碩士畢業於上海大學信號與信息處理專業,先後就職於華為、思科等科技公司從事產品研發與調試工作。


斯佩峰

英特爾數據中心集團資深軟件工程師。長期從事x86服務器的固件開發和軟件性能調優,目前專注於持久內存對數據庫及存儲類應用的優化。


杜凡

資深Linux內核工程師,有十餘年的Linux內核開發、性能調優經驗。現就職於英特爾,在持久內存方向深耕數年。熟知英特爾持久內存產品,對Linux內核NVDIMM和內存管理子系統有深入理解。深度參與持久內存在不同應用場景的調研與開發,積累了豐富的持久內存在互聯網企業中應用經驗。曾就職於WindRiver,負責網絡協議加密產品的開發, 以及網絡協議棧XFRM模塊的社區維護工作。


束文輝

英特爾數據中心集團解決方案架構師,專注於大型雲計算客戶的業務性能特徵化與至強平台與非易失性存儲的功耗性能調優。具有云計算系統開發經驗,熟悉大型IT及數據中心的管理與運維體系,如Web/DB、虛擬化、網絡和存儲等。畢業於南京大學軟件工程系,擁有碩士學位。


徐鋮

現就職於英特爾亞太研發有限公司開源技術部門,從事多年大數據技術研究和開發工作,目前主要專注於基於英特爾平台的大數據技術優化。積極的開源項目貢獻者,是Apache Hive、Apache ORC和Apache Commons項目的Committer。


胡寅瑋

長期從事軟件開發和信息技術管理工作。現任英特爾數據中心事業部,雲計算軟件研發部門經理,致力於服務器產品的軟件和固件研發、系統集成及性能優化。

目錄大綱

目錄

第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