viii
Chapter 11: Designing Data Structures for Persistent Memory���������������������������� 187
Contiguous Data Structures and Fragmentation ����������������������������������������������������������������������� 187
Internal and External Fragmentation ����������������������������������������������������������������������������������� 188
Atomicity and Consistency �������������������������������������������������������������������������������������������������� 189
Selective Persistence ���������������������������������������������������������������������������������������������������������� 193
Example Data Structures ����������������������������������������������������������������������������������������������������� 193
Summary����������������������������������������������������������������������������������������������������������������������������������� 206
Chapter 12: Debugging Persistent Memory Applications ������������������������������������� 207
pmemcheck for Valgrind ����������������������������������������������������������������������������������������������������������� 208
Stack Overflow Example ������������������������������������������������������������������������������������������������������ 208
Memory Leak Example �������������������������������������������������������������������������������������������������������� 209
Intel Inspector – Persistence Inspector ������������������������������������������������������������������������������������ 210
Stack Overflow Example ������������������������������������������������������������������������������������������������������ 211
Memory Leak Example �������������������������������������������������������������������������������������������������������� 212
Common Persistent Memory Programming Problems �������������������������������������������������������������� 214
Nonpersistent Stores ����������������������������������������������������������������������������������������������������������� 214
Stores Not Added into a Transaction ������������������������������������������������������������������������������������ 228
Memory Added to Two Different Transactions ��������������������������������������������������������������������� 233
Memory Overwrites ������������������������������������������������������������������������������������������������������������� 240
Unnecessary Flushes����������������������������������������������������������������������������������������������������������� 242
Out-of-Order Writes ������������������������������������������������������������������������������������������������������������� 247
Summary����������������������������������������������������������������������������������������������������������������������������������� 259
Chapter 13: Enabling Persistence Using a Real-World Application ���������������������� 261
The Database Example ������������������������������������������������������������������������������������������������������������� 262
Different Persistent Memory Enablement Approaches ������������������������������������������������������������� 262
Developing a Persistent Memory-Aware MariaDB* Storage Engine ����������������������������������������� 263
Understanding the Storage Layer ���������������������������������������������������������������������������������������� 264
Creating a Storage Engine Class ����������������������������������������������������������������������������������������� 265
Summary����������������������������������������������������������������������������������������������������������������������������������� 276
Table of ConTenTs
Précédent

- 9/457

Suivant