x
Chapter 16: PMDK Internals: Important Algorithms and Data Structures ������������ 313
A Pool of Persistent Memory: High-Level Architecture Overview ��������������������������������������������� 313
The Uncertainty of Memory Mapping: Persistent Memory Object Identifier ����������������������������� 315
Persistent Thread Local Storage: Using Lanes �������������������������������������������������������������������������� 318
Ensuring Power-Fail Atomicity: Redo and Undo Logging ���������������������������������������������������������� 320
Transaction Redo Logging ��������������������������������������������������������������������������������������������������� 320
Transaction Undo Logging ��������������������������������������������������������������������������������������������������� 321
libpmemobj Unified Logging ������������������������������������������������������������������������������������������������ 322
Persistent Allocations: The Interface of a Transactional Persistent Allocator ���������������������������� 323
Persistent Memory Heap Management: Allocator Design for Persistent Memory �������������������� 324
ACID Transactions: Efficient Low-Level Persistent Transactions ����������������������������������������������� 328
Lazy Reinitialization of Variables: Storing the Volatile State on Persistent Memory ����������������� 330
Summary����������������������������������������������������������������������������������������������������������������������������������� 331
Chapter 17: Reliability, Availability, and Serviceability (RAS) ������������������������������ 333
Dealing with Uncorrectable Errors �������������������������������������������������������������������������������������������� 333
Consumed Uncorrectable Error Handling ���������������������������������������������������������������������������� 334
Unconsumed Uncorrectable Error Handling ������������������������������������������������������������������������ 336
Clearing Uncorrectable Errors ��������������������������������������������������������������������������������������������� 339
Device Health ���������������������������������������������������������������������������������������������������������������������������� 339
ACPI-Defined Health Functions (_NCH, _NBS) ��������������������������������������������������������������������� 342
Vendor-Specific Device Health (_DSMs) ������������������������������������������������������������������������������ 342
ACPI NFIT Health Event Notification������������������������������������������������������������������������������������� 343
Unsafe/Dirty Shutdown ������������������������������������������������������������������������������������������������������������� 343
Application Utilization of Data Loss Count (DLC) ����������������������������������������������������������������� 344
Summary����������������������������������������������������������������������������������������������������������������������������������� 346
Chapter 18: Remote Persistent Memory ��������������������������������������������������������������� 347
RDMA Networking Protocols ����������������������������������������������������������������������������������������������������� 348
Goals of the Initial Remote Persistent Memory Architecture ���������������������������������������������������� 351
Guaranteeing Remote Persistence �������������������������������������������������������������������������������������������� 351
General-Purpose Remote Replication Method ��������������������������������������������������������������������� 353
Table of ConTenTs
Chapter 16: PMDK Internals: Important Algorithms and Data Structures ������������ 313
A Pool of Persistent Memory: High-Level Architecture Overview ��������������������������������������������� 313
The Uncertainty of Memory Mapping: Persistent Memory Object Identifier ����������������������������� 315
Persistent Thread Local Storage: Using Lanes �������������������������������������������������������������������������� 318
Ensuring Power-Fail Atomicity: Redo and Undo Logging ���������������������������������������������������������� 320
Transaction Redo Logging ��������������������������������������������������������������������������������������������������� 320
Transaction Undo Logging ��������������������������������������������������������������������������������������������������� 321
libpmemobj Unified Logging ������������������������������������������������������������������������������������������������ 322
Persistent Allocations: The Interface of a Transactional Persistent Allocator ���������������������������� 323
Persistent Memory Heap Management: Allocator Design for Persistent Memory �������������������� 324
ACID Transactions: Efficient Low-Level Persistent Transactions ����������������������������������������������� 328
Lazy Reinitialization of Variables: Storing the Volatile State on Persistent Memory ����������������� 330
Summary����������������������������������������������������������������������������������������������������������������������������������� 331
Chapter 17: Reliability, Availability, and Serviceability (RAS) ������������������������������ 333
Dealing with Uncorrectable Errors �������������������������������������������������������������������������������������������� 333
Consumed Uncorrectable Error Handling ���������������������������������������������������������������������������� 334
Unconsumed Uncorrectable Error Handling ������������������������������������������������������������������������ 336
Clearing Uncorrectable Errors ��������������������������������������������������������������������������������������������� 339
Device Health ���������������������������������������������������������������������������������������������������������������������������� 339
ACPI-Defined Health Functions (_NCH, _NBS) ��������������������������������������������������������������������� 342
Vendor-Specific Device Health (_DSMs) ������������������������������������������������������������������������������ 342
ACPI NFIT Health Event Notification������������������������������������������������������������������������������������� 343
Unsafe/Dirty Shutdown ������������������������������������������������������������������������������������������������������������� 343
Application Utilization of Data Loss Count (DLC) ����������������������������������������������������������������� 344
Summary����������������������������������������������������������������������������������������������������������������������������������� 346
Chapter 18: Remote Persistent Memory ��������������������������������������������������������������� 347
RDMA Networking Protocols ����������������������������������������������������������������������������������������������������� 348
Goals of the Initial Remote Persistent Memory Architecture ���������������������������������������������������� 351
Guaranteeing Remote Persistence �������������������������������������������������������������������������������������������� 351
General-Purpose Remote Replication Method ��������������������������������������������������������������������� 353
Table of ConTenTs
