21
OpenNVM: From Standards to Solutions Software Optimizations for Non-Volatile Memory Nisha Talagala, Fusion-io

OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

OpenNVM: From Standards to Solutions Software Optimizations for Non-Volatile Memory

Nisha Talagala, Fusion-io

Page 2: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

Creating Flash-Aware Apps

Fusion-io Confidential 2

I/O source code written for disk

I/O source code written for disk

(Flash disguised to look like a disk)

Source code written for flash

Page 3: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

Standards to Solutions

Fusion-io Confidential 3

▸  Standardizing new capabilities •  SCSI

▸  INCITS SCSI (T10) active standards proposals: ▸  SBC-4 SPC-5 Atomic-Write

http://www.t10.org/cgi-bin/ac.pl?t=d&f=11-229r6.pdf ▸  SBC-4 SPC-5 Scattered writes, optionally atomic

http://www.t10.org/cgi-bin/ac.pl?t=d&f=12-086r3.pdf ▸  SBC-4 SPC-5 Gathered reads, optionally atomic

http://www.t10.org/cgi-bin/ac.pl?t=d&f=12-087r3.pdf

•  SNIA NVM-Programming TWG v1.0 http://snia.org/tech_activities/standards/curr_standards/npm

▸  Developing solutions •  Existing applications •  New applications •  Infrastructure

Page 4: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

Leveraging the Community

Fusion-io Confidential 4

http://www.opencompute.org/projects/storage

https://opennvm.github.io

Page 5: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

3 Contributions to the Community

Fusion-io Confidential 5

Current OpenNVM Repositories

Flash-aware Linux swap

When working set size exceeds the capacity of DRAM, demand page from a flash-aware virtual memory

subsystem.

Key-value interface to flash

Create NoSQL databases faster. Automate garbage collection of expired data.

Flash programming primitives

Use built-in characteristics of the Flash Translation Layer to perform journal-less updates (more performance and

less flash wear = lower TCO)

https://opennvm.github.io

Page 6: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

1st Contribution: Flash Primitives

Fusion-io Confidential 6

On GitHub: ▸ API specifications, such as:

•  nvm_atomic_write() •  nvm_batch_atomic_operations() •  nvm_atomic_trim()

▸  Sample program code

https://opennvm.github.io

Page 7: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

Flash Primitives: Sample Uses and Benefits

Fusion-io Confidential 7

▸  Databases

Transactional Atomicity: Replace various workarounds implemented in database code to provide write atomicity

example: MySQL double-buffed writes

▸  Filesystems

File Update Atomicity: Replace various workarounds implemented in filesystem code to provide file/directory update atomicity

example: journaling

▸  98% performance of raw writes Smarter media now natively understands atomic updates, with no additional metadata overhead.

▸  2x longer flash media life Atomic Writes can increase the life of flash media up to 2x due to reduction in write- ahead-logging and double-write buffering.

▸  50% less code in key modules Atomic operations dramatically reduce application logic, such as journaling, built as work-arounds.

Page 8: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

Atomic Writes: MySQL Example

Fusion-io Confidential 8

Traditional MySQL Writes

Buffer

SSD (or HDD)

Database

Database Server

DRAM Buffer

MySQL with Atomic Writes

ioMemory

Database

Database Server

DRAM Buffer

Page 9: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

2-4x Latency Improvement on Percona Server

Fusion-io Confidential 9

Sysbench 99% latency OLTP workload

XFS Double Write Atomic Writes

200

Late

ncy

0 0 Seconds 3600

Page 10: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

70% Transactions/sec Improvement on MariaDB Server

Fusion-io Confidential 10

1600

New

Ord

er T

rans

actio

ns (1

0 se

c)

0 0 Seconds 7000

Atomic Writes Ext4 No-DoubleWrite Ext4 DoubleWrite

XtraDB 5.5.30 – Atomics | TPC-C – 2500 warehouses | 230GB data – 50GB buffer pool

Page 11: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

2nd Contribution: Linux Fast-Swap

Fusion-io Confidential 11

On GitHub: ▸ Documentation ▸  Experimental Linux kernel

with virtual memory swap patch (3.6 kernel)

▸  Benchmarking utility

https://opennvm.github.io

Page 12: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

Improving Linux Swap (Demand-paging)

Fusion-io Confidential 12

System Memory Disks Default Swap

System Memory ioMemory/Flash Optimized Swap

Originally designed as a last resort to prevent OOM (out-of-memory) failures •  Never tuned for high-performance demand-paging •  Never tuned for multi-threaded apps •  Poor performance

Tuned for flash (leverages characteristics) •  O(1) algorithm for swap_out – reduce algorithm time and leverage fast random I/O •  Per CPU reclaim – greater throughput for multi-threaded environments •  Intelligent read-ahead on swap-in – cut legacy, disk-era cruft for rotational latency

Page 13: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

3x Performance with Fast Swap

Fusion-io Confidential 13

2500000

Mem

ory

Ops

/s

0 0 Time 800

≈2x improvement in page-out rate

≈3.5x improvement in page-in and out rate

≈3x reduction in load completion time

Improved OS-Swap

Default OS-Swap

Page 14: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

3rd Contribution: Key-Value Interface

Fusion-io Confidential 14

On GitHub: ▸  API specifications, such as:

•  nvm_kv_put() •  nvm_kv_get() •  nvm_kev_batch_put() •  nvm_kv_set_global_expiry()

▸  KV library source code ▸  Sample program code ▸  Benchmarking utility ▸  Community contributions –

Java bindings

https://opennvm.github.io

Page 15: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

Key-Value Interface: Sample Uses and Benefits

Fusion-io Confidential 15

▸  NoSQL Applications

Increase performance by eliminating packing and unpacking blocks, defragmentation, and duplicate metadata at application layer.

Reduce application I/O through batched operations.

Reduce overprovisioning due to lack of coordination between two layers of garbage collection (application-layer and flash-layer). Some top NoSQL applications recommend over-provisioning by 3x due to this.

▸  Near performance of raw device Smarter media now natively understands a key-value I/O interface with lock-free updates, crash recovery, and no additional metadata overhead.

▸  3x throughput on same SSD Early benchmarks comparing against synchronous levelDB show over 3x improvement.

▸  Up to 3x capacity increase Dramatically reduces over-provisioning through coordinated garbage collection and automated key expiry.

Page 16: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

Key-Value Interface for Performance Key-Value get/put, Raw read/write, levelDB read/write

Fusion-io Confidential 16

450000

Ops

/s

0 0 Threads 16 Threads

0 0

160000

Ops

/s

Leveldb-sync

Raw Device

NVMKV

16

Page 17: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

Leveraging the Community

Fusion-io Confidential 17

OpenNVM

Welcome to the open source project for creating new interfaces for non-volatile memory (like flash).

GNU Public License v2.0

http://www.opencompute.org/projects/storage

https://opennvm.github.io

Page 18: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

Community Participation

Fusion-io Confidential 18

Page 19: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

OpenNVM, Standards, and Consortiums

Fusion-io Confidential 19

▸  opennvm.github.io •  Primitives API specifications, sample code •  Linux swap kernel patch and benchmarking tools •  key-value interface API library, sample code, benchmark tools

▸  INCITS SCSI (T10) active standards proposals: •  SBC-4 SPC-5 Atomic-Write

http://www.t10.org/cgi-bin/ac.pl?t=d&f=11-229r6.pdf •  SBC-4 SPC-5 Scattered writes, optionally atomic

http://www.t10.org/cgi-bin/ac.pl?t=d&f=12-086r3.pdf •  SBC-4 SPC-5 Gathered reads, optionally atomic

http://www.t10.org/cgi-bin/ac.pl?t=d&f=12-087r3.pdf

▸  SNIA NVM-Programming TWG v1.0 http://snia.org/tech_activities/standards/curr_standards/npm

Page 20: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

Join us at opennvm.github.io

Fusion-io Confidential 20

Current OpenNVM Repositories

Flash-aware Linux swap

When working set size exceeds the capacity of DRAM, demand page from a flash-aware virtual memory

subsystem.

Key-value interface to flash

Create NoSQL databases faster. Automate garbage collection of expired data.

Flash programming primitives

Use built-in characteristics of the Flash Translation Layer to perform journal-less updates (more performance and

less flash wear = lower TCO).

https://opennvm.github.io

Page 21: OpenNVM: From Standards to Solutions...Nisha Talagala, Fusion-io Creating Flash-Aware Apps 2 Fusion-io Confidential I/O source code written for disk I/O source code written for disk

Thank You

f u s i o n i o . c o m | S A M E P L A N E T. D I F F E R E N T W O R L D .