This repository was archived by the owner on May 21, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathFAQ.txt
More file actions
74 lines (57 loc) · 3.32 KB
/
FAQ.txt
File metadata and controls
74 lines (57 loc) · 3.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Why are these examples here?
These examples are here for educational purposes, to illustrate
some of the interesting issues around Persistent Memory programming.
Start by reading the top-level README, then read the API document
LINUX_PMEM_API.txt. Then start examining source code. First,
trivial/trivial.c, then basic/basic.c, then take a look through
the libpmemalloc example to see how one might approach the issues
of Persistent Memory allocation and crash resiliency.
These are just examples, meant to be simple, self-contained,
simple C based files. See the REFERENCES section in the README
for links to other more complex Persistent Memory work going on.
For more information, questions or comments, contact:
andy.rudoff@intel.com
What is Persistent Memory?
See the PERSISTENT MEMORY section in the top-level README.
Where I can purchase Persistent Memory?
Start by search for NVDIMM products, many of which meet the
definition of Persistent Memory described in the README and
should work fine with PMFS and the examples contained here.
The press is frequently reporting more emerging Persistent
Memory technologies as well.
Can Persistent Memory be used transparently to applications?
Certainly. One can easily imagine hardware completely managing
Persistent Memory so that the Operating System and applications
have no idea it is even installed in the system. Alternatively,
one can imagine the OS using Persistent Memory itself but not
exposing it to applications, so again it is transparent at the
application level.
The examples and APIs discussed here are for the non-transparent
case, where an application wants to fully take advantage of
Persistent Memory by deciding what data structures to store in it,
when to access it, when to copy data into volatile memory and back,
etc. Transparent use of Persistent Memory is also very interesting,
but is beyond the scope of the examples in this repository.
How do kernel modules use Persistent Memory?
File systems like PMFS and other kernel modules that want to
leverage Persistent Memory access it by calling into the device
driver for the Persistent Memory. The PMFS team is working on
getting their "NVM Volume" interfaces into the Linux kernel.
But the in-kernel interfaces are beyond the scope of these
examples -- they are for application-level programming.
How do these examples compare with the Mnemosyne or NV Heaps work?
If you are interesting in Persistent Memory programming, looking
at the Mnemosyne and NV Heaps work is highly recommended. The
examples here are meant to be very simple, working with existing
compilers, and self-contained. So these examples do not build on
those other works. It is our hope that these examples help
stimulate even more examples and more PM-related research.
What exactly do I need to do in order to make stores persistent?
It depends on the Persistent Memory product, and on the platform
it is installed in. Check with the manufacturer of the Persistent
Memory you are using. For some examples, see the REFERENCES section
of the top-level README. The idea is that the gory details on how
you flush stores to the point of durability in Persistent Memory
is contained in libraries like libpmem. See the Linux API document
for a description of how your code can depend on libpmem for
making stores persistent.