27
Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas University of Illinois at Urbana-Champaign March 12, 2019 NVMW’19 Session 13: Objects II

Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Designing a User-Friendly Java NVM Framework

Thomas Shull, Jian Huang, Josep TorrellasUniversity of Illinois at Urbana-Champaign

March 12, 2019NVMW’19 Session 13: Objects II

Page 2: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Programming NVM – The Good

• Non-Volatile Memory (NVM) offers an enticingcombination of performance, capacity, and persistency

• Programs will no longer have to serialize data out tosecondary storage for durability

• Now have access to persistent memory at a byte-levelgranularity

Shull et al. Designing a User-Friendly Java NVM Framework 2

Page 3: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Programming NVM – The Bad

Leveraging NVM to create persistent applications is tricky:

• Entire memory hierarchy is not durable• Processor caches are volatile

• Data must be written back from caches to achievepersistency

• Perform combination of non-temporal stores, cachelinewritebacks (CLWBs), and fences

• Software measures must be taken to ensurefailure-atomicity for a collection of writes

• Hardware only guarantees atomicity at cacheline levelgranularity

• To simply this process, frameworks for developingpersistent applications have been introduced

Shull et al. Designing a User-Friendly Java NVM Framework 3

Page 4: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Outline

1 Describe current NVM framework landscape• Current NVM framework features• Drawbacks of current frameworks

2 Present some of my work on creating a new high-level JavaNVM framework

• New NVM programming model• How we implement our model• Creating a high-performance model implementation

Shull et al. Designing a User-Friendly Java NVM Framework 4

Page 5: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Current Techniques for Persistent Applications

• Manual – add explicit assembly instructions and systemcalls

• Industrial Libraries and Frameworks• Persistent Memory Development Kit (PMDK)

• Academic Frameworks• Atlas, NVL-C, Espresso, Mnemosyne, ARP, NVThreads,

NV-Heaps, more

Shull et al. Designing a User-Friendly Java NVM Framework 5

Page 6: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Current NVM Frameworks – Traits

In current NVM frameworks the user must perform somecombination of the following:

• Manually identifying persistent objects

• Wrapping stores needing persistent or transactional support

• Using previously persistently-marked data structures orlibraries

Shull et al. Designing a User-Friendly Java NVM Framework 6

Page 7: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Current NVM Frameworks – Drawbacks

Drawbacks of current NVM frameworks:

• Need many markings to identify persistent objects anddirect persistent store mechanisms

• Easy to introduce bugs• Correctness bugs – markings are missing• Performance bugs – too many markings

• Difficult for the compiler to perform optimizations• Programmer’s intention is not visible to the compiler

Shull et al. Designing a User-Friendly Java NVM Framework 7

Page 8: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Misalignment with High-Level Languages

Most NVM frameworks are designed for C/C++, not managedlanguages like Java, C#, Scala, etc.

• Cannot use existing built-in libraries• Built-ins do not contain necessary persistent markings

• Expose low-level features to programmer• Does not abstract away enough details

• Do not perform runtime checks• Catch problems before more damage is done

Shull et al. Designing a User-Friendly Java NVM Framework 8

Page 9: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Contribution: Create a New NVM Framework

• Solution to existing shortcomings: Design a new NVMframework

• Focus on programmability first• Rely on compiler optimizations to get high performance

• Make framework tailored to managed-languages• Build upon their automatic memory management support

and transparent object representation

Shull et al. Designing a User-Friendly Java NVM Framework 9

Page 10: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Desirable Traits

Three important programmability goals for our NVMframework’s programming model:

1 Require minimal markings by programmer

2 Making libraries and other pre-existing codes persistentshould be simple

3 Failure-atomic support should be provided and need onlyminimal markings

Shull et al. Designing a User-Friendly Java NVM Framework 10

Page 11: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

New NVM Framework Highlights

1 Require minimal markings by programmer• In our model the user must identify only a durable root

set and failure-atomic regions• Durable Root Set: the set of objects directly referred to at

recovery time• The runtime then ensures all objects reachable from the

durable root set are in NVM

• Transitive closure of the durable root set is placed in NVMautomatically

• Requires dynamically moving objects to NVM throughoutexecution

• Durable roots should be program’s container/parentobjects. (E.g. the DATABASES map object in H2’sEngine.java)

Shull et al. Designing a User-Friendly Java NVM Framework 11

Page 12: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

New NVM Framework Highlights

2 Making libraries and other pre-existing codes persistentshould be simple

• Extend the semantics of existing JVM bytecodes

• E.g. putfield, aastore, others

• Existing code can now be persistently handled if reachablefrom a durable root

Shull et al. Designing a User-Friendly Java NVM Framework 12

Page 13: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

New NVM Framework Highlights

3 Failure-atomic support should be provided and need onlyminimal markings

• Label only failure-atomic regions’ start and finish• The runtime then ensures all persistent objects within the

region are properly logged

Shull et al. Designing a User-Friendly Java NVM Framework 13

Page 14: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Runtime Responsibilities

Our programming model requires the framework to:

1 Dynamically detect and monitor the transitive closure ofdurable roots

• Must ensure everything reachable from a durable root is inNVM

2 Ensure stores to persistent objects are performed correctly• Behavior is dependent on whether the store is in an

failure-atomic region or not

Shull et al. Designing a User-Friendly Java NVM Framework 14

Page 15: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Dynamically Moving Objects to NVM

Volatile Memory Non-Volatile MemoryVolatile Memory Non-Volatile Memory

A

C

ED

B F

G

(a) Initial Heap State

@durable_root

Shull et al. Designing a User-Friendly Java NVM Framework 15

Page 16: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Dynamically Moving Objects to NVM

Volatile Memory Non-Volatile MemoryVolatile Memory Non-Volatile Memory

A

C

ED

B F

G

(a) Initial Heap State

@durable_root

Volatile Memory Non-Volatile MemoryVolatile Memory Non-Volatile Memory

A

C

ED

B F

G

(b) Model Violation

@durable_root

Shull et al. Designing a User-Friendly Java NVM Framework 16

Page 17: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Dynamically Moving Objects to NVM

Volatile Memory Non-Volatile Memory

A

D

B F

GE

C

(b) Runtime Maintaining Correct Heap State

@durable_root

Volatile Memory Non-Volatile MemoryVolatile Memory Non-Volatile Memory

A

C

ED

B F

G

(a) Initial Heap State

@durable_root

Shull et al. Designing a User-Friendly Java NVM Framework 17

Page 18: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Ensuring Persistent Stores

Two cases: outside and inside failure-atomic regions

• Outside failure-atomic region - enforce sequential persistorder

• after each store perform CLWB and FENCE

• Inside failure-atomic region - enforce atomic commit at end• Epoch Persistency – stores within region can be reordered• Logging should be performed to create appearance of

atomicity

Shull et al. Designing a User-Friendly Java NVM Framework 18

Page 19: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Recovery Procedure

At recovery time we expect the program to:

1 Check if data from previous execution exists

2 Load previous data if available• Checking and Loading is performed by interacting with@durable roots

3 Jump to proper execution point• E.g. Server-side event loop

Shull et al. Designing a User-Friendly Java NVM Framework 19

Page 20: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Implementing New Model

• Model requires many guarded actions before accesses• Storing to @durable root?• Storing to an object reachable from a @durable root?• In a failure-atomic region?

Solution:

1 Add extra object header word to contain persistent stateand metadata

2 Extend the semantics of several JVM bytecodes to performthe necessary checks and guarded actions

• More details in papers

Shull et al. Designing a User-Friendly Java NVM Framework 20

Page 21: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

JVM Semantic Extension Example

Modified store operation

1: procedure storeField(Object holder, Field f, Value v)

2: writeField(holder, f, v)

3: end procedure

Shull et al. Designing a User-Friendly Java NVM Framework 21

Page 22: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

JVM Semantic Extension Example

Modified store operation

1: procedure storeField(Object holder, Field f, Value v)[Start Added Code]

2: if isPersistent(holder) then3: Move value to NVM if necesssary4: Log (object, field, value) tuple if in failure-atomic region5: end if

[End Added Code]6: writeField(holder, f, v)

[Start Added Code]7: if isPersistent(holder) then8: Add a cacheline writeback for the store9: Add fence if not in failure-atomic region10: end if

[End Added Code]11: end procedure

Shull et al. Designing a User-Friendly Java NVM Framework 22

Page 23: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Optimizing Implementation

Our implementation collects profiling information to limit theperformance overhead:

• Limit check overhead• Predict whether a given object access site usually handles

persistent or volatile objects• Can reduce check overhead for sites predicted to handle

volatile objects

• Preallocate objects in NVM• Predict whether a given allocation site usually allocates

objects which become reachable from a @durable root• Can originally allocate these objects in NVM to limit object

movement

Shull et al. Designing a User-Friendly Java NVM Framework 23

Page 24: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Evaluation Environment

• Modify Maxine 2.0.5• Research JVM originally developed by Oracle

• Run on system containing two 24-core Intel R© secondgeneration Xeon R© Scalable processors (codenamedCascade Lake)

• System has 128GB Intel Optane DC persistent memorymodules

Shull et al. Designing a User-Friendly Java NVM Framework 24

Page 25: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Performance Results

• IntelKV: Intel’s pmemkv library (kvtree3 engine) using itsJava API

• JavaKV: Implementing same data structure used inpmemkv in our framework

• Use Quickcached (Java KV-Store) and run YCSB

A B C D F Average0.00

0.25

0.50

0.75

1.00

1.25

Norm

aliz

ed E

xecu

tion T

ime IntelKV JavaKV

• JavaKV reduces execution time by 32%• Have more (& fairer) results and comparisons in papers

Shull et al. Designing a User-Friendly Java NVM Framework 25

Page 26: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Papers About Our Model & Framework

Motivating the need for new Java-specific NVM programmingmodel – ManLang’18: Defining a High-level ProgrammingModel for Emerging NVRAM Technologies

How to limit our framework’s runtime check overhead onvolatile objects – VEE’19: QuickCheck: Using Speculation toReduce the Overhead of Checks in NVM Frameworks

How our framework dynamically moves objects between DRAMand NVM – PLDI’19: AutoPersist: An Easy-To-Use JavaNVM Framework Based on Reachability

Shull et al. Designing a User-Friendly Java NVM Framework 26

Page 27: Designing a User-Friendly Java NVM Frameworknvmw.ucsd.edu/nvmw2019-program/unzip/current/nvmw2019...Designing a User-Friendly Java NVM Framework Thomas Shull, Jian Huang, Josep Torrellas

Thank You!

Motivating the need for new Java-specific NVM programmingmodel – ManLang’18: Defining a High-level ProgrammingModel for Emerging NVRAM Technologies

How to limit our framework’s runtime check overhead onvolatile objects – VEE’19: QuickCheck: Using Speculation toReduce the Overhead of Checks in NVM Frameworks

How our framework dynamically moves objects between DRAMand NVM – PLDI’19: AutoPersist: An Easy-To-Use JavaNVM Framework Based on Reachability

Questions?

Shull et al. Designing a User-Friendly Java NVM Framework 27