書馨卡幫你省薪 2024個(gè)人購(gòu)書報(bào)告 2024中圖網(wǎng)年度報(bào)告
歡迎光臨中圖網(wǎng) 請(qǐng) | 注冊(cè)

持久內(nèi)存編程

出版社:機(jī)械工業(yè)出版社出版時(shí)間:2021-04-01
開本: 24cm 頁(yè)數(shù): 24,293頁(yè)
中 圖 價(jià):¥65.5(5.5折) 定價(jià)  ¥119.0 登錄后可看到會(huì)員價(jià)
加入購(gòu)物車 收藏
運(yùn)費(fèi)6元,滿39元免運(yùn)費(fèi)
?新疆、西藏除外
本類五星書更多>
買過(guò)本商品的人還買了

持久內(nèi)存編程 版權(quán)信息

持久內(nèi)存編程 本書特色

適讀人群 :本書主要面向具有一定經(jīng)驗(yàn)的應(yīng)用程序開發(fā)人員,也適用于更廣泛的讀者,如系統(tǒng)管理員和架構(gòu)師、學(xué)生、講師,以及學(xué)術(shù)研究人員等。系統(tǒng)設(shè)計(jì)人員、內(nèi)核開發(fā)人員,以及任何對(duì)這項(xiàng)全球首本持久內(nèi)存編程和應(yīng)用的系統(tǒng)方法指南,本書強(qiáng)調(diào)以工程實(shí)踐為導(dǎo)向,通過(guò)大量的示例,全方位介紹持久內(nèi)存架構(gòu)、硬件及操作系統(tǒng)支持的整體技術(shù)細(xì)節(jié),幫助開發(fā)人員了解持久內(nèi)存編程的核心概念以及持久內(nèi)存編程的開發(fā)庫(kù)。 持久內(nèi)存技術(shù)是內(nèi)存領(lǐng)域革命性的技術(shù)。從根本上顛覆傳統(tǒng)的內(nèi)存-存儲(chǔ)架構(gòu),對(duì)整個(gè)產(chǎn)業(yè)界和學(xué)術(shù)界產(chǎn)生了深遠(yuǎn)的影響。 無(wú)論是初學(xué)者,還是經(jīng)驗(yàn)豐富的程序員,都可以使用本書作為持久內(nèi)存編程的綜合指南,了解持久內(nèi)存對(duì)軟硬件的要求,以及持久內(nèi)存在提升性能、縮短應(yīng)用程序啟動(dòng)時(shí)間方面的巨大潛力。 【讀者對(duì)象】 本書主要面向具有一定經(jīng)驗(yàn)的應(yīng)用程序開發(fā)人員,也適用于更廣泛的讀者,如系統(tǒng)管理員和架構(gòu)師、學(xué)生、講師,以及學(xué)術(shù)研究人員等。此外,系統(tǒng)設(shè)計(jì)人員、內(nèi)核開發(fā)人員,以及任何對(duì)這項(xiàng)新興技術(shù)感興趣的人都可以在本書中找到實(shí)用的內(nèi)容。

持久內(nèi)存編程 內(nèi)容簡(jiǎn)介

本書介紹了相關(guān)技術(shù)及其應(yīng)用前景, 涵蓋持久內(nèi)存的操作系統(tǒng)和硬件要求, 以及如何使用模擬和真實(shí)的持久內(nèi)存硬件創(chuàng)建開發(fā)環(huán)境。內(nèi)容包括: 持久內(nèi)存編程簡(jiǎn)介 ; 持久內(nèi)存架構(gòu)等。

持久內(nèi)存編程 目錄

第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 選擇正確的語(yǔ)義 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)語(yǔ)言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ù)制的未來(lái) 289

術(shù)語(yǔ)表 292


展開全部

持久內(nèi)存編程 作者簡(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性能分析支持,擁有超過(guò)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)在英特爾任職軟件工程師超過(guò)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è)超過(guò)15年,2004年畢業(yè)于英國(guó)諾桑比亞大學(xué),獲商業(yè)管理學(xué)士學(xué)位。

商品評(píng)論(0條)
暫無(wú)評(píng)論……
書友推薦
本類暢銷
返回頂部
中圖網(wǎng)
在線客服