SlideShare a Scribd company logo
DCG
Data Center Group
Persistent Memory Programming:
The Current State of the Ecosystem
MSST 2017
Andy Rudoff
Non-Volatile Memory Software Architect
Intel Corporation
DCG
Data Center Group 2
Persistent Memory
3
Optimized System Interconnect
Reach full potential of 3D XPoint™ Technology
by connecting it as Memory
NVM Express* (NVMe)
Sources: “Storage as Fast as the rest of the system” 2016 IEEE 8th International Memory Workshop and measurement,
Intel® Optane™ SSD measurements and Intel P3700 measurements, and technology projections
(4k)
DCG
Data Center Group 4
Java PersistentSortedMap
4
PersistentSortedMap employees = new PersistentSortedMap();
…
employees.put(id, data);
See “pilot” project at: https://github.com/pmem/pcj
No flush calls.
Transactional.
Java library handles it all.
DCG
Data Center Group 5
How Did We Get from a DIMM to a Java API?
Persistent Memory High-Level Language Support
5
PersistentSortedMap
employees.put(id, data);
DCG
Data Center Group 6
How Did We Get from a DIMM to a Java API?
Persistent Memory High-Level Language Support
6
PersistentSortedMap
employees.put(id, data);
Programming
Models
DCG
Data Center Group 7
“Programming Model”
At least four meanings…
1. Interface between HW and SW
2. Instruction Set Architecture (ISA)
3. Exposed to Applications (by the OS)
4. The Programmer Experience
DCG
Data Center Group 8
Programming Model:
SW Interface to HW
8
Core
L1 L1
L2
L3
Core
L1 L1
L2
NVDIMM
NVDIMM
Memory Subsystem
…
Memory bus
DCG
Data Center Group 9
Programming Model:
SW Interface to HW
9
Core
L1 L1
L2
L3
Core
L1 L1
L2
NVDIMM
NVDIMM
Memory Subsystem
…
Memory bus
Result:
Persistent Memory hardware
accessed like memory
(cache coherent).
Exposed by ACPI 6.0+ on x86.
DCG
Data Center Group 10
Programming Model:
Instruction Set Architecture
10
Core
L1 L1
L2
L3
Core
L1 L1
L2
NVDIMM
NVDIMM
Memory Subsystem
…
persistent
domain
MOV
CLWB
DCG
Data Center Group 11
Programming Model:
Instruction Set Architecture
11
Core
L1 L1
L2
L3
Core
L1 L1
L2
NVDIMM
NVDIMM
Memory Subsystem
…
persistent
domain
MOV
CLWB
Result:
Stores flushed from CPU cache,
globally-visible  Persistent (on x86)
DCG
Data Center Group 1212
NVDIMM
User
Space
Kernel
Space
Standard
File API
NVDIMM Driver
Application
File System
ApplicationApplication
Standard
Raw Device
Access
Load/Store
Management Library
Management UI
Standard
File API
PM-Aware
File System
MMU
Mappings
Programming Model:
Exposing to Applications
DCG
Data Center Group 1313
NVDIMM
User
Space
Kernel
Space
Standard
File API
NVDIMM Driver
Application
File System
ApplicationApplication
Standard
Raw Device
Access
Block File Memory
Load/Store
Management Library
Management UI
Standard
File API
Mgmt.
PM-Aware
File System
MMU
Mappings
SNIA NVM Programming Model
(Persistent Memory Portion)
DCG
Data Center Group 1414
NVDIMM
User
Space
Kernel
Space
Application
Load/Store
Standard
File API
PM-Aware
File System
MMU
Mappings No Page Cache
Result:
Direct Access (DAX)
Memory-Mapped Files
The Heart of the PM Programming Model
DCG
Data Center Group 1515
NVDIMM
Kernel
Space
Application
Load/Store
Standard
File API
PM-Aware
File System
MMU
Mappings
Result:
Safer, less error-prone,
idiomatic in common languages
Programming Model:
The Programmer Experience
Language Runtime
Libraries
Tools
DCG
Data Center Group 16
NVM Libraries: pmem.io
C/C++ on Linux and Windows
16
NVDIMM
User
Space
Kernel
Space
Application
Load/Store
Standard
File API
PM-Aware
File System
MMU
Mappings
NVM Libraries
• Open Source
• http://pmem.io
• libpmem
• libpmemobj
• libpmemblk
• libpmemlog
• libvmem
Transactional
DCG
Data Center Group 17
libpmemobj
Application
libpmem
Load/Store
memory-mapped pmem
libpmemobj
transactionsatomic
operations
allocatorlists
locks
API API API
DCG
Data Center Group 18
OS Detection of NVDIMMs ACPI 6.0+
OS Exposes pmem to apps
DAX provides SNIA Programming Model
Fully supported:
• Linux (ext4, XFS)
• Windows (NTFS)
OS Supports Optimized
Flush
Specified, but evolving (ask when safe)
• Linux: unsafe except Device DAX
• (and new file systems like NOVA)
• Windows: safe
Remote Flush
Proposals under discussion
(works today with extra round trip)
Deep Flush Upcoming Specification
Transactions, Allocators
Built on above via libraries and languages:
• http://pmem.io
Much more language support to do
Virtualization
All VMMs planning to support PM in guest
(KVM changes upstream, Xen coming, others too…)
18
State of Ecosystem Today
DCG
Data Center Group 19
NVM Programming Model Resources
www.snia.org/PM
SNIA Standards Portfolio
• NVM Programming Model v1.2a – Draft for public review
• NVM Programming Model v1.1- SNIA Technical Position
• NVM Programming Model v1.0 - SNIA Technical Position
SNIA Technical White Papers
• NVM PM Remote Access for High Availability
• Persistent Memory Atomics and Transactions
SNIA Videos and Presentations
• The SNIA NVM Programming Model – Latest
Developments and Challenges
• Persistent Memory Summit 2017
DCG
Data Center Group 20
NVM Libraries
http://pmem.io
C/C++
 C++ bindings: http://pmem.io/nvml/cpp_obj
 libpmemobj page: http://pmem.io/nvml/libpmemobj
 Upstream in some distros already, Windows preview available
NVML Source Tree
 https://github.com/pmem/nvml
Persistent Collections for Java (experimental)
 https://github.com/pmem/pcj
Enhanced valgrind for Persistent Memory
 https://github.com/pmem/valgrind

More Related Content

PDF
Create C++ Applications with the Persistent Memory Development Kit
PDF
Persistent Memory Development Kit (PMDK) Essentials: Part 2
PDF
Debugging Tools & Techniques for Persistent Memory Programming
PDF
The HPE Machine and Gen-Z - BUD17-503
PDF
Disrupt the Storage & Memory Hierarchy
PDF
Ankur_Srivastava
PPT
How To Build A Scalable Storage System with OSS at TLUG Meeting 2008/09/13
PDF
Linux on RISC-V with Open Source Hardware (Open Source Summit Japan 2020)
Create C++ Applications with the Persistent Memory Development Kit
Persistent Memory Development Kit (PMDK) Essentials: Part 2
Debugging Tools & Techniques for Persistent Memory Programming
The HPE Machine and Gen-Z - BUD17-503
Disrupt the Storage & Memory Hierarchy
Ankur_Srivastava
How To Build A Scalable Storage System with OSS at TLUG Meeting 2008/09/13
Linux on RISC-V with Open Source Hardware (Open Source Summit Japan 2020)

What's hot (6)

PDF
Deployment of an HPC Cloud based on Intel hardware
PDF
State of ARM-based HPC
PDF
CUDA-Python and RAPIDS for blazing fast scientific computing
PDF
Deep Learning: Convergence of HPC and Hyperscale
PPTX
Considering Bare Metal
PDF
Introduction into Ceph storage for OpenStack
Deployment of an HPC Cloud based on Intel hardware
State of ARM-based HPC
CUDA-Python and RAPIDS for blazing fast scientific computing
Deep Learning: Convergence of HPC and Hyperscale
Considering Bare Metal
Introduction into Ceph storage for OpenStack
Ad

Similar to Persistent Memory Programming: The Current State of the Ecosystem (20)

PDF
Persistent Memory Development Kit (PMDK) Essentials: Part 1
PPTX
IMC Summit 2016 Breakout - Ken Gibson - The In-Place Working Storage Tier
PDF
Capi snap overview
PPTX
The Forefront of the Development for NVDIMM on Linux Kernel
PDF
C++ Programming and the Persistent Memory Developers Kit
PDF
optimizing_ceph_flash
PPTX
Innovation with ai at scale on the edge vt sept 2019 v0
PPTX
Turku2017 recentdevelopments
PDF
Flexible and Fast Storage for Deep Learning with Alluxio
PDF
P4_tutorial.pdf
PDF
D. Fast, Simple User-Space Network Functions with Snabb (RIPE 77)
PDF
Caching objects-in-memory
PPTX
OFI Overview 2019 Webinar
ODP
Android porting for dummies @droidconin 2011
PPTX
Node js meetup
PPTX
IMC Summit 2016 Keynote - Arthur Sainio - NVDIMM: Changes are Here So What’s ...
PPTX
Optimizing Hortonworks Apache Spark machine learning workloads for contempora...
PPTX
How to Optimize Hortonworks Apache Spark ML Workloads on Modern Processors
PDF
Red hat Storage Day LA - Designing Ceph Clusters Using Intel-Based Hardware
PDF
Software development windows nutshell
Persistent Memory Development Kit (PMDK) Essentials: Part 1
IMC Summit 2016 Breakout - Ken Gibson - The In-Place Working Storage Tier
Capi snap overview
The Forefront of the Development for NVDIMM on Linux Kernel
C++ Programming and the Persistent Memory Developers Kit
optimizing_ceph_flash
Innovation with ai at scale on the edge vt sept 2019 v0
Turku2017 recentdevelopments
Flexible and Fast Storage for Deep Learning with Alluxio
P4_tutorial.pdf
D. Fast, Simple User-Space Network Functions with Snabb (RIPE 77)
Caching objects-in-memory
OFI Overview 2019 Webinar
Android porting for dummies @droidconin 2011
Node js meetup
IMC Summit 2016 Keynote - Arthur Sainio - NVDIMM: Changes are Here So What’s ...
Optimizing Hortonworks Apache Spark machine learning workloads for contempora...
How to Optimize Hortonworks Apache Spark ML Workloads on Modern Processors
Red hat Storage Day LA - Designing Ceph Clusters Using Intel-Based Hardware
Software development windows nutshell
Ad

More from inside-BigData.com (20)

PDF
Major Market Shifts in IT
PDF
Preparing to program Aurora at Exascale - Early experiences and future direct...
PPTX
Transforming Private 5G Networks
PDF
The Incorporation of Machine Learning into Scientific Simulations at Lawrence...
PDF
How to Achieve High-Performance, Scalable and Distributed DNN Training on Mod...
PDF
Evolving Cyberinfrastructure, Democratizing Data, and Scaling AI to Catalyze ...
PDF
HPC Impact: EDA Telemetry Neural Networks
PDF
Biohybrid Robotic Jellyfish for Future Applications in Ocean Monitoring
PDF
Machine Learning for Weather Forecasts
PPTX
HPC AI Advisory Council Update
PDF
Fugaku Supercomputer joins fight against COVID-19
PDF
Energy Efficient Computing using Dynamic Tuning
PDF
HPC at Scale Enabled by DDN A3i and NVIDIA SuperPOD
PDF
Versal Premium ACAP for Network and Cloud Acceleration
PDF
Zettar: Moving Massive Amounts of Data across Any Distance Efficiently
PDF
Scaling TCO in a Post Moore's Era
PDF
Introducing HPC with a Raspberry Pi Cluster
PDF
Overview of HPC Interconnects
PDF
Efficient Model Selection for Deep Neural Networks on Massively Parallel Proc...
PDF
Data Parallel Deep Learning
Major Market Shifts in IT
Preparing to program Aurora at Exascale - Early experiences and future direct...
Transforming Private 5G Networks
The Incorporation of Machine Learning into Scientific Simulations at Lawrence...
How to Achieve High-Performance, Scalable and Distributed DNN Training on Mod...
Evolving Cyberinfrastructure, Democratizing Data, and Scaling AI to Catalyze ...
HPC Impact: EDA Telemetry Neural Networks
Biohybrid Robotic Jellyfish for Future Applications in Ocean Monitoring
Machine Learning for Weather Forecasts
HPC AI Advisory Council Update
Fugaku Supercomputer joins fight against COVID-19
Energy Efficient Computing using Dynamic Tuning
HPC at Scale Enabled by DDN A3i and NVIDIA SuperPOD
Versal Premium ACAP for Network and Cloud Acceleration
Zettar: Moving Massive Amounts of Data across Any Distance Efficiently
Scaling TCO in a Post Moore's Era
Introducing HPC with a Raspberry Pi Cluster
Overview of HPC Interconnects
Efficient Model Selection for Deep Neural Networks on Massively Parallel Proc...
Data Parallel Deep Learning

Recently uploaded (20)

PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Encapsulation theory and applications.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Electronic commerce courselecture one. Pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PPT
Teaching material agriculture food technology
PPTX
MYSQL Presentation for SQL database connectivity
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
cuic standard and advanced reporting.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PPTX
Spectroscopy.pptx food analysis technology
Encapsulation_ Review paper, used for researhc scholars
The Rise and Fall of 3GPP – Time for a Sabbatical?
Encapsulation theory and applications.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Electronic commerce courselecture one. Pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Mobile App Security Testing_ A Comprehensive Guide.pdf
Teaching material agriculture food technology
MYSQL Presentation for SQL database connectivity
“AI and Expert System Decision Support & Business Intelligence Systems”
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Digital-Transformation-Roadmap-for-Companies.pptx
Spectral efficient network and resource selection model in 5G networks
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
cuic standard and advanced reporting.pdf
Programs and apps: productivity, graphics, security and other tools
Spectroscopy.pptx food analysis technology

Persistent Memory Programming: The Current State of the Ecosystem

  • 1. DCG Data Center Group Persistent Memory Programming: The Current State of the Ecosystem MSST 2017 Andy Rudoff Non-Volatile Memory Software Architect Intel Corporation
  • 2. DCG Data Center Group 2 Persistent Memory
  • 3. 3 Optimized System Interconnect Reach full potential of 3D XPoint™ Technology by connecting it as Memory NVM Express* (NVMe) Sources: “Storage as Fast as the rest of the system” 2016 IEEE 8th International Memory Workshop and measurement, Intel® Optane™ SSD measurements and Intel P3700 measurements, and technology projections (4k)
  • 4. DCG Data Center Group 4 Java PersistentSortedMap 4 PersistentSortedMap employees = new PersistentSortedMap(); … employees.put(id, data); See “pilot” project at: https://github.com/pmem/pcj No flush calls. Transactional. Java library handles it all.
  • 5. DCG Data Center Group 5 How Did We Get from a DIMM to a Java API? Persistent Memory High-Level Language Support 5 PersistentSortedMap employees.put(id, data);
  • 6. DCG Data Center Group 6 How Did We Get from a DIMM to a Java API? Persistent Memory High-Level Language Support 6 PersistentSortedMap employees.put(id, data); Programming Models
  • 7. DCG Data Center Group 7 “Programming Model” At least four meanings… 1. Interface between HW and SW 2. Instruction Set Architecture (ISA) 3. Exposed to Applications (by the OS) 4. The Programmer Experience
  • 8. DCG Data Center Group 8 Programming Model: SW Interface to HW 8 Core L1 L1 L2 L3 Core L1 L1 L2 NVDIMM NVDIMM Memory Subsystem … Memory bus
  • 9. DCG Data Center Group 9 Programming Model: SW Interface to HW 9 Core L1 L1 L2 L3 Core L1 L1 L2 NVDIMM NVDIMM Memory Subsystem … Memory bus Result: Persistent Memory hardware accessed like memory (cache coherent). Exposed by ACPI 6.0+ on x86.
  • 10. DCG Data Center Group 10 Programming Model: Instruction Set Architecture 10 Core L1 L1 L2 L3 Core L1 L1 L2 NVDIMM NVDIMM Memory Subsystem … persistent domain MOV CLWB
  • 11. DCG Data Center Group 11 Programming Model: Instruction Set Architecture 11 Core L1 L1 L2 L3 Core L1 L1 L2 NVDIMM NVDIMM Memory Subsystem … persistent domain MOV CLWB Result: Stores flushed from CPU cache, globally-visible  Persistent (on x86)
  • 12. DCG Data Center Group 1212 NVDIMM User Space Kernel Space Standard File API NVDIMM Driver Application File System ApplicationApplication Standard Raw Device Access Load/Store Management Library Management UI Standard File API PM-Aware File System MMU Mappings Programming Model: Exposing to Applications
  • 13. DCG Data Center Group 1313 NVDIMM User Space Kernel Space Standard File API NVDIMM Driver Application File System ApplicationApplication Standard Raw Device Access Block File Memory Load/Store Management Library Management UI Standard File API Mgmt. PM-Aware File System MMU Mappings SNIA NVM Programming Model (Persistent Memory Portion)
  • 14. DCG Data Center Group 1414 NVDIMM User Space Kernel Space Application Load/Store Standard File API PM-Aware File System MMU Mappings No Page Cache Result: Direct Access (DAX) Memory-Mapped Files The Heart of the PM Programming Model
  • 15. DCG Data Center Group 1515 NVDIMM Kernel Space Application Load/Store Standard File API PM-Aware File System MMU Mappings Result: Safer, less error-prone, idiomatic in common languages Programming Model: The Programmer Experience Language Runtime Libraries Tools
  • 16. DCG Data Center Group 16 NVM Libraries: pmem.io C/C++ on Linux and Windows 16 NVDIMM User Space Kernel Space Application Load/Store Standard File API PM-Aware File System MMU Mappings NVM Libraries • Open Source • http://pmem.io • libpmem • libpmemobj • libpmemblk • libpmemlog • libvmem Transactional
  • 17. DCG Data Center Group 17 libpmemobj Application libpmem Load/Store memory-mapped pmem libpmemobj transactionsatomic operations allocatorlists locks API API API
  • 18. DCG Data Center Group 18 OS Detection of NVDIMMs ACPI 6.0+ OS Exposes pmem to apps DAX provides SNIA Programming Model Fully supported: • Linux (ext4, XFS) • Windows (NTFS) OS Supports Optimized Flush Specified, but evolving (ask when safe) • Linux: unsafe except Device DAX • (and new file systems like NOVA) • Windows: safe Remote Flush Proposals under discussion (works today with extra round trip) Deep Flush Upcoming Specification Transactions, Allocators Built on above via libraries and languages: • http://pmem.io Much more language support to do Virtualization All VMMs planning to support PM in guest (KVM changes upstream, Xen coming, others too…) 18 State of Ecosystem Today
  • 19. DCG Data Center Group 19 NVM Programming Model Resources www.snia.org/PM SNIA Standards Portfolio • NVM Programming Model v1.2a – Draft for public review • NVM Programming Model v1.1- SNIA Technical Position • NVM Programming Model v1.0 - SNIA Technical Position SNIA Technical White Papers • NVM PM Remote Access for High Availability • Persistent Memory Atomics and Transactions SNIA Videos and Presentations • The SNIA NVM Programming Model – Latest Developments and Challenges • Persistent Memory Summit 2017
  • 20. DCG Data Center Group 20 NVM Libraries http://pmem.io C/C++  C++ bindings: http://pmem.io/nvml/cpp_obj  libpmemobj page: http://pmem.io/nvml/libpmemobj  Upstream in some distros already, Windows preview available NVML Source Tree  https://github.com/pmem/nvml Persistent Collections for Java (experimental)  https://github.com/pmem/pcj Enhanced valgrind for Persistent Memory  https://github.com/pmem/valgrind