Top Banner
Accelerating Lustre with SSDs and NVMe James Coomer, DDN
19

Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

May 13, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

Accelerating Lustre with SSDs and NVMe

James Coomer, DDN

Page 2: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

DDN ExaScaler Software Components2

DDN DDN & Intel Intel HPDD 3rd Party

Intel DSS

DDN Block Storage with SFX Cache

ldiskfsOpenZFS btrfs

DDN Lustre Edition with L2RC

Intel IMLDDN ExaScaler

DDN IMENFS/CIFS/S3DDN Clients

DDN DirectMon DDN ExaScaler Monitor

Intel Hadoop

ExaScaler Data Management FrameworkFast Data

CopyObject (WOS)S3 (Cloud)Tape

3rd Party HW

Management and Monitoring

Global Filesystem

Local Filesystem

Storage Hardware

Data Management

Level 3 support provided by:

OFD Read Cache Layer

Page 3: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

DDN | ES14K Designed for Flash and NVMe

Industry Leading Performance in 4U Up to 40 GB/sec throughput Up to 6 million IOPS to cache Up to 3.5 million IOPS to storage 1PB+ capacity (with 16TB SSD) 100 millisecond latency

Configuration Options 72 SAS SSD or 48 NVMe SSDs or HDDs only HDDs with SSD caching SSDs with HDD tier

Connectivity FDR/EDR OmniPath 40/100GbE

Page 4: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

ES14K Architecture

QPI

IB/OPA 40/100 GbE

6 x SAS3

SFA14KE (Haswell) SFA14KEX (Broadwell)

OSS 0

SFAOS

OSS 1

SFAOS CPU1

6 x SAS3

QPI

6 x SAS3

OSS 0

SFAOS SFAOS

6 x SAS3

OSS 1

IB/OPA 40/100 GbE

CPU0 CPU1CPU0

Page 5: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

Why SSD Cache?Don't blow the power/space/management with spindles

Write MB/s 4k Read IOPSSSDs still pricey... So► Optimise Data for SSDs► Optimise SSDs for Data

1101001,00010,000100,0001,000,00010,000,000100,000,0001,000,000,000

0

200,000

400,000

600,000

800,000

1,000,000

1,200,000

SeagateMakara(4 TB)

HGSTUltrastar

(1.8TB/10k

rpm)

SeagateTardis (4TB/10k

rpm)

SanDiskCloudSpeed(SSD

SATA)

ToshibaPx04 (SSD

SAS)

Intel DCP3700(SSD

NVMe)

Page 6: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

Data residing on

SSD

Data benefitting from SSD

IO acceleration

from SSD

all data

Page 7: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

all data

IO acceleration

from SSD

Data residing on

SSD

Data benefitting from SSD

Page 8: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

OSS OSS OSS OSS OSS OSS OSS OSS OSS

IME

OSS OSS OSS

SFX

Block-Level Read Cache

Instant Commit, DSS, fadvice()

Millions of Read IOPS

L2RC

OSS-level Read cache

Heuristics with FileHeat

Millions of Read IOPS

IME

I/O level Write and Read Cache

Transparent + hints

10s of Millions of Read/Write IOPS

All SSD Lustre

Lustre HSM for Data Tiering to

HDD namespace

Generic Lustre I/O

Millions of Read and Write IOPS

SSD Options1 2 3 4

Page 9: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

1. Rack Performance: Lustre

050

100150200250300350400

Write Read

IOR File-per-Process (GB/s)

0

1,000,000

2,000,000

3,000,000

4,000,000

5,000,000

Read

4k Random Read IOPS

350GB/s Read and Write (IOR)

4 Million IOPs

up to 4PB Flash Capacity

Page 10: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

2. SFX & ReACT – Accelerating ReadsIntegrated with Lustre DSS

HDD Tier

DRAM Cache

OSS

SFX Tier

Large Reads

Small Reads

Small Rereads

Cache Warm

DSS

SFX

API

Page 11: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

2. 4 KiB Random I/O

15,587 14,184 17,070

174,344

14,486 14,984 13,008 13,001

020,00040,00060,00080,000

100,000120,000140,000160,000180,000200,000

No SFX/SSD Metadata No SFX Metadta Mix With SFX / MetadataMix

SFX Read Hit

IOPS

Read Write

First Time I/O

Second Time I/OSFA Read Hit

Page 12: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

3. Lustre L2RC and File Heat

OSS OSS OSS

Heap of Object Heat

Values

PREFETCH

Higher heat == Higher access

frequency

Lower heat == Lower access frequency

OSS-based Read Caching– Uses SSDs (or SFA SSD pools) on the

OSS as read cache– Automatic prefetch management

based on file heat– File-heat is a relative (tunable)

attribute that reflects file access frequency

– Indexes are kept in memory (worst case is 1 TB SSD for 10 GB memory)

– Efficient space management for the SSD cache space (4KB-1 MB extends)

– Full support for ladvice in Lustre

Page 13: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

3. File Heat Utility

• tune the arguments of file heat with proc interfaces/proc/fs/lustre/heat_period_second/proc/fs/lustre/heat_replacement_percentage

• Utils to get file heat values: lfs heat_get <file>

• Utils to set flags for file heat:lfs heat_set [--clear|-c] [--off|-o] [--on|-O] <file>

• Heat can be cleared by: lfs heat_set --clear

• Heat accounting of a file can be turned off by: lfs heat_set --off

• Heaps on OSTs which can be used to dump lists of FIDs sorted by heat:[root@server9-Centos6-vm01 cache]# cat /proc/fs/lustre/obdfilter/lustre-OST0000/heat_top[0x200000400:0x1:0x0] [0x100000000:0x2:0x0]: 0 740 0 775946240[0x200000400:0x9:0x0] [0x100000000:0x6:0x0]: 0 300 0 314572800[0x200000400:0x8:0x0] [0x100000000:0x5:0x0]: 0 199 0 208666624[0x200000400:0x7:0x0] [0x100000000:0x4:0x0]: 0 100 0 104857600[0x200000400:0x6:0x0] [0x100000000:0x3:0x0]: 0 100 0 104857600

Page 14: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

3. Random Read Performance with L2RC

14

40 xSpindleDrive

80 xSpindleDrive

160 xSpindleDrive

160 xSpindle

Drive withL2RC

4 x OSTon SSD

4 xSSD(RAID

1) Rawdevice

4K Random IOPS 13,739 26,064 38,688 389,232 416,994 440,428

0

50,000

100,000

150,000

200,000

250,000

300,000

350,000

400,000

450,000

500,000

IOPS

(ops

/sec

)4KB Random Read IOPS (HDD/SSD based OST vs. OST & L2RC)

10x

Page 15: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

DDN | IMEApplication I/O Workflow

NVM TIER LUSTRECOMPUTE

Lightweight IME client intercepts application I/O. Places fragments into buffers + parity

IME client sends fragments to IME servers

IME servers write buffers to NVM and manage internal metadata

IME servers write aligned sequential I/O to SFA backend

Parallel File system operates at maximum efficiency

Page 16: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

IME server IME server IME server IME server

4. IME Write Dataflow

IME server

Application

IME Client

Parallel Filesystem

1. Application issues fragmented, misaligned IO

2. IME clients send fragments to IME servers

3. Fragments are sent to IME servers and are

accessible via DHT to all clients

4. Fragments to be flushed from IME are assembled into

PFS stripes

5. PFS receives complete aligned PFS

stripe

ApplicationApplicationApplication

IME ClientIME ClientIME Client

COMPUTE NODES

Page 17: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

4. IME Erasure Coding

• Data protection against IME server or SSD Failure is optional– (the lost data is "just cache”)

• Erasure Coding calculated at the Client– Great scaling with extremely high client count– Servers don't get clogged up

• Erasure coding does reduce useable Client bandwidth and useable IME capacity:– 3+1: 56Gb 42Gb – 5+1: 56Gb 47Gb – 7+1: 56Gb 49Gb – 8+1: 56Gb 50Gb

COMPUTE NODES

IME

PFS

LUSTRE

PFS PFS

Data buffer

Parity buffer

Data buffer

Data buffer

Page 18: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

4. Rack Performance: IME

500GB/s Read and Write

50 Million IOPs

768TB Flash Capacity0

100

200

300

400

500

600

Write Read

IOR File-per-Process (GB/s)

1

10

100

1,000

10,000

100,000

1,000,000

10,000,000

100,000,000

Write Read

4k Random IOPS

Page 19: Accelerating Lustre with SSDs and NVMe - OpenSFScdn.opensfs.org/wp-content/uploads/2016/04/LUG2016D2...Instant Commit, DSS, fadvice() Millions of Read IOPS L2RC OSS-level Read cache

Summary

• SSDs can today be seamlessly introduced into a Lustre Filesystem– Modest investment in SSDs– Intelligent policy-driven data moves the most appropriate blocks/files to SSD

cache– Block level and Lustre Object Level data placement schemes

• IME is a ground-up NVM distributed cache which adds– Write Performance optimisation (not just read)– Small, random I/O optimisations– Shared (many-to-one) file optimisations– Improved SSD lifetime– Back-end Lustre IO optimisation