Lune

USENIX ATC2020顶会

go-pmem: Native Support for Programming Persistent Memory in Go

Jerrin Shaji George, Mohit Verma, Rajesh Venkatasubramanian, Pratap Subrahmanyam

出版方
2020年份
25被引次数
4顶会引用

摘要

Persistent memory offers persistence and byte-level addressability at DRAM-like speed. Operating system support and some user-level library support for persistent memory programming has emerged. But we think lack of native programming language support is an impediment to a programmer's productivity.

This paper contributes go-pmem, an open-source extension to the Go language compiler and runtime that natively supports programming persistent memory. go-pmem extends Go to introduce a runtime garbage collected persistent heap. Often persistent data needs to be updated in a transactional (i.e., crash consistent) manner. To express transaction boundaries, go-pmem introduces a new txn block which can include most Go statements and function calls. go-pmem compiler uses static type analysis to log persistent updates and avoid logging volatile variable updates whenever possible.

To guide our design and validate our work, we developed a feature-poor Redis server go-redis-pmem using go-pmem. We show that go-redis-pmem offers more than 5x throughput than unmodified Redis using a high-end NVMe SSD on memtier benchmark and can restart up to 20x faster than unmodified Redis after a crash. In addition, using compiler microbenchmarks, we show go-pmem's persistent memory allocator performs up to 40x better and transactions up to 4x faster than commercial libraries like PMDK and previous work like Mnemosyne. Library (language) Model References Transactions Heap Semantics Implementation Fn calls Growth Reloc. go-pmem (Go) Compiler support, Library Direct pointers Explicit -user tagged Undo logs Yes Yes Yes PMDK [18] (C,C++) Library Fat pointers Explicit -user tagged Undo logs Yes No Yes Mnemosyne [45] (C) Compiler support, Library Direct pointers Explicit -user tagged Redo logs No No No Makalu [26] (C) Library Direct pointers N/A N/A N/A No No Atlas [27] (C) Compiler support, Library Direct pointers Implicit -using locks Undo logs No No No Autopersist [43] (Java) Compiler, JVM support Direct references Explicit -user tagged Implicit -durable roots Undo logs Yes No No Espresso [46] (Java) Compiler, JVM support Direct references Explicit -user tagged Persistent objects Yes No No iDO [38] (C,C++) Compiler support Direct pointers Implicit -using locks Atomicity via resumption No No No JUSTDO [36] (C,C++)

问问这篇 Paper

智能体会读完全文。

Lune 把这篇 Paper 索引到了最后一个公式,引用它的顶会 Paper 也一样。你提问,回答直接引用原文。

可以从这些问题问起

智能体调用

Luneget_paper_fulltext

在 Lune 里问

免费开始,无需绑卡

lune papers fulltext 887e8a5a-8d3a-4c8b-a978-d45b13e233b3

引用它的顶会 Paper4

问问它们各自怎么用它

相关 Paper

黄昏的海面,两侧是细线勾勒的悬崖