91
Paweł Lebioda, Tomasz Kapela

Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

Paweł Lebioda, Tomasz Kapela

Page 2: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

2

Agenda

Introduction:

• Persistent Memory

• NVML

• PMEMCHECK

Tutorial:

• Kernel support

• NVML overview

• libpmem

• libpmemblk

• libpmemobj C API

• libpmemobj C++ API

• PMEMCHECK

Page 3: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

Just a little bit of theory...

Page 4: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

What is it ?

Page 5: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

5

Persistent Memory

What is Persistent Memory ?

Non-volatile

Retains data without power

Byte addressable

Load/Store access

Memory-like performance

DMA-able

NVDIMM

Page 6: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

6

Persistent Memory use cases

Block storage

Volatile Memory

Persistent Memory aware filesystem

Persistent Memory aware applications

Page 7: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

7

Persistent Memory characteristics

Stores are not durable

The data must be flushed

8-byte atomicity

Virtual address may change

Page 8: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

8

Persistent Memory kernel support

NVDIMM subsystem

DAX (Direct Access)

ndctl – github.com/pmem/ndctl

DAX support in ext2, ext4, xfs

Page 9: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

Non-Volatile Memory Libraries

https://github.com/pmem/nvml

Page 10: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

10

Persistent Memory Programming Model

Page 11: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

11

NVML introduction

Set of user-space libraries

PMEM-aware applications

Source code on github - github.com/pmem/nvml

BSD license

Web page - pmem.io

Distros (Fedora, openSUSE)

Page 12: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

12

NVML libraries

Library Description

libvmem Volatile memory allocator

libvmmalloc malloc() replacement using libvmem

libpmem Low-level support for persistence

libpmemlog Append only log structure

libpmemblk Atomic access to memory blocks

libpmemobj Transactional object store

libpmempool Managing library

Page 13: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

„In theory, theory and practice are the same. In practice, they are not”

Albert Einstein

Page 14: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

How to configure my Linux OS for persistent memory ?

Page 15: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

15

Kernel support

Kernel config: NVDIMM, DAX

Persistent memory emulation:

– http://pmem.io/2016/02/22/pm-emulation.html

– X86_PMEM_LEGACY

– Memmap=<size>!<offset>

Create filesystem

Mount with DAX

Page 16: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

16

Persistent Memory configuration

Page 17: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

Quick insight into source tree

Page 18: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

18

NVML overview

Source tree organization

Building

Running tests

Examples

Packages

Page 19: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

19

NVML packages

Page 20: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

Low level persistent memory support

Page 21: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

21

libpmem examples

How to check if memory is Persistent Memory ?

How to access Persistent Memory ?

Debug library and log messages

How to make memory persistent ?

Running examples under Valgrind pmemcheck

Page 22: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

22

How to check if memory is Persistent Memory ?

Page 23: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

23

How to access Persistent Memory ?

Page 24: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

24

Running pmem_is_pmem example

Page 25: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

25

libpmem: turning on log messages

Page 26: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

26

libpmem: pmem_persist - 1

Page 27: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

27

libpmem: pmem_persist - 2

Page 28: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

Persistent Memory aware tool for Valgrind

github.com/pmem/valgrind

Page 29: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

29

PMEMCHECK

Valgrind tool

Need to build nvml with special flags

Checks correctness of persistent memory usage

Checking data persistence

Support for transactions (libpmemobj)

NVML: make EXTRA_CFLAGS=-DUSE_VALGRIND

Page 30: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

30

libpmem: valgrind support

Page 31: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

31

libpmem: pmem_persist + valgrind pmemcheck

Page 32: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

32

libpmem: pmem_persist - 2

Page 33: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

Persistent Memory pools utils

Page 34: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

34

pmempool: available commands

Page 35: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

Persistent Memory resident array of blocks

Page 36: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

36

Libpmemblk: examples

Pmempool introduction

Creating pmemblk pool with pmempool

Opening pmemblk pool

Reading pool parameters

Reading and writing blocks

Page 37: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

37

pmempool: create command

Page 38: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

38

Opening pmemblk pool

Page 39: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

39

Reading and writing block

Page 40: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

40

libpmempool: running example

Page 41: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

Persistent Memory Transactional Object Store

Page 42: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

42

libpmemobj

Creating pmemobj pool with pmempool

Opening pmemobj pool

PMEMoid – persistent memory pointer

Root object

Allocations

Page 43: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

43

Libpmemobj: simple example

Application which stores list of people

Stores first and last name

Constant size array

Page 44: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

44

Data structures

Page 45: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

45

Main function

Page 46: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

46

List of people

Page 47: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

47

Insert function - 1

Page 48: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

48

Insert function - 2

Page 49: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

49

Object’s constructor

Page 50: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

50

Clear function

Page 51: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

51

Recovery

Page 52: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

52

Running example

Page 53: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

53

Missing persist

Page 54: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

54

Valgrind pmemcheck

Page 55: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

55

libpmemobj: type safety macros

PMEMoid as void *

Type safety macros for convenience

No need to track persistent and volatile pointers

Page 56: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

56

Type safety macros: data structures

Page 57: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

57

Type safety macros: insert function

Page 58: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

58

Type safety macros: clear function

Page 59: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

59

libpmemobj: foreach macros

API for traversing through all objects

Foreach object per type

Useful for recovery actions

Avoids persistent memory leaks

Page 60: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

60

Foreach type macro

Page 61: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

61

libpmemobj: atomic lists API

Circular doubly linked list

Atomic operations

sys/queue – like API

Useful for hybrid persistent-volatile data structures

Page 62: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

62

atomic lists API: data structures

Page 63: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

63

Atomic lists API: insert function

Page 64: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

64

Atomic lists: clear function

Page 65: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

65

Atomic lists API: listing people

Page 66: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

66

Atomic lists API: recovery

Page 67: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

67

libpmemobj: transactions

Most generic API

No need for recovery

Convenient macros

Operations:

– Alloc

– Free

– Modify

Page 68: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

68

Transactions: data structures

Page 69: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

69

Transactions: insert function

Page 70: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

70

Transactions: entry initialization

Page 71: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

71

Transactions: inserting elements

Page 72: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

72

Transactions: clear function

Page 73: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

73

Transactions: listing people

Page 74: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

74

Transactions: valgrind pmemcheck

Page 75: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

75

Transactions: valgrind pmemcheck

Page 76: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

76

C++ API

Using language features

Overloading operators

Hiding required operations

Scope transactions

Lambda

Page 77: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

77

C++ API: main function

Page 78: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

78

C++ API: list of people class

Page 79: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

79

C++ API: listing people

Page 80: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

80

C++ API: insert function

Page 81: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

81

C++ API: clear function

Page 82: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

82

C++ API: list entry class

Page 83: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

83

C++ API: persistent string

Page 84: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

84

C++ API: valgrind pmemcheck

Page 85: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

85

C++ API: valgrind pmemcheck - 1

Page 86: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

86

C++ API: valgrind pmemcheck - 2

Page 87: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

87

C++ STL

STL allocator concept for libpmemobj

Using STL containers

Need some changes in std libraries

Page 88: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

88

C++ STL: list of people class

Page 89: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description

89

C++ STL: list entry class

Page 90: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description
Page 91: Paweł Lebioda, Tomasz Kapela · 2017-12-14 · Block storage Volatile Memory Persistent Memory aware filesystem ... Distros (Fedora, openSUSE) 12 NVML libraries Library Description