honest performance testing with ndbench

50
Honest Performance Testing with NDBench Netflix Data Benchmark

Upload: vinay-kumar-chella

Post on 08-Feb-2017

96 views

Category:

Data & Analytics


6 download

TRANSCRIPT

Page 1: Honest performance testing with NDBench

Honest Performance Testing withNDBenchNetflix Data Benchmark

Page 2: Honest performance testing with NDBench
Page 3: Honest performance testing with NDBench
Page 4: Honest performance testing with NDBench
Page 5: Honest performance testing with NDBench

• CDE, Cloud Database Engineering

• Providing data stores as a service○Cassandra

○Dynomite

○Elasticsearch and RDS

Who are we?

Page 6: Honest performance testing with NDBench

Vinay Chella

Cloud Data ArchitectCassandra MVPCloud Database Engineering @ Netflix

Page 7: Honest performance testing with NDBench

• 98% of streaming data is stored in Cassandra

• Data ranges from customer details to Viewing history / streaming bookmarks to billing and payment

Cassandra @ Netflix

Page 8: Honest performance testing with NDBench

Agenda

• Background

• Why NDBench?

• Architecture

• Usage

• Achievements

• Roadmap

• Take away

Page 9: Honest performance testing with NDBench

Perf testing persistence layer?

Page 10: Honest performance testing with NDBench

Capacity in my existing fleet?

Page 11: Honest performance testing with NDBench

Why?

Why not already existing Perf testing tools?

Page 12: Honest performance testing with NDBench

What is NDBench?

Netflix Data Benchmark (NDBench) is a Pluggable cloud-enabled benchmarking tool that can be used

across any data store system.

Page 13: Honest performance testing with NDBench

Side by Side comparison

Page 14: Honest performance testing with NDBench

Different driver/ software versions

Page 15: Honest performance testing with NDBench

Different instance types

Page 16: Honest performance testing with NDBench

Dynamically tunable configurations

Page 17: Honest performance testing with NDBench

Varying data models

Page 18: Honest performance testing with NDBench

Pluggable Patterns & Loads

Page 19: Honest performance testing with NDBench

Different Client APIs

Page 20: Honest performance testing with NDBench

Netflix homegrown

• Well integrated with netflix OSS infrastructure

Page 21: Honest performance testing with NDBench

Architecture

Page 22: Honest performance testing with NDBench

What is Pluggable?

• Load Patterns

• Load tests

Page 23: Honest performance testing with NDBench

Load Patterns

• Random

• Sliding Window

Page 24: Honest performance testing with NDBench

Load Tests

• Cassandra-JavaDriver

• Elastic Search

•Dynomite

• Cassandra-Astyanax

• In-Memory Test

Page 25: Honest performance testing with NDBench

What can be configured?

• ndbench.driver.numKeys - 1000000

• ndbench.driver.dataSize - 200 bytes

• ndbench.driver.numWriters - 1

• ndbench.driver.numReaders - 1

• ndbench.driver.writeRateLimit - 100

• ndbench.driver.readRateLimit - 200

• ndbench.driver.useVariableDataSize - false

• Many more….

Page 26: Honest performance testing with NDBench

Dynamic Script

Page 27: Honest performance testing with NDBench

How to use it

• REST API

•UI

Page 28: Honest performance testing with NDBench

REST API• Initialization

- Initialize: /pappy/driver/init/{DriverName}

- Init Script: /pappy/driver/initfromscript

• Perf API

- Start writes: /pappy/driver/startWrites

- Start reads: /pappy/driver/startReads

- Stop everything: /pappy/driver/stop

• Sanity check

- Verify Read: /pappy/driver/readSingle/key

- Verify Write: /pappy/driver/writeSingle/key

- Verify Read: /pappy/driver/readSingle/key

• Backfill

- Data Backfill: /pappy/driver/startDataFill

- DataBackfill Async: /pappy/driver/startDataFillAsync

• Status API

- /pappy/driver/{getRead/Write}Status

- /pappy/driver/getserverstatus

Page 29: Honest performance testing with NDBench

NDBench Demo...

Page 30: Honest performance testing with NDBench
Page 31: Honest performance testing with NDBench

NDBench @ Netflix

•As a

-Benchmarking Tool

- Integration Tests

-Deployment Validation

Page 32: Honest performance testing with NDBench

NDBench’s Achievements @ Netflix

Page 33: Honest performance testing with NDBench

N+1

Page 34: Honest performance testing with NDBench

C* 1.2 → C* 2.0, C*2.0 → C* 2.1

Page 35: Honest performance testing with NDBench

C* 2.0 vs C* 2.1 (Reads - Thrift)

Page 36: Honest performance testing with NDBench

C* 2.0 vs C* 2.1 (Writes - Thrift)

Page 37: Honest performance testing with NDBench

CentOS ---> Trusty

Page 38: Honest performance testing with NDBench

CentOS -> Trusty Migration

Page 39: Honest performance testing with NDBench

LCS on CentOS vs Trusty (writes)

Page 40: Honest performance testing with NDBench

LCS on CentOS vs Trusty (Reads)

Page 41: Honest performance testing with NDBench

Java 7 → Java 8

Page 42: Honest performance testing with NDBench

C* on Java 7 vs Java 8 (Writes)

Page 43: Honest performance testing with NDBench

C* on Java 7 vs Java 8 (Reads)

Page 44: Honest performance testing with NDBench

C* AMI Certification Pipeline

Page 45: Honest performance testing with NDBench

Dynomite benchmarking

• Generating Millions of Ops/ sec

Page 46: Honest performance testing with NDBench

Dynomite benchmarking

Page 47: Honest performance testing with NDBench

Roadmap

• Performance profile management

•Automated metrics analysis

•Dynamic load generation based on destination

schema

Page 48: Honest performance testing with NDBench

https://github.com/Netflix/ndbench

Page 49: Honest performance testing with NDBench

Take away

“Test the honesty of your data models, persistence layers in Cloud ecosystem using NDBench”

Page 50: Honest performance testing with NDBench

Q & A