持久化内存编程当前状态和未来方向

介绍持久化内存的编程模型的历史变迁,模型本身基本构架,以及对应的操作系统内核的变动。以及PMDK和Java如何使用持久化内存等。
展开查看详情

1. Persistent Memory Programming: The Current State and Future Direction Andy Rudoff, Intel

2.Ancient History June 2012 Formed the NVM Programming TWG Immediate participation from key OSVs, ISVs, IHVs January 2013 Held the first PM Summit (actually called “NVM Summit”) January 2014 TWG published rev 1.0 of the NVM Programming Model © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 2

3.The Programming Model Mgmt. Storage File Memory Management UI Application Application Application Standard Standard Standard Load/Store Raw File API File API Device User Management Library Access Space File System PM-Aware MMU Mappings File System NVDIMM Driver Kernel Space NVDIMMs © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 3

4. Must Open File Before Mapping Standard Naming Application and Standard Load/Store Permission Model File API User Space PM-Aware MMU Mappings File System Kernel Space NVDIMMs © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 4

5.Direct Access Application Standard Load/Store File API User Space “DAX” PM-Aware MMU Mappings File System Kernel Space NVDIMMs © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 5

6.Direct Access Application Windows: Standard File API Load/Store DAX Support is shipping User Space NTFS is PM-Aware “DAX” Some new APIs PM-Aware PMDK support MMU Mappings File System Kernel More info today from: Space Neal Christiansen Tom Talpey NVDIMMs © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 6

7.Direct Access Application Linux: Standard File API Load/Store DAX Support is shipping User Space ext4 is PM-Aware “DAX” XFS is PM-Aware PM-Aware PMDK support MMU Mappings File System Kernel More filesystems coming Space More info today from: Dan Williams NVDIMMs Amit Golander © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 7

8.Direct Access Application VMware: Standard File API Load/Store Virtualization of PM User Space “DAX” More info today from: PM-Aware Rich Brunner MMU Mappings File System Kernel Space NVDIMMs © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 8

9.Applications: Public Demos 2017 was an interesting year for demos… SAP SAPPHIRE Oracle OpenWorld Built on the Persistent Memory programming model! © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 9

10.Persistent Memory Developer Kit pmem.io PMDK Provides a Menu of Libraries Application User Space Developers pull in just what they need Standard Load/Store File API Transaction APIs PMDK Libraries Persistent memory allocators Instead of re-inventing the wheel PMDK libraries are fully validated PM-Aware MMU Mappings File System PMDK libraries are performance tuned Kernel Space PMDK Provides Tools for Developers PMDK is Open Source and Product-Neutral NVDIMM © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 10

11.PMDK in a Nutshell Ten libraries, tools, examples… void push(pool_base &pop, uint64_t value) { transaction::exec_tx(pop, [&] { auto n = make_persistent<pmem_entry>(); n->value = value; n->next = nullptr; if (head == nullptr) { head = tail = n; } else { tail->next = n; tail = n; } }); } © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 11

12.PMDK in a Nutshell Ten libraries, tools, examples… void push(pool_base &pop, uint64_t value) { transaction::exec_tx(pop, [&] { auto n = make_persistent<pmem_entry>(); n->value = value; n->next = nullptr; if (head == nullptr) { head = tail = n; } else { tail->next = n; tail = n; } }); Memory } Allocations & Frees © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 12

13.PMDK in a Nutshell Ten libraries, tools, examples… void push(pool_base &pop, uint64_t value) { transaction::exec_tx(pop, [&] { auto n = make_persistent<pmem_entry>(); n->value = value; n->next = nullptr; if (head == nullptr) { head = tail = n; } else { tail->next = n; tail = n; } }); Multiple Operations } Made Atomic © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 13

14.PMDK in a Nutshell Complex transactions, allocation handled by libraries No “flush” calls to manage in most cases Each ISV doesn’t have to re-invent Performance tuned (esp for future enhancements) Licensing is very liberal Steal all the code you want! PMDK is a convenience, not a requirement Build your own library if you like! © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 14

15.Persistent Collections for Java PersistentSortedMap employees = new PersistentSortedMap(); … employees.put(id, data); No flush calls. Transactional. Java library handles it all. See “pilot” project at: https://github.com/pmem/pcj © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 15

16. Storage Performance Developer Kit spdk.io iSCSI vhost-scsi NVMe-oF* vhost-blk Integration Storage Target Target Target Object Target Protocols SCSI NVMe RocksDB Block Device Abstraction (BDEV) Logical BlobFS Ceph 3rd Party GPT Storage Volumes Services Blobstore Linux Ceph NVMe PMDK Async IO RBD NVMe Devices Core Released Intel® QuickData Application Drivers NVMe-oF* NVMe* PCIe 17.10 Technology Driver Framework Initiator Driver Pathfinding © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 16

17.TWG Ongoing Work Security PM Hardware Security Threat Model (balloting) Remote persistent memory (via RDMA) Ongoing – optimizations for RDMA worked in multiple forums Remote asynchronous flush (under discussion) Higher-level Semantics As we learn more.. © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 17

18.More Information http://snia.org/PM Specs, workgroups, webcasts, videos, presentations http://pmem.io PMDK and other persistent memory programming information http://pmem.io/documents Links to publications, standards, Windows & Linux info http://software.intel.com/pmem Intel Developer Zone for persistent memory programming © 2018 SNIA Persistent Memory Summit. All Rights Reserved. 18