go-pmem: Native Support for Programming Persistent Memory in Go
summary
go-pmem is an open-source extension to the Go 1.11 compiler and runtime that adds a garbage-collected persistent heap, native pointers with pointer swizzling on restart, and a new txn block implementing undo-logging for crash-consistent updates. It exposes pnew/pmake allocation, named objects, and GC-aware heap recovery. A feature‑poor Redis called go-redis-pmem is built with it and shows >5x throughput vs Redis on NVMe SSD, up to 20x faster restart, allocator up to 40x faster, and transactions several‑times faster than PMDK/Mnemosyne.
AI-written summary · about
chapters (9)
- 0:00Introduction to persistent memory
- 1:16Design goals for GoPmem
- 2:00Programming model and syntax
- 7:11Practical implementation details
- 10:55API and runtime initialization
- 13:44Runtime design and heap recovery
- 17:32Why native language support
- 18:55Performance evaluations
- 22:15Conclusion and call to action
related talks
35mDeveloping Software for Persistent Memory
43mPromise and Pitfalls of Persistent Memory
30mMemory Management in Go: The good, the bad and the ugly
35mDeveloping Software for Persistent Memory
30mLarge-Scale Practice of Persistent Memory in Alibaba Cloud
01h 08mC++ and Persistent Memory Technologies, Like Intel's 3D-XPoint
17mPreview: Persistent Memory
26mRespecting Memory Limits In Go
