IN-PERSISTENT-MEMORY COMPUTING WITH JAVA ERIC KACZMAREK INTEL CORPORATION

Similar documents
THE IN-PLACE WORKING STORAGE TIER OPPORTUNITIES FOR SOFTWARE INNOVATORS KEN GIBSON, INTEL, DIRECTOR MEMORY SW ARCHITECTURE

Building on The NVM Programming Model A Windows Implementation

Impact on Application Development: SNIA NVM Programming Model in the Real World. Andy Rudoff pmem SW Architect, Intel

IXPUG 16. Dmitry Durnov, Intel MPI team

OpenMP * 4 Support in Clang * / LLVM * Andrey Bokhanko, Intel

Vectorization Advisor: getting started

APIs for Persistent Memory Programming

Enabling Persistent Memory Use in Java. Steve Dohrmann Sr. Staff Software Engineer, Intel

H.J. Lu, Sunil K Pandey. Intel. November, 2018

12th ANNUAL WORKSHOP 2016 NVME OVER FABRICS. Presented by Phil Cayton Intel Corporation. April 6th, 2016

The SNIA NVM Programming Model: Latest Developments and Challenges. Andy Rudoff, Intel Corporation

Agenda. Optimization Notice Copyright 2017, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Becca Paren Cluster Systems Engineer Software and Services Group. May 2017

Mikhail Dvorskiy, Jim Cownie, Alexey Kukanov

LIBXSMM Library for small matrix multiplications. Intel High Performance and Throughput Computing (EMEA) Hans Pabst, March 12 th 2015

Visualizing and Finding Optimization Opportunities with Intel Advisor Roofline feature. Intel Software Developer Conference London, 2017

What s P. Thierry

Intel Cluster Checker 3.0 webinar

Guy Blank Intel Corporation, Israel March 27-28, 2017 European LLVM Developers Meeting Saarland Informatics Campus, Saarbrücken, Germany

Intel Xeon Phi Coprocessor. Technical Resources. Intel Xeon Phi Coprocessor Workshop Pawsey Centre & CSIRO, Aug Intel Xeon Phi Coprocessor

Jim Pappas Director of Technology Initiatives, Intel Vice-Chair, Storage Networking Industry Association (SNIA) December 07, 2018

Alexei Katranov. IWOCL '16, April 21, 2016, Vienna, Austria

Crosstalk between VMs. Alexander Komarov, Application Engineer Software and Services Group Developer Relations Division EMEA

The Transition to PCI Express* for Client SSDs

MICHAL MROZEK ZBIGNIEW ZDANOWICZ

Installation Guide and Release Notes

Persistent Memory: The Value to HPC and the Challenges

VMware vsphere Virtualization of PMEM (PM) Richard A. Brunner, VMware

More performance options

Sample for OpenCL* and DirectX* Video Acceleration Surface Sharing

Intel tools for High Performance Python 데이터분석및기타기능을위한고성능 Python

Tuning Python Applications Can Dramatically Increase Performance

Real World Development examples of systems / iot

Bei Wang, Dmitry Prohorov and Carlos Rosales

OpenCL* and Microsoft DirectX* Video Acceleration Surface Sharing

The SNIA NVM Programming Model. #OFADevWorkshop

Sarah Knepper. Intel Math Kernel Library (Intel MKL) 25 May 2018, iwapt 2018

Intel Software Development Products Licensing & Programs Channel EMEA

Expressing and Analyzing Dependencies in your C++ Application

Intel Advisor XE Future Release Threading Design & Prototyping Vectorization Assistant

Using Intel VTune Amplifier XE and Inspector XE in.net environment

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

Memory & Thread Debugger

INTEL MKL Vectorized Compact routines

Update on Windows Persistent Memory Support Neal Christiansen Microsoft

Graphics Performance Analyzer for Android

Achieving High Performance. Jim Cownie Principal Engineer SSG/DPD/TCAR Multicore Challenge 2013

Getting Started with Intel SDK for OpenCL Applications

Performance Profiler. Klaus-Dieter Oertel Intel-SSG-DPD IT4I HPC Workshop, Ostrava,

Optimizing Film, Media with OpenCL & Intel Quick Sync Video

Sayantan Sur, Intel. ExaComm Workshop held in conjunction with ISC 2018

Sergey Maidanov. Software Engineering Manager for Intel Distribution for Python*

Bitonic Sorting. Intel SDK for OpenCL* Applications Sample Documentation. Copyright Intel Corporation. All Rights Reserved

Kevin O Leary, Intel Technical Consulting Engineer

Michael Kinsner, Dirk Seynhaeve IWOCL 2018

Obtaining the Last Values of Conditionally Assigned Privates

HPCG on Intel Xeon Phi 2 nd Generation, Knights Landing. Alexander Kleymenov and Jongsoo Park Intel Corporation SC16, HPCG BoF

Bitonic Sorting Intel OpenCL SDK Sample Documentation

SPDK China Summit Ziye Yang. Senior Software Engineer. Network Platforms Group, Intel Corporation

Intel Parallel Studio XE 2011 for Windows* Installation Guide and Release Notes

SNIA NVM Programming Model Workgroup Update. #OFADevWorkshop

Intel Math Kernel Library (Intel MKL) Team - Presenter: Murat Efe Guney Workshop on Batched, Reproducible, and Reduced Precision BLAS Georgia Tech,

A New Key-Value Data Store For Heterogeneous Storage Architecture

Debugging and Analyzing Programs using the Intercept Layer for OpenCL Applications

Achieving Peak Performance on Intel Hardware. Intel Software Developer Conference London, 2017

Using the Intel VTune Amplifier 2013 on Embedded Platforms

Using NVDIMM under KVM. Applications of persistent memory in virtualization

Windows Support for PM. Tom Talpey, Microsoft

Windows Support for PM. Tom Talpey, Microsoft

Intel Parallel Studio XE 2015

Efficiently Introduce Threading using Intel TBB

Jackson Marusarz Software Technical Consulting Engineer

Gil Rapaport and Ayal Zaks. Intel Corporation, Israel Development Center. March 27-28, 2017 European LLVM Developers Meeting

Installation Guide and Release Notes

Contributors: Surabhi Jain, Gengbin Zheng, Maria Garzaran, Jim Cownie, Taru Doodi, and Terry L. Wilmarth

Persistent Memory over Fabrics

IFS RAPS14 benchmark on 2 nd generation Intel Xeon Phi processor

Ravindra Babu Ganapathi

Jim Cownie, Johnny Peyton with help from Nitya Hariharan and Doug Jacobsen

Jim Harris Principal Software Engineer Intel Data Center Group

RDMA Requirements for High Availability in the NVM Programming Model

What s New August 2015

Intel Math Kernel Library (Intel MKL) Sparse Solvers. Alexander Kalinkin Intel MKL developer, Victor Kostin Intel MKL Dense Solvers team manager

NVMe Over Fabrics: Scaling Up With The Storage Performance Development Kit

Drive Recovery Panel

Visualizing and Finding Optimization Opportunities with Intel Advisor Roofline feature

Non-Volatile Memory Cache Enhancements: Turbo-Charging Client Platform Performance

Solid-State Drive System Optimizations In Data Center Applications

Using persistent memory and RDMA for Ceph client write-back caching Scott Peterson, Senior Software Engineer Intel

High Performance Computing The Essential Tool for a Knowledge Economy

NVMFS: A New File System Designed Specifically to Take Advantage of Nonvolatile Memory

Intel Math Kernel Library (Intel MKL) BLAS. Victor Kostin Intel MKL Dense Solvers team manager

Application Access to Persistent Memory The State of the Nation(s)!

Overview of Data Fitting Component in Intel Math Kernel Library (Intel MKL) Intel Corporation

Sayantan Sur, Intel. SEA Symposium on Overlapping Computation and Communication. April 4 th, 2018

Persistent Memory over Fabric (PMoF) Adding RDMA to Persistent Memory Pawel Szymanski Intel Corporation

Intel VTune Amplifier XE for Tuning of HPC Applications Intel Software Developer Conference Frankfurt, 2017 Klaus-Dieter Oertel, Intel

Storage Performance Development Kit (SPDK) Daniel Verkamp, Software Engineer

Intel Parallel Studio XE 2015 Composer Edition for Linux* Installation Guide and Release Notes

This guide will show you how to use Intel Inspector XE to identify and fix resource leak errors in your programs before they start causing problems.

Transcription:

IN-PERSISTENT-MEMORY COMPUTING WITH JAVA ERIC KACZMAREK INTEL CORPORATION

LEGAL DISCLAIMER & OPTIMIZATION NOTICE INFORMATION IN THIS DOCUMENT IS PROVIDED AS IS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO THIS INFORMATION INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT. Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products. Copyright 2016, Intel Corporation. All rights reserved. Intel, Pentium, Xeon, Xeon Phi, Core, VTune, Cilk, and the Intel logo are trademarks of Intel Corporation in the U.S. and other countries. Optimization Notice Intel s compilers may or may not optimize to the same degree for non-intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice. Notice revision #20110804

IN-MEMORY COMPUTING Many sessions to discuss its value and approaches Definition from a quick search In-memory computing is the storage of information in the main random access memory (RAM) of dedicated servers rather than in complicated relational databases operating on comparatively slow disk drives ** - Techopedia.com I/O

WHY NO I/O Is this the name/title of the interface? If not, "interface" should be lower case. My guess is that is should read "Behind a SATA/SAS/PCIE interface" Behind a SATA/SAS/PCIE interface High access latencies Low read/write bandwidth Data stored as a stream of bytes

TRADITIONAL STORAGE STILL RELEVANT Cheap High capacity Durable

SIDE BY SIDE STORAGE AND MEMORY Storage (HDD, SSD, NVMe) Memory (DRAM) Capacity Terabytes Gigabytes Durability Yes No (through software) Access Stream of bytes Random data access Bandwidth ~3GBps ~60GBps Latencies Microseconds Nanoseconds Complement each other

WHAT IF WE CAN HAVE THE BEST OF BOTH Storage (HDD, SSD, NVMe) Memory (DRAM) Capacity Terabytes Gigabytes Durability Yes No (through software) Access Stream of bytes Random data access Bandwidth ~3GBps ~60GBps Latencies Microseconds Nanoseconds

WHY NOT WITH A TRADITIONAL STORAGE There was a "click to add" still showing in the background. I removed the blank text box that was housing it. Vincent, Amber Latency (usecs) 30 22.5 15 The Media NVM Tread NVM xfer Controller ASIC Controller Firmware Platform Link xfer & protocol (NVMe/PCIe) Driver Storage Stack File System 7.5 I/O Overhead 0 NAND MLC NVMe SSD (4kB read) DIMM Memory (64B read)

WHY NOT WITH A TRADITIONAL STORAGE There was a "click to add" still showing in the background. I removed the blank text box that was housing it. Vincent, Amber 30 22.5 The Media NVM Tread NVM xfer Controller ASIC Controller Firmware Platform Link xfer & protocol (NVMe/PCIe) Driver Storage Stack File System factors like controller latency, drivers, PCI-E performance and software stacks. Application performance will not equal the 15 media performance Latency (usecs) I/O performance determined by more than the NVM media, 7.5 I/O Overhead 0 NAND MLC NVMe SSD (4kB read) DIMM Memory (64B read)

I removed the text box with "click to add content" INTRODUCING PERSISTENT MEMORY

PERSISTENT MEMORY DEFINITION AND VALUE Memory-like performance not a DRAM replacement Byte addressable no DRAM footprint Durable across applications or system restarts Large capacity (terabytes) Direct user mode access no kernel code in data path

PERSISTENT MEMORY I removed the text box with "click to add content" Vincent, Amber Made grey box slightly bigger for 30 Latency (usecs) 22.5 15 The Media 7.5 I/O Overhead 0 NAND MLC NVMe SSD (4kB read) DIMM Memory (64B read)

OPEN INDUSTRY PROGRAMMING MODEL 36+ Member Companies SNIA Technical Working Group Defined 4 programming modes required by developers Spec 1.0 developed, approved by SNIA voting members and published Interfaces for PM-aware file system accessing kernel PM support interfaces for application accessing a PM-aware file system Kernel support for block NVM extensions Interfaces for legacy applications to access block NVM extensions http://snia.org/sites/default/files/nvmprogrammingmodel_v1.pdf

C/C++ OPEN SOURCE NVM LIBRARY Application Standard File API Load/Store User Space NVM Libraries pmem-aware File System MMU Mappings Kernel Space Open Source: http://pmem.io Libpmem libvmem libvmmalloc libpmemobj libpmemblk Transactional libpmemlog NVDIMM

WHAT ABOUT JAVA Broad range of middleware developed in Java or Scala (JVM languages) Ex: Apache Spark, Apache Cassandra, Apache Ignite, Hazelcast IMDG, etc. Java abstracts hardware from the developer Hooks or hardware access possible through JNI, Unsafe, etc. but Not portable Performance overhead (data marshaling, thread safety, etc.) Might not be supported in future releases

EXPOSING PERSISTENT MEMORY TO JAVA Entire Java heap in Persistent Memory Heterogeneous Java Heap Persistent Collections for Java (PCJ)

ENTIRE JAVA HEAP IN PERSISTENT MEMORY Heap memory allocation on persistent memory No code changes java -Xmx32g -Xms16g -XX:HeapDir=/XPointFS/heap ApplicationClass JVM Heap memory Non-heap memory Ext4 DAX File System Persistent Memory DRAM

ENTIRE JAVA HEAP IN PERSISTENT MEMORY USE CASES In multi-jvm deployments to prioritize Java VMs. (ex: Oracle Fusion Apps) Applications which can benefit from large memory OpenJDK JEP: https://bugs.openjdk.java.net/browse/jdk-8171181

HETEROGENEOUS JAVA HEAP Java Heap Normal Heap Area Extended Heap Area User directed allocation Frequently accessed objects reside in DRAM (default) Garbage collection (G1 GC) collects both areas MCDRAM DRAM PM

HETEROGENEOUS JAVA HEAP INTERFACE Extended HeapArea size specified through flag Xmp (ex: -Xmx60g -Xmp500g) APIs for setting allocation context Java Heap // Set the allocation target to PM Heap.setAllocationTarget(AllocationTarget.PM); HashMap user_records = new HashMap(1000000); // reset allocation target to DRAM. Heap.resetAllocationTarget(); PM DRAM

Where is data persistence?

PERSISTENT COLLECTIONS FOR JAVA Library of persistent classes Custom persistent classes Low-level Memory Regions https://github.com/pmem/pcj

LIBRARY OF PERSISTENT CLASSES Primitive arrays (e.g. PersistentByteArray, mutable and immutable) PersistentArray<E extends PersistentObject> (mutable and immutable) Primitive types (as field and array element values, no separate clas PersistentTuple<T1 extends PersistentObject, > (mutable and immutable) Boxed primitives (e.g. PersistentLong) PersistentArrayList<E extends PersistentObject> PersistentString PersistentHashMap<K extends PersistentObject, V extends PersistentObject> PersistentByteBuffer PersistentLinkedList<E extends PersistentObject> PersistentAtomicReference<T extends PersistentObject> PersistentLinkedQueue<E extends PersistentObject> PersistentSkipListMap<K extends PersistentObject, V extends PersistentObject> PersistentFPTreeMap<K extends PersistentObject, V extends PersistentObject> PersistentSIHashMap<K extends PersistentObject, V extends PersistentObject> ObjectDirectory - indefinitely reachable root map of <String, T extends PersistentObject> Development in Progress

LIBRARY OF PERSISTENT CLASSES State stored on persistent heap Instances behave like regular Java objects, just longer-lived Reachability-based lifetime Easy-to-understand data consistency model (transactional)

USING PERSISTENT COLLECTIONS PersistentIntArray data = new PersistentIntArray(1024); ObjectDirectory.put( MyApplicationData", data); // no serialization, reference to array is written data.set(0, 123); // Restart JVM or system PersistentIntArray data1 = ObjectDirectory.get("MyApplicationData",PersistentIntArray.class); assert(data.get(0) == 123);

SUPPORT FOR CUSTOM PERSISTENT CLASSES Extending built-in persistent class Creating a new persistent class

EXTENDING BUILT-IN PERSISTENT CLASS public class Employee extends PersistentTuple2<PersistentLong, PersistentString> { public Employee(PersistentLong id, PersistentString name) { } setid(id); setname(name); public PersistentLong getid() { } return _1(); public void setid(persistentlong id) { } _1(id); public PersistentString getname() { } return _2(); } public void setname(persistentstring name) { } _2(name); public String tostring() { } return String.format("Employee(%s, %s)", getid(), getname

CREATING A PERSISTENT CLASS

CREATING A PERSISTENT CLASS

LOW-LEVEL MEMORY REGIONS Interface from OpenJDK Panama project Get and set for byte, short, int, long (on persistent memory) Heap API to allocate and free MemoryRegions Developers can Retrofit existing code at low-level Create their own abstractions Three versions RawMemoryRegion -- useful for volatile use or when caller provides data consistency externally FlushableMemoryRegion -- includes flush() method and fail-safe isflushed() state TransactionalMemoryRegion -- writes are transactional

APPLICATIONS OF PERSISTENT MEMORY

APPLICATIONS OF PERSISTENT MEMORY All of In-Memory Computing Applications?

EVERYTHING SOUNDS SO EASY Not so Software innovation new programing paradigm: To persist or not to persist Think early days of the smart phone Any write could be your last write do you need the data when the application restarts? More than just large memory Existing software needs to be re-architected to unlock features and performance Apache Cassandra, Apache Spark Traditional memory still in every system applications need to be aware

CALL TO ACTION Innovate on persistence discover usages!! Feedback on Java persistent programing model

https://software.intel.com/en-us/persistent-memory JOIN THE DISCUSSION Learn about the Persistent Memory programming model - http://www.snia.org/forums/sssi/nvmp Join the pmem NVM Libraries Open Source project - http://pmem.io Read the documents and code supporting ACPI 6.1 and Linux NFIT drivers http://www.uefi.org/sites/default/files/resources/acpi_6.1.pdf https://github.com/pmem/ndctl http://pmem.io/documents/ https://github.com/01org/prd Intel Architecture Instruction Set Extensions Programming Reference https://software.intel.com/en-us/intel-isa-extensions Intel 3D XPointTM Memory https://software.intel.com/en-us/persistent-memory

Thank You