18
© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 1 Aerospike aer . o . spike [air-oh- spahyk] noun, 1. tip of a rocket that enhances speed and stability IN-MEMORY NOSQL, Now OPEN SOURCE! 1MTPS ON AMAZON @ $1.68/HR RAJKUMAR IYER

Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

Embed Size (px)

DESCRIPTION

Rajkumar Iyer and Sunil Sayyaparaju reveal how their team proved that cost-effective, high performance in the cloud isn’t a myth. They will walk through the 10-step process to efficiently set up high-performance instances on Amazon EC2 with Aerospike.

Citation preview

Page 1: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 1

Aerospike aer . o . spike [air-oh- spahyk] noun, 1. tip of a rocket that enhances speed and stability

IN-MEMORY NOSQL, Now OPEN SOURCE!

1MTPS ON AMAZON @ $1.68/HR

RAJKUMAR IYER

Page 2: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 2

AGENDA

■Share knowledge we gained while trying to get best out of Amazon running Aerospike database.

■List out steps and Demonstrate 1 Million TPS on a single instance applying the above principle in Amazon

■Keep it Interactive

Page 3: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 3

INSTANCE TYPES

Instance Name Comment

R3.* Memory Intensive

C3.* Compute Intensive

M3.* Balance between R and C

T* A very low end beginner machine

M1.* Previous Generation. Low network.

Page 4: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 4

NETWORK TYPES

Instance Type Network Type

*.large, *.xlarge Moderate

*.2xlarge Moderate - High

*.4xlarge High

*.8xlarge 10 Gbps

Moderate - Upper bound of 100MBps)

High - Ranges from 300Mbps to 1.8Gbps

10 Gigabit   - Upper bound of 8.8 Gbps)

Page 5: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 5

OLD GENERATION INSTANCES

■m1.* and t1.* has low to moderate network.

■Are being retired.

■Reliability Guarantee are lowest of all.

■Can be used for developer activity.

■Not for running high performance service.

Page 6: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 6

NEW GENERATION INSTANCES

■C3.* R3.* and I3.* has Moderate to 10 Gbps network Capability

■*.4xlarge and above instances are shared with lot less other instances.

■Reliability Guarantee is on higher side. Barring Availability zone failure.

■Can be used for Real Service.

Page 7: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 7

VIRTUAL MACHINE TYPE

■PV *.8xlarge though rated at 10Gbps they upper bounded at 2.2 Gpbs (iperf result)

■PV overhead at high load is around 40% of entire CPU utilization.

■HVM has much better CPU utilization and network utilization.

■HVM nearly outperform PV instance by 3x. On apple-to-apple comparison of C3.8xlarge HVM gave 215ktps vs 85ktps on PV.

Page 8: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 8

NETWORK PACKET PROCESSING

■Soft Interrupt Processing (% si in top) is one of the largest CPU drains in the client-server network based system.

■In AWS a NIC is 2 queues as exposed. Interrupt for which can be only be serviced on two cores. This causes core bottleneck at high throughput rates.

■Single NIC peaks at 250ktps processing. Trick is to use multiple NICs

■Interrupt coalescing improves CPU utilization a little but did not translate into better processing.

Page 9: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 9

NETWORK PACKET PROCESSING

■Receive Packet Steering to spread IRQ processing over multiple cores. Single NIC with RPS enabled can push up to 800ktps with interrupts spread over 8 cores.echo ff | sudo tee /sys/class/net/eth0/queues/rx-[0-1]/rps_cpus

■ENIs provides a way of adding multiple (virtual) NICs to an instance. IRQ processing for each spread over different core is optimal.echo 1 | sudo tee /proc/irq/<irq number>/smp_affinity

■Using ENIs with private IPs is free of cost.

Page 10: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 10

MISCELLANEOUS

■Having instances in the same PLACEMENT GROUP lets instances have low-latency, full bisection 10 Gbps network.

■Instances have to be in a VPC to be in same placement group

■Shared vs Dedicated tenancy in the new generation instances did not seem to matter as we experimented.

■To avoid CPU stealing, avoid over user of CPU. Typically running with large number of threads.

Page 11: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 11

SETUP INSTANCES

■Setup Security group with following ports open.3000-3003 [Internode communication]8081 [Aerospike Monitoring Console]22 [ssh to the host ]

■Setup c3.8xlarge HVM instances in a VPC. Set it up with Placement Group

■Attach 3 additional ENI to the server instance. Setup RPS on each one of them.

■Setup 5 c3.2xlarge instances to run as a client. Put them in same VPC and Placement group as server instance.

Page 12: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 12

SETUP AEROSPIKE SERVER

■On server instance. Run afterburner.sh (cd /opt/aerospike/bin; sudo ./afterburner.sh) to set the optimal number of threads on each Aerospike server.

■Configure the in-memory namespace to use 32GB of RAM (/etc/aerospike/aerospike.conf)

■Start the Aerospike Serversudo service aerospike start

■Start the Aerospike Monitoring Console on one of the client instances.sudo service amc start

Page 13: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 13

FIRE THE LOAD

■Load the server with data using Java benchmark client.

cd <java client>/benchmarks./run_benchmarks -z 64 -n test -w I  -o S:10 -b 10 -l 23 -k 10000000 -latency 5,1 -h YOUR_AWS_INTERNAL_IP

■Run the clients with 100% read load. Point each client to a separate private IP on different ENIs.

cd <java client>/benchmarks./run_benchmarks -z 64 -n test -w RU,100  -o S:10 -b 10 -l 23 -k 10000000 -latency 5,1 -h YOUR_AWS_INTERNAL_IP

Page 14: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 14

RESULT

4 interfaces with proper irq affinity and 8 client processes on 4 client instances, we were able to get up to 960ktps on a single c3.8xlarge server instance.

Page 15: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 15

CLUSTER SETUP

■4 node Aerospike cluster with data in memory (RAM)

■40 Million unique objects in cluster.

■100 bytes record size; 10 bins of 10 bytes each.

■Replication Factor 2 with synchronous replication for immediate consistency.

Page 16: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 16

INSTANCES

Instance Type Comment

m1.large Previous Generation

m3.xlarge Current Generation without Enhanced networking

r3.2xlarge Current Generation with Enhanced Networking

r3.large Current Generation low end

Page 17: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 17

NODES vs TPS

Page 18: Running a High Performance NoSQL Database on Amazon EC2 for Just $1.68/Hour

© 2014 Aerospike, Inc. All rights reserved. Confidential. | 1Mtps On Amazon @ $1.68/hr– September 4, 2014 | 18

COST ANALYSIS