注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書科學(xué)技術(shù)工業(yè)技術(shù)建筑科學(xué)建筑設(shè)計(jì)持久內(nèi)存編程

持久內(nèi)存編程

持久內(nèi)存編程

定 價(jià):¥119.00

作 者: [美] 史蒂夫·斯卡格爾(Steve Scargall) 著,吳國(guó)安 魏劍 楊錦文 等 譯
出版社: 機(jī)械工業(yè)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787111676744 出版時(shí)間: 2021-04-01 包裝: 平裝
開本: 16開 頁(yè)數(shù): 320 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書介紹了持久內(nèi)存編程技術(shù)應(yīng)用前景,涵蓋持久內(nèi)存的操作系統(tǒng)和硬件要求,以及如何使用模擬和真實(shí)的持久內(nèi)存硬件創(chuàng)建開發(fā)環(huán)境。本書對(duì)持久內(nèi)存的基本概念進(jìn)行了解釋,介紹了面向 C、C++、JavaScript 和其他語言的持久內(nèi)存編程 API,探討了采用持久內(nèi)存的 RDMA,回顧了安全特性,并展示了許多示例。讀者可以在自己的系統(tǒng)上運(yùn)行本書提供的源代碼和示例。

作者簡(jiǎn)介

  【作者簡(jiǎn)介】 Steve Scargall是英特爾公司的一名持久內(nèi)存軟件/云架構(gòu)師。作為一名技術(shù)宣傳官,Steve Scargall負(fù)責(zé)提供技術(shù)的啟動(dòng)與開發(fā)支持工作,以便將持久內(nèi)存技術(shù)集成到軟件棧、應(yīng)用程序和硬件架構(gòu)中,包括在專有和開源開發(fā)工作方面與獨(dú)立軟件開發(fā)商(ISV)進(jìn)行合作,以及與原始設(shè)備制造商(OEM)和云服務(wù)提供商(CSP)等合作。 Steve曾在英國(guó)雷丁大學(xué)潛心學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)、人工智能和機(jī)器人等知識(shí),獲得了計(jì)算機(jī)科學(xué)和控制論專業(yè)學(xué)士學(xué)位。他曾負(fù)責(zé)為Solaris Kernel、ZFS和UFS文件系統(tǒng)提供x86架構(gòu)與SPARC性能分析支持,擁有超過19年的豐富經(jīng)驗(yàn)。在Sun Microsystems和Oracle工作期間,他負(fù)責(zé)企業(yè)和云環(huán)境中的DTrace調(diào)試工作。 【譯者簡(jiǎn)介】 吳國(guó)安(Dennis)2005年于上海交通大學(xué)碩士研究生畢業(yè)。目前是英特爾持久內(nèi)存工程部經(jīng)理,在IA架構(gòu)、性能優(yōu)化、軟件協(xié)同硬件開發(fā)方面有多年工作經(jīng)驗(yàn)。目前主要支持客戶應(yīng)用英特爾數(shù)據(jù)中心級(jí)持久化內(nèi)存進(jìn)行軟件開發(fā)和應(yīng)用適配,提供IA架構(gòu)上的客戶方案技術(shù)咨詢和支持。在2012年加入英特爾之前,任職意法半導(dǎo)體,負(fù)責(zé)數(shù)字電視軟件開發(fā)和集成的工作。魏劍(Terry Wei)是英特爾傲騰技術(shù)方案專家,在英特爾供職16年,曾擔(dān)任硬件開發(fā)、客戶技術(shù)支持等多種職位,目前主要致力于傲騰存儲(chǔ)技術(shù)在中國(guó)用戶環(huán)境的技術(shù)適配和應(yīng)用推廣方面的工作。楊錦文(Jinwen Yang)負(fù)責(zé)英特爾中國(guó)區(qū)云計(jì)算和互聯(lián)網(wǎng)行業(yè)的戰(zhàn)略規(guī)劃和數(shù)據(jù)中心產(chǎn)品線的市場(chǎng)導(dǎo)入,并整合內(nèi)部和外部技術(shù)資源,不斷優(yōu)化數(shù)據(jù)中心的全棧式解決方案,專注于服務(wù)客戶的多樣化需求。吳少慧(Shaohui Wu)目前是英特爾持久內(nèi)存工程師,擁有清華大學(xué)工程物理系的工程學(xué)士學(xué)位以及北京有色金屬研究總院金屬材料及熱處理專業(yè)的工程碩士學(xué)位。2018年入職英特爾之前,從事半導(dǎo)體芯片的產(chǎn)品開發(fā)與制造方面的工作,目前主要致力于傲騰持久內(nèi)存生態(tài)環(huán)境的建立,并推廣持久內(nèi)存在中國(guó)區(qū)的應(yīng)用。許春曄(Chunye Xu)是英特爾公司的持久內(nèi)存應(yīng)用工程師,致力于客戶持久內(nèi)存技術(shù)支持和工作負(fù)載調(diào)試工作,曾在英特爾通信和設(shè)備部門負(fù)責(zé)系統(tǒng)調(diào)試和自動(dòng)化測(cè)試工作。他畢業(yè)于河北大學(xué),擁有計(jì)算機(jī)應(yīng)用碩士學(xué)位。林翔(Xiang Lin)是英特爾公司的平臺(tái)應(yīng)用工程師,目前主要致力于持久內(nèi)存的應(yīng)用和研究工作,包括工作負(fù)載的應(yīng)用和性能優(yōu)化,同時(shí)還負(fù)責(zé)客戶支持方面的工作。此外,他對(duì)圖形圖像處理領(lǐng)域有著濃厚的興趣。王龍(Long Wang)是英特爾公司的軟件工程師,當(dāng)前主要致力于持久內(nèi)存相關(guān)的數(shù)據(jù)庫(kù)開發(fā)與性能優(yōu)化,同時(shí)還參與PMDK項(xiàng)目,例如遠(yuǎn)程持久內(nèi)存訪問的集成開發(fā)工作。李曉冉(Xiaoran Li)2018年畢業(yè)于日本北海道大學(xué)信息與科學(xué)學(xué)院,目前就職于英特爾數(shù)據(jù)中心部門,從事傲騰持久內(nèi)存研發(fā)工作,對(duì)系統(tǒng)存儲(chǔ)、云計(jì)算、并行計(jì)算有濃厚興趣。斯佩峰(Peifeng Si)是英特爾數(shù)據(jù)中心部門資深軟件工程師。長(zhǎng)期從事x86服務(wù)器的固件開發(fā)和軟件性能調(diào)優(yōu),目前專注于持久內(nèi)存對(duì)數(shù)據(jù)庫(kù)及存儲(chǔ)類應(yīng)用的優(yōu)化。陶少玉(Shaoyu Tao)在英特爾任職軟件工程師超過5年,在加入英特爾的前幾年,他主要從事Linux內(nèi)核、系統(tǒng)調(diào)試相關(guān)工作,目前專注于基于持久內(nèi)存的數(shù)據(jù)庫(kù)優(yōu)化相關(guān)工作。高明(Ming Gao)是英特爾公司中國(guó)區(qū)行業(yè)解決方案部互聯(lián)網(wǎng)行業(yè)技術(shù)總監(jiān),他主要負(fù)責(zé)英特爾與中國(guó)互聯(lián)網(wǎng)公司的技術(shù)戰(zhàn)略合作,助力中國(guó)互聯(lián)網(wǎng)公司利用英特爾的產(chǎn)品和技術(shù)構(gòu)建云計(jì)算解決方案,對(duì)包括人工智能在內(nèi)的各類工作負(fù)載進(jìn)行性能優(yōu)化。高明獲得了北京郵電大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)碩士學(xué)位。崔峰 2015年5月起就職于京天石易通信息技術(shù)有限公司,至今從業(yè)超過15年,2004年畢業(yè)于英國(guó)諾桑比亞大學(xué),獲商業(yè)管理學(xué)士學(xué)位。

圖書目錄

第1章 持久內(nèi)存編程簡(jiǎn)介 1
1.1 高級(jí)示例程序 2
1.1.1 有何區(qū)別 4
1.1.2 性能差異 5
1.1.3 程序復(fù)雜性 5
1.1.4 libpmemkv如何運(yùn)行 5
1.2 后文提要 6
1.3 總結(jié) 7
第2章 持久內(nèi)存架構(gòu) 8
2.1 持久內(nèi)存的特性 8
2.2 持久內(nèi)存的平臺(tái)支持 9
2.3 緩存層級(jí) 10
2.4 電源故障保護(hù)域 11
2.5 刷新、排序和屏障操作的需求 13
2.6 數(shù)據(jù)可見性 16
2.7 用于持久內(nèi)存的英特爾機(jī)器指令 16
2.8 檢測(cè)平臺(tái)功能 17
2.9 應(yīng)用程序啟動(dòng)與恢復(fù) 18
2.10 后文提要 20
2.11 總結(jié) 20
第3章 持久內(nèi)存的操作系統(tǒng)支持 21
3.1 內(nèi)存和存儲(chǔ)的操作系統(tǒng)支持 21
3.2 持久內(nèi)存用作塊存儲(chǔ) 22
3.3 持久內(nèi)存感知型文件系統(tǒng) 23
3.4 內(nèi)存映射文件 24
3.5 持久內(nèi)存直接訪問 30
3.6 總結(jié) 37
第4章 持久內(nèi)存編程的基本概念 38
4.1 有何區(qū)別 38
4.2 原子更新 39
4.3 事務(wù) 39
4.3.1 原子性 39
4.3.2 一致性 40
4.3.3 隔離性 40
4.3.4 持久性 40
4.4 刷新不具有事務(wù)性 41
4.5 啟動(dòng)時(shí)職責(zé) 41
4.6 針對(duì)硬件配置進(jìn)行調(diào)優(yōu) 41
4.7 總結(jié) 42
第5章 持久內(nèi)存開發(fā)套件簡(jiǎn)介 43
5.1 背景 43
5.2 選擇正確的語義 44
5.3 易失性庫(kù) 44
5.3.1 libmemkind 44
5.3.2 libvmemcache 45
5.3.3 libvmem 46
5.4 持久性庫(kù) 46
5.4.1 libpmem 46
5.4.2 libpmemobj 46
5.4.3 libpmemobj-cpp 47
5.4.4 libpmemkv 47
5.4.5 libpmemlog 47
5.4.6 libpmemblk 48
5.5 工具和命令程序 48
5.5.1 pmempool 48
5.5.2 pmemcheck 48
5.5.3 pmreorder 49
5.6 總結(jié) 49
第6章 libpmem:底層持久內(nèi)存支持 50
6.1 使用庫(kù) 51
6.2 映射文件 51
6.3 復(fù)制到持久內(nèi)存 52
6.4 分解刷新步驟 53
6.5 總結(jié) 54
第7章 libpmemobj:原生事務(wù)性對(duì)象存儲(chǔ) 55
7.1 什么是libpmemobj 55
7.2 為什么不使用malloc() 55
7.3 組合操作 56
7.4 內(nèi)存池 56
7.4.1 創(chuàng)建內(nèi)存池 56
7.4.2 池對(duì)象指針和根對(duì)象 59
7.4.3 打開內(nèi)存池并從內(nèi)存池中讀取數(shù)據(jù) 60
7.5 內(nèi)存池集 61
7.5.1 串聯(lián)池集 61
7.5.2 副本池集 62
7.6 管理內(nèi)存池和池集 62
7.7 類型化對(duì)象標(biāo)識(shí)符 63
7.8 分配內(nèi)存 63
7.9 持久保存數(shù)據(jù) 63
7.9.1 原子操作 64
7.9.2 保留/發(fā)布API 66
7.9.3 事務(wù)API 68
7.9.4 可選標(biāo)記 71
7.9.5 持久保存數(shù)據(jù)總結(jié) 71
7.10 libpmemobj的API可提供保障 71
7.11 管理庫(kù)操作 72
7.12 調(diào)試與錯(cuò)誤處理 72
7.13 總結(jié) 74
第8章 libpmemobj-cpp:自適應(yīng)語言C++和持久內(nèi)存 75
8.1 簡(jiǎn)介 75
8.2 元編程 75
8.2.1 持久指針 76
8.2.2 事務(wù) 76
8.2.3 創(chuàng)建快照 77
8.2.4 分配 79
8.3 C++標(biāo)準(zhǔn)限制 80
8.3.1 對(duì)象的生命周期 80
8.3.2 平凡類型 81
8.3.3 對(duì)象布局 82
8.3.4 指針 83
8.3.5 限制總結(jié) 85
8.4 簡(jiǎn)化持久性 85
8.5 生態(tài)系統(tǒng) 91
8.5.1 持久容器 91
8.5.2 持久容器示例 91
8.6 總結(jié) 94
第9章 pmemkv:持久內(nèi)存鍵值存儲(chǔ) 95
9.1 pmemkv架構(gòu) 97
9.2 電話簿示例 99
9.3 讓持久內(nèi)存更靠近云 102
9.4 總結(jié) 103
第10章 持久內(nèi)存編程的易失性用途 104
10.1 簡(jiǎn)介 104
10.2 背景 105
10.2.1 內(nèi)存分配 105
10.2.2 工作原理 105
10.2.3 支持的內(nèi)存“類型” 105
10.3 memkind API 107
10.3.1 類型管理API 107
10.3.2 堆管理API 111
10.3.3 類型配置管理 112
10.3.4 更多memkind代碼示例 113
10.4 面向PMEM類型的C++分配器 113
10.4.1 pmem::allocator方法 114
10.4.2 嵌套容器 114
10.5 C++示例 114
10.5.1 使用pmem::allocator 115
10.5.2 創(chuàng)建字符串向量 115
10.6 使用持久內(nèi)存擴(kuò)展易失性內(nèi)存 116
10.7 libvmemcache:面向大容量持久內(nèi)存的高效易失性鍵值緩存 120
10.7.1 libvmemcache概述 120
10.7.2 libvmemcache設(shè)計(jì) 122
10.7.3 使用libvmemcache 124
10.8 總結(jié) 126
第11章 設(shè)計(jì)適用于持久內(nèi)存的數(shù)據(jù)結(jié)構(gòu) 127
11.1 連續(xù)數(shù)據(jù)結(jié)構(gòu)和碎片化 127
11.1.1 內(nèi)部和外部碎片化 127
11.1.2 原子性和一致性 128
11.1.3 選擇性持久化 131
11.1.4 示例數(shù)據(jù)結(jié)構(gòu) 131
11.2 總結(jié) 140
第12章 調(diào)試持久內(nèi)存應(yīng)用程序 141
12.1 用于Valgrind的pmemcheck 142
12.1.1 棧溢出示例 142
12.1.2 內(nèi)存泄漏示例 143
12.2 Intel Inspector?—?Persistence Inspector 144
12.2.1 棧溢出示例 144
12.2.2 內(nèi)存泄漏示例 145
12.3 常見的持久內(nèi)存編程問題 146
12.3.1 非持久存儲(chǔ) 146
12.3.2 數(shù)據(jù)存儲(chǔ)未添加到事務(wù) 157
12.3.3 將一個(gè)內(nèi)存對(duì)象添加至兩個(gè)不同的事務(wù) 160
12.3.4 內(nèi)存覆寫 165
12.3.5 非必要刷新 166
12.3.6 亂序?qū)懭? 170
12.4 總結(jié) 179
第13章 實(shí)際應(yīng)用程序中實(shí)現(xiàn)持久性 180
13.1 數(shù)據(jù)庫(kù)示例 180
13.2 不同的持久內(nèi)存實(shí)現(xiàn)方式 181
13.3 開發(fā)持久內(nèi)存感知型MariaDB*存儲(chǔ)引擎 181
13.3.1 了解存儲(chǔ)層 182
13.3.2 創(chuàng)建存儲(chǔ)引擎類 183
13.4 總結(jié) 191
第14章 并發(fā)和持久內(nèi)存 192
14.1 事務(wù)與多線程 192
14.2 持久內(nèi)存上的互斥體 196
14.3 原子操作與持久內(nèi)存 198
14.4 持久內(nèi)存的并發(fā)數(shù)據(jù)結(jié)構(gòu) 198
14.4.1 并發(fā)有序映射 199
14.4.2 并發(fā)散列映射 202
14.5 總結(jié) 202
第15章 分析與性能 204
15.1 簡(jiǎn)介 204
15.2 性能分析概念 204
15.2.1 計(jì)算受限與內(nèi)存受限 204
15.2.2 內(nèi)存延時(shí)與內(nèi)存容量 205
15.2.3 讀取與寫入性能 205
15.2.4 內(nèi)存訪問模式 205
15.2.5 I/O存儲(chǔ)受限的工作負(fù)載 205
15.3 確定工作負(fù)載是否適合持久內(nèi)存 206
15.3.1 易失性用例 206
15.3.2 需要持久性的用例 208
15.4 使用持久內(nèi)存的工作負(fù)載性能分析 209
15.4.1 確定工作負(fù)載特性 210
15.4.2 內(nèi)存帶寬與延時(shí) 210
15.4.3 持久內(nèi)存讀寫比率 211
15.4.4 工作集大小與內(nèi)存占用空間大小 211
15.4.5 非一致內(nèi)存架構(gòu)行為 211
15.4.6 優(yōu)化面向持久內(nèi)存的軟件 212
15.5 總結(jié) 215
第16章 PMDK內(nèi)部組件:重要算法和數(shù)據(jù)結(jié)構(gòu) 216
16.1 持久內(nèi)存池:高層架構(gòu)概覽 216
16.2 內(nèi)存映射的不確定性:持久內(nèi)存對(duì)象標(biāo)識(shí)符 218
16.3 持久化線程本地存儲(chǔ):使用通道 220
16.4 確保電源故障原子性:重做日志和撤銷日志 220
16.4.1 事務(wù)重做日志 221
16.4.2 事務(wù)撤銷日志 221
16.4.3 libpmemobj統(tǒng)一日志 222
16.5 持久分配:事務(wù)持久分配器的接口 223
16.6 持久內(nèi)存堆管理:持久內(nèi)存分配器設(shè)計(jì) 223
16.7 ACID事務(wù):高效的底層持久事務(wù) 226
16.8 延遲重新初始化變量:將易失性狀態(tài)存儲(chǔ)在持久內(nèi)存上 227
16.9 總結(jié) 228
第17章 可靠性、可用性與可維護(hù)性 229
17.1 處理不可糾正錯(cuò)誤 229
17.1.1 已使用的不可糾正錯(cuò)誤處理 230
17.1.2 未使用的不可糾正錯(cuò)誤處理 231
17.1.3 清除不可糾正錯(cuò)誤 234
17.2 設(shè)備狀態(tài) 234
17.2.1 ACPI定義的設(shè)備狀態(tài)函數(shù)(_NCH,_NBS) 236
17.2.2 特定供應(yīng)商的設(shè)備狀態(tài)(_DSM) 236
17.2.3 ACPI NFIT狀態(tài)事件通知 236
17.3 不安全/異常關(guān)機(jī) 237
17.4 總結(jié) 238
第18章 遠(yuǎn)程持久內(nèi)存 239
18.1 RDMA網(wǎng)絡(luò)協(xié)議 240
18.2 初始遠(yuǎn)程持久內(nèi)存架構(gòu)的目標(biāo) 242
18.3 確保遠(yuǎn)程持久性 242
18.3.1 通用遠(yuǎn)程復(fù)制方法 243
18.3.2 設(shè)備遠(yuǎn)程復(fù)制方法 244
18.4 一般軟件架構(gòu) 246
18.5 librpmem架構(gòu)及其在復(fù)制中的使用 246
18.5.1 使用內(nèi)存池集配置遠(yuǎn)程復(fù)制 249
18.5.2 性能注意事項(xiàng) 249
18.5.3 遠(yuǎn)程復(fù)制錯(cuò)誤處理 250
18.5.4 向復(fù)制世界“問好” 251
18.6 總結(jié) 254
第19章 高級(jí)主題 256
19.1 非一致性內(nèi)存訪問 256
19.1.1 NUMACTL Linux程序 257
19.1.2 NDCTL Linux程序 258
19.1.3 英特爾內(nèi)存延遲檢查器程序 259
19.1.4 NUMASTAT程序 260
19.1.5 英特爾VTune Profiler —Platform Profiler 261
19.1.6 IPMCTL程序 261
19.1.7 BIOS調(diào)優(yōu)選項(xiàng) 261
19.1.8 自動(dòng)NUMA平衡 261
19.2 使用具有持久內(nèi)存的卷管理器 263
19.3 mmap()的MAP_SYNC標(biāo)記 264
19.4 總結(jié) 265
附錄A 如何在Linux上安裝NDCTL和DAXCTL 266
附錄B 如何安裝持久內(nèi)存開發(fā)套件 271
附錄C 如何在Linux和Windows上安裝IPMCTL 277
附錄D 面向持久內(nèi)存的Java 282
附錄E 遠(yuǎn)程持久內(nèi)存復(fù)制的未來 289
術(shù)語表 292

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)