Computer ScienceScience & MathematicsEconomics & FinanceBusiness & ManagementPolitics & GovernmentHistoryPhilosophy

Programming Persistent Memory

A Comprehensive Guide for Developers

by Steve Scargall

Programming Persistent Memory

Subscribe to new books via telegram channel

DescriptionTable of ContentsDetailsHashtagsReport an issue

Book Description

Beginning and experienced programmers will use this comprehensive guide to persistent memory programming. You will understand how persistent memory brings together several new software/hardware requirements, and offers great promise for better performance and faster application startup times - a huge leap forward in byte-addressable capacity compared with current DRAM offerings.

This revolutionary new technology gives applications significant performance and capacity improvements over existing technologies. It requires a new way of thinking and developing, which makes this highly disruptive to the IT/computing industry. The full spectrum of industry sectors that will benefit from this technology include, but are not limited to, in-memory and traditional databases, AI, analytics, HPC, virtualization, and big data.

Programming Persistent Memory describes the technology and why it is exciting the industry. It covers the operating system and hardware requirements as well as how to create development environments using emulated or real persistent memory hardware. The book explains fundamental concepts; provides an introduction to persistent memory programming APIs for C, C++, JavaScript, and other languages; discusses RMDA with persistent memory; reviews security features; and presents many examples. Source code and examples that you can run on your own systems are included.

What You'll Learn: Understand what persistent memory is, what it does, and the value it brings to the industry; Become familiar with the operating system and hardware requirements to use persistent memory; Know the fundamentals of persistent memory programming: why it is different from current programming methods, and what developers need to keep in mind when programming for persistence; Look at persistent memory application development by example using the Persistent Memory Development Kit (PMDK); Design and optimize data structures for persistent memory; Study how real-world applications are modified to leverage persistent memory; Utilize the tools available for persistent memory programming, application performance profiling, and debugging.

This open book is licensed under a Creative Commons License (CC BY). You can download Programming Persistent Memory ebook for free in PDF format (9.2 MB).

Table of Contents

About the Author
About the Technical Reviewer
About the Contributors
Chapter 1
Introduction to Persistent Memory Programming
Chapter 2
Persistent Memory Architecture
Chapter 3
Operating System Support for Persistent Memory
Chapter 4
Fundamental Concepts of Persistent Memory Programming
Chapter 5
Introducing the Persistent Memory Development Kit
Chapter 6
libpmem: Low-Level Persistent Memory Support
Chapter 7
libpmemobj: A Native Transactional Object Store
Chapter 8
libpmemobj-cpp: The Adaptable Language - C++ and
Chapter 9
pmemkv: A Persistent In-­Memory Key-Value Store
Chapter 10
Volatile Use of Persistent Memory
Chapter 11
Designing Data Structures for Persistent Memory
Chapter 12
Debugging Persistent Memory Applications
Chapter 13
Enabling Persistence Using a Real-World Application
Chapter 14
Concurrency and Persistent Memory
Chapter 15
Profiling and Performance
Chapter 16
PMDK Internals: Important Algorithms and Data Structures
Chapter 17
Reliability, Availability, and Serviceability (RAS)
Chapter 18
Remote Persistent Memory
Chapter 19
Advanced Topics
Appendix A
How to Install NDCTL and DAXCTL on Linux
Appendix B
How to Install the Persistent Memory Development Kit (PMDK)
Appendix C
How to Install IPMCTL on Linux and Windows
Appendix D
Java for Persistent Memory
Appendix E
The Future of Remote Persistent Memory Replication

Book Details

Programming Persistent Memory
Computer Science
ISBN13 Digital
ISBN10 Digital
PDF Size
9.2 MB

Related Books

This book is a modern guide for all C++ programmers to learn Threading Building Blocks (TBB). Written by TBB and parallel programming experts, this book reflects their collective decades of experience in developing and teaching parallel programming with TBB, offering their insights in an approachable manner. Throughout the book the authors present ...
XcalableMP PGAS Programming Language
XcalableMP is a directive-based parallel programming language based on Fortran and C, supporting a Partitioned Global Address Space (PGAS) model for distributed memory parallel systems. This open book presents XcalableMP language from its programming model and basic concept to the experience and performance of applications described in XcalableMP.�...
Data Parallel C++
Learn how to accelerate C++ programs using data parallelism. This open book enables C++ programmers to be at the forefront of this exciting and important new development that is helping to push computing to new levels. It is full of practical advice, detailed explanations, and code examples to illustrate key topics. Data parallelism in C++ enables...
Programming Languages and Systems
This book constitutes the proceedings of the 27th European Symposium on Programming, ESOP 2018, which took place in Thessaloniki, Greece in April 2018, held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2018. The 36 papers presented in this volume were carefully reviewed and selected from 114 submissions. The ...
Optimizing HPC Applications with Intel Cluster Tools
Optimizing HPC Applications with Intel Cluster Tools takes the reader on a tour of the fast-growing area of high performance computing and the optimization of hybrid programs. These programs typically combine distributed memory and shared memory programming models and use the Message Passing Interface (MPI) and OpenMP for multi-threading to achieve...
Learn Programming
This book is aimed at readers who are interested in software development but have very little to no prior experience. The book focuses on teaching the core principles around software development. It uses several technologies to this goal (e.g. C, Python, JavaScript, HTML, etc.) but is not a book about the technologies themselves. The reader will le...