Honest Performance Testing with "NDBench" (Vinay Chella, Netflix) | Cassandra Summit 2016

DataStax 1,258 views 50 slides Oct 02, 2016
Slide 1
Slide 1 of 50
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50

About This Presentation

Apache Cassandra makes it possible to execute millions of operations per second in scalable fashion. Harnessing the power of C* leaves many developers pondering about the following:

- Is my data model appropriate and not going to end up as wide partition(s) causing heap pressure and other issues?
-...


Slide Content

Honest Performance Testing with NDBench Netflix Data Benchmark

Vinay Chella Cloud Data Architect Cassandra MVP Cloud Database Engineering @ Netflix

CDE, Cloud Database Engineering Providing data stores as a service Cassandra Dynomite Elastic s earch and RDS Who are we?

98% of streaming data is stored in Cassandra Data ranges from customer details to Viewing history / streaming bookmarks t o billing and payment Cassandra @ Netflix

Agenda Background Why NDBench? Architecture Usage Achievements Roadmap Take away

Perf testing persistence layer?

Capacity in my existing fleet?

Why? Why not already existing Perf testing tools?

What is NDBench? Netflix Data Benchmark (NDBench) is a P luggable cloud-enabled benchmarking tool that can be used across any data store system .

Side by Side comparison

Different d river/ software versions

Different i nstance types

Dynamically tunable configurations

Varying data models

Pluggable Patterns & Loads

Different Client APIs

Netflix homegrown Well integrated with netflix OSS infrastructure

Architecture

What is Pluggable? Load Patterns Load tests

Load Patterns Random Sliding Window

Load Tests Cassandra-JavaDriver Elastic Search Dynomite Cassandra-Astyanax In-Memory Test

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….

Dynamic Script

How to use it REST API UI

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

NDBench Demo...

NDBench @ Netflix As a Benchmarking Tool Integration Tests Deployment Validation

NDBench’s Achievements @ Netflix

N+1

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

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

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

CentOS ---> Trusty

CentOS -> Trusty Migration

LCS on CentOS vs Trusty (writes)

LCS on CentOS vs Trusty (Reads)

Java 7 → Java 8

C* on Java 7 vs Java 8 (Writes)

C* on Java 7 vs Java 8 (Reads)

C* AMI Certification Pipeline

Dynomite benchmarking Generating Millions of Ops/ sec

Dynomite benchmarking

Roadmap Performance profile management Automated metrics analysis Dynamic load generation based on destination schema

https://github.com/Netflix/ndbench

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

Q & A