SlideShare une entreprise Scribd logo
1  sur  72
Load-Testing &
        Benchmarking Riak
           Sean Cribbs       Jon Meredith
        Developer Advocate    Developer




basho
Why Benchmark?




basho
Why Benchmark?
        •Minimize surprises during deployment




basho
Why Benchmark?
        •Minimize surprises during deployment
        •Test expected load




basho
Why Benchmark?
        •Minimize surprises during deployment
        •Test expected load
        •Test peak load



basho
Why Benchmark?
        •Minimize surprises during deployment
        •Test expected load
        •Test peak load
        •Assess headroom


basho
Why Benchmark?
        •Minimize surprises during deployment
        •Test expected load
        •Test peak load
        •Assess headroom
        •Find failure points

basho
Why Benchmark?
        •Minimize surprises during deployment
        •Test expected load
        •Test peak load
        •Assess headroom
        •Find failure points
        •You must measure to know!
basho
Types of Benchmarks




basho
Types of Benchmarks
        •Throughput




basho
Types of Benchmarks
        •Throughput
         •operations / sec




basho
Types of Benchmarks
        •Throughput
         •operations / sec
         •systems experience



basho
Types of Benchmarks
        • Throughput           May be multiple
                                 requests!
         •operations / sec
         •systems experience



basho
Types of Benchmarks
        • Throughput           May be multiple
                                 requests!
         •operations / sec
         •systems experience
        •Latency


basho
Types of Benchmarks
        • Throughput           May be multiple
                                 requests!
         •operations / sec
         •systems experience
        •Latency
         •time per operation

basho
Types of Benchmarks
        • Throughput           May be multiple
                                 requests!
         •operations / sec
         •systems experience
        •Latency
         •time per operation
         •user experience
basho
Types of Benchmarks
        • Throughput           May be multiple
                                 requests!
         •operations / sec
         •systems experience
        •Latency
         •time per operation      Need mean,
         •user experience      median, percentiles


basho
Benchmarking
          Overview




basho
Benchmarking
                Overview
        •Determine your application’s needs




basho
Benchmarking
                Overview
        •Determine your application’s needs
        •Test typical and worst-case scenarios



basho
Benchmarking
                Overview
        •Determine your application’s needs
        •Test typical and worst-case scenarios
        •Minimize variables changed between
          scenarios




basho
Benchmarking
                Overview
        •Determine your application’s needs
        •Test typical and worst-case scenarios
        •Minimize variables changed between
          scenarios

        •Run early, run often

basho
Benchmarking Steps




basho
Benchmarking Steps

        •Start up your test cluster




basho
Benchmarking Steps

        •Start up your test cluster
        •Configure a test




basho
Benchmarking Steps

        •Start up your test cluster
        •Configure a test
        •Run the test against the cluster



basho
Benchmarking Steps

        •Start up your test cluster
        •Configure a test
        •Run the test against the cluster
        •Generate pretty graphs (requires R)


basho
Benchmarking Steps

        •Start up your test cluster
        •Configure a test
        •Run the test against the cluster
        •Generate pretty graphs (requires R)
        •Interpret graphs, tweak, re-test
basho
basho_bench




basho
basho_bench
        •Dave “Dizzy” Smith’s experience testing
          instant messaging and database systems




basho
basho_bench
        •Dave “Dizzy” Smith’s experience testing
          instant messaging and database systems

        •Created for internal benchmarking



basho
basho_bench
        •Dave “Dizzy” Smith’s experience testing
          instant messaging and database systems

        •Created for internal benchmarking
        •Benchmark anything key/value-like


basho
basho_bench
        •Dave “Dizzy” Smith’s experience testing
          instant messaging and database systems

        •Created for internal benchmarking
        •Benchmark anything key/value-like
        •Used heavily on innostore and bitcask

basho
basho_bench
        •Dave “Dizzy” Smith’s experience testing
          instant messaging and database systems

        •Created for internal benchmarking
        •Benchmark anything key/value-like
        •Used heavily on innostore and bitcask
        •Simple, extensible Erlang API
basho
basho_bench
basho
worker   worker   worker   worker




                 basho_bench
basho
Event Generator
                   get    update
                  80%      20%




        worker   worker   worker   worker




                 basho_bench
basho
Event Generator
                    get       update
                   80%         20%




        worker    worker      worker      worker

             Driver (HTTP, Protobuffs, etc)




                 basho_bench
basho
Event Generator
                    get       update
                   80%         20%

                                                     Key
                                                   Generator
                                                    uniform
        worker    worker      worker      worker    integer

             Driver (HTTP, Protobuffs, etc)




                 basho_bench
basho
Event Generator
                    get       update
                   80%         20%

                                                     Key
                                                   Generator
                                                    uniform
        worker    worker      worker      worker    integer

             Driver (HTTP, Protobuffs, etc)
                                                    Value
                                                   Generator

                                                     fixed
                                                     8KB




                 basho_bench
basho
Event Generator
                    get       update
                   80%         20%

                                                     Key
                                                   Generator
                                                    uniform
        worker    worker      worker      worker    integer

             Driver (HTTP, Protobuffs, etc)
                                                    Value
                                                   Generator

                                                     fixed
                        Riak                         8KB




                 basho_bench
basho
Demo



basho
Microbenchmarks
            Are Bad




basho
Microbenchmarks
              Are Bad
        •Benchmarks should be long-running




basho
Microbenchmarks
              Are Bad
        •Benchmarks should be long-running
         •Cache warmup




basho
Microbenchmarks
              Are Bad
        •Benchmarks should be long-running
         •Cache warmup
         •Page flushes



basho
Microbenchmarks
              Are Bad
        •Benchmarks should be long-running
         •Cache warmup
         •Page flushes
         •RAM vs. Disk


basho
Microbenchmarks
              Are Bad
        •Benchmarks should be long-running
         •Cache warmup
         •Page flushes
         •RAM vs. Disk
         •Test the limits of the infrastructure
basho
basho
Key Generation

        •sequential_int_bin
        •uniform_int_bin
        •pareto_int_bin


basho
Uniform Distribution
                         {uniform_int_bin, 10000}
                                                        CDF Uniform




                                      1.0
                                      0.8
        • Equal chance
                                      0.6
          of selecting
                                cdf
          any key                     0.4
                                      0.2
                                      0.0




                                            0   2000   4000         6000   8000   10000

                                                              key




basho
Pareto Distribution
                        {pareto_int_bin, 10000}




                                                      1.0
                                                      0.8
        • Hard coded so
                              ppareto(x, 2000, 1.5)

                                                      0.6
          20% of keys
          receive 80%
                                                      0.4
          of requests                                 0.2
                                                      0.0




                                                            0   2000   4000       6000   8000   10000

                                                                              x




basho
Value Generation


        •fixed_bin
        •exponential_bin


basho
Exponential Distrib.
                        {exponential_bin, 5000, 2500}
                                                                     Exponential CDF




                                                    1.0
        • Value size:

                                                    0.8
          Min + Exp(Lambda)

                                                    0.6
                                  P(Size <= size)

        • Set Lambda                                0.4

          1 / (Mean - Min)
                                                    0.2
                                                    0.0




                                                          0   5000        10000        15000   20000

                                                                           size



basho
Benchmarking is Hard




basho
Benchmarking is Hard

        •Design an accurate test




basho
Benchmarking is Hard

        •Design an accurate test
        •Tool and system limits




basho
Benchmarking is Hard

        •Design an accurate test
        •Tool and system limits
        •Testing a multi-variate space



basho
Benchmarking is Hard

        •Design an accurate test
        •Tool and system limits
        •Testing a multi-variate space
        •Easy to take results out of context


basho
Benchmarking is Hard

        •Design an accurate test
        •Tool and system limits
        •Testing a multi-variate space
        •Easy to take results out of context
        •Everything is relative!
basho
Gotchas




basho
Gotchas

        •Running out of file handles




basho
Gotchas

        •Running out of file handles
        •Swapping / thrashing



basho
Gotchas

        •Running out of file handles
        •Swapping / thrashing
        •Running benchmark on same machine


basho
Conduct your own




basho
Conduct your own
        •Take metrics from existing app




basho
Conduct your own
        •Take metrics from existing app
         •Mixture of get/put/delete operations




basho
Conduct your own
        •Take metrics from existing app
         •Mixture of get/put/delete operations
         •Value size distribution



basho
Conduct your own
        •Take metrics from existing app
         •Mixture of get/put/delete operations
         •Value size distribution
         •Key distribution


basho
Conduct your own
        •Take metrics from existing app
         •Mixture of get/put/delete operations
         •Value size distribution
         •Key distribution
         •“Hot” and “cold” keys

basho
Conduct your own
        •Take metrics from existing app
         •Mixture of get/put/delete operations
         •Value size distribution
         •Key distribution
         •“Hot” and “cold” keys
        •Configure a test, run, RINSE & REPEAT
basho
Plug
        Interested in learning about support,
        consulting, or Enterprise features?
          
        Email info@basho.com or go to
        http://www.basho.com/contact.html to talk
        with us.

                      www.basho.com


basho

Contenu connexe

Tendances (7)

TorqueBox for Rubyists
TorqueBox for RubyistsTorqueBox for Rubyists
TorqueBox for Rubyists
 
Torquebox @ Charlotte.rb May 2011
Torquebox @ Charlotte.rb May 2011Torquebox @ Charlotte.rb May 2011
Torquebox @ Charlotte.rb May 2011
 
DataMapper on Infinispan
DataMapper on InfinispanDataMapper on Infinispan
DataMapper on Infinispan
 
test
testtest
test
 
Introduction to Apache Camel
Introduction to Apache CamelIntroduction to Apache Camel
Introduction to Apache Camel
 
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsSymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony Apps
 
Burp Plugin Development for Java n00bs - 44CON 2012
Burp Plugin Development for Java n00bs - 44CON 2012Burp Plugin Development for Java n00bs - 44CON 2012
Burp Plugin Development for Java n00bs - 44CON 2012
 

Similaire à Using Basho Bench to Load Test Distributed Applications

My experience in Software QA
My experience in Software QAMy experience in Software QA
My experience in Software QA
Leonid Mazur
 
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Matthew Cobby
 
Crash reports pycodeconf
Crash reports pycodeconfCrash reports pycodeconf
Crash reports pycodeconf
lauraxthomson
 
Know More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy KKnow More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy K
Roopa Nadkarni
 

Similaire à Using Basho Bench to Load Test Distributed Applications (20)

JBPM Past Present Future
JBPM Past Present FutureJBPM Past Present Future
JBPM Past Present Future
 
Intro to Drools - St Louis Gateway JUG
Intro to Drools - St Louis Gateway JUGIntro to Drools - St Louis Gateway JUG
Intro to Drools - St Louis Gateway JUG
 
Deep Dive into BPjs
Deep Dive into BPjsDeep Dive into BPjs
Deep Dive into BPjs
 
London Atlassian User Group - February 2014
London Atlassian User Group - February 2014London Atlassian User Group - February 2014
London Atlassian User Group - February 2014
 
Subversion and bugtracker
Subversion and bugtrackerSubversion and bugtracker
Subversion and bugtracker
 
Continuous Integration with Fabric
Continuous Integration with FabricContinuous Integration with Fabric
Continuous Integration with Fabric
 
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013Bootstrapping Puppet and Application Deployment - PuppetConf 2013
Bootstrapping Puppet and Application Deployment - PuppetConf 2013
 
Profiling php applications
Profiling php applicationsProfiling php applications
Profiling php applications
 
Chaione Ember.js Training
Chaione Ember.js TrainingChaione Ember.js Training
Chaione Ember.js Training
 
My experience in Software QA
My experience in Software QAMy experience in Software QA
My experience in Software QA
 
Puppet Camp Duesseldorf 2014: Martin Alfke - Can you upgrade to puppet 4.x?
Puppet Camp Duesseldorf 2014: Martin Alfke - Can you upgrade to puppet 4.x?Puppet Camp Duesseldorf 2014: Martin Alfke - Can you upgrade to puppet 4.x?
Puppet Camp Duesseldorf 2014: Martin Alfke - Can you upgrade to puppet 4.x?
 
Spot Trading - A case study in continuous delivery for mission critical finan...
Spot Trading - A case study in continuous delivery for mission critical finan...Spot Trading - A case study in continuous delivery for mission critical finan...
Spot Trading - A case study in continuous delivery for mission critical finan...
 
Writing High-Performance Software by Arvid Norberg
Writing High-Performance Software by Arvid NorbergWriting High-Performance Software by Arvid Norberg
Writing High-Performance Software by Arvid Norberg
 
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
 
Migrating to a bazel based CI system: 6 learnings
Migrating to a bazel based CI system: 6 learnings Migrating to a bazel based CI system: 6 learnings
Migrating to a bazel based CI system: 6 learnings
 
Migrating to a Bazel-based CI System: 6 Learnings - Or Shachar
Migrating to a Bazel-based CI System: 6 Learnings - Or ShacharMigrating to a Bazel-based CI System: 6 Learnings - Or Shachar
Migrating to a Bazel-based CI System: 6 Learnings - Or Shachar
 
Continuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as CodeContinuous Delivery and Infrastructure as Code
Continuous Delivery and Infrastructure as Code
 
Shellshock- from bug towards vulnerability
Shellshock- from bug towards vulnerabilityShellshock- from bug towards vulnerability
Shellshock- from bug towards vulnerability
 
Crash reports pycodeconf
Crash reports pycodeconfCrash reports pycodeconf
Crash reports pycodeconf
 
Know More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy KKnow More About Rational Performance - Snehamoy K
Know More About Rational Performance - Snehamoy K
 

Plus de Basho Technologies

A Zen Journey to Database Management
A Zen Journey to Database ManagementA Zen Journey to Database Management
A Zen Journey to Database Management
Basho Technologies
 
O'Reilly Webinar: Simplicity Scales - Big Data
O'Reilly Webinar: Simplicity Scales - Big Data O'Reilly Webinar: Simplicity Scales - Big Data
O'Reilly Webinar: Simplicity Scales - Big Data
Basho Technologies
 

Plus de Basho Technologies (11)

Data Modeling IoT and Time Series data in NoSQL
Data Modeling IoT and Time Series data in NoSQLData Modeling IoT and Time Series data in NoSQL
Data Modeling IoT and Time Series data in NoSQL
 
A Zen Journey to Database Management
A Zen Journey to Database ManagementA Zen Journey to Database Management
A Zen Journey to Database Management
 
Vagrant up a Distributed Test Environment - Nginx Summit 2015
Vagrant up a Distributed Test Environment - Nginx Summit 2015Vagrant up a Distributed Test Environment - Nginx Summit 2015
Vagrant up a Distributed Test Environment - Nginx Summit 2015
 
O'Reilly Webinar: Simplicity Scales - Big Data
O'Reilly Webinar: Simplicity Scales - Big Data O'Reilly Webinar: Simplicity Scales - Big Data
O'Reilly Webinar: Simplicity Scales - Big Data
 
A little about Message Queues - Boston Riak Meetup
A little about Message Queues - Boston Riak MeetupA little about Message Queues - Boston Riak Meetup
A little about Message Queues - Boston Riak Meetup
 
tecFinal 451 webinar deck
tecFinal 451 webinar decktecFinal 451 webinar deck
tecFinal 451 webinar deck
 
NoSQL Implementation - Part 1 (Velocity 2015)
NoSQL Implementation - Part 1 (Velocity 2015)NoSQL Implementation - Part 1 (Velocity 2015)
NoSQL Implementation - Part 1 (Velocity 2015)
 
Coding with Riak (from Velocity 2015)
Coding with Riak (from Velocity 2015)Coding with Riak (from Velocity 2015)
Coding with Riak (from Velocity 2015)
 
Relational Databases to Riak
Relational Databases to RiakRelational Databases to Riak
Relational Databases to Riak
 
Taming Big Data with NoSQL
Taming Big Data with NoSQLTaming Big Data with NoSQL
Taming Big Data with NoSQL
 
Basho and Riak at GOTO Stockholm: "Don't Use My Database."
Basho and Riak at GOTO Stockholm:  "Don't Use My Database."Basho and Riak at GOTO Stockholm:  "Don't Use My Database."
Basho and Riak at GOTO Stockholm: "Don't Use My Database."
 

Dernier

Dernier (20)

HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

Using Basho Bench to Load Test Distributed Applications

  • 1. Load-Testing & Benchmarking Riak Sean Cribbs Jon Meredith Developer Advocate Developer basho
  • 3. Why Benchmark? •Minimize surprises during deployment basho
  • 4. Why Benchmark? •Minimize surprises during deployment •Test expected load basho
  • 5. Why Benchmark? •Minimize surprises during deployment •Test expected load •Test peak load basho
  • 6. Why Benchmark? •Minimize surprises during deployment •Test expected load •Test peak load •Assess headroom basho
  • 7. Why Benchmark? •Minimize surprises during deployment •Test expected load •Test peak load •Assess headroom •Find failure points basho
  • 8. Why Benchmark? •Minimize surprises during deployment •Test expected load •Test peak load •Assess headroom •Find failure points •You must measure to know! basho
  • 10. Types of Benchmarks •Throughput basho
  • 11. Types of Benchmarks •Throughput •operations / sec basho
  • 12. Types of Benchmarks •Throughput •operations / sec •systems experience basho
  • 13. Types of Benchmarks • Throughput May be multiple requests! •operations / sec •systems experience basho
  • 14. Types of Benchmarks • Throughput May be multiple requests! •operations / sec •systems experience •Latency basho
  • 15. Types of Benchmarks • Throughput May be multiple requests! •operations / sec •systems experience •Latency •time per operation basho
  • 16. Types of Benchmarks • Throughput May be multiple requests! •operations / sec •systems experience •Latency •time per operation •user experience basho
  • 17. Types of Benchmarks • Throughput May be multiple requests! •operations / sec •systems experience •Latency •time per operation Need mean, •user experience median, percentiles basho
  • 18. Benchmarking Overview basho
  • 19. Benchmarking Overview •Determine your application’s needs basho
  • 20. Benchmarking Overview •Determine your application’s needs •Test typical and worst-case scenarios basho
  • 21. Benchmarking Overview •Determine your application’s needs •Test typical and worst-case scenarios •Minimize variables changed between scenarios basho
  • 22. Benchmarking Overview •Determine your application’s needs •Test typical and worst-case scenarios •Minimize variables changed between scenarios •Run early, run often basho
  • 24. Benchmarking Steps •Start up your test cluster basho
  • 25. Benchmarking Steps •Start up your test cluster •Configure a test basho
  • 26. Benchmarking Steps •Start up your test cluster •Configure a test •Run the test against the cluster basho
  • 27. Benchmarking Steps •Start up your test cluster •Configure a test •Run the test against the cluster •Generate pretty graphs (requires R) basho
  • 28. Benchmarking Steps •Start up your test cluster •Configure a test •Run the test against the cluster •Generate pretty graphs (requires R) •Interpret graphs, tweak, re-test basho
  • 30. basho_bench •Dave “Dizzy” Smith’s experience testing instant messaging and database systems basho
  • 31. basho_bench •Dave “Dizzy” Smith’s experience testing instant messaging and database systems •Created for internal benchmarking basho
  • 32. basho_bench •Dave “Dizzy” Smith’s experience testing instant messaging and database systems •Created for internal benchmarking •Benchmark anything key/value-like basho
  • 33. basho_bench •Dave “Dizzy” Smith’s experience testing instant messaging and database systems •Created for internal benchmarking •Benchmark anything key/value-like •Used heavily on innostore and bitcask basho
  • 34. basho_bench •Dave “Dizzy” Smith’s experience testing instant messaging and database systems •Created for internal benchmarking •Benchmark anything key/value-like •Used heavily on innostore and bitcask •Simple, extensible Erlang API basho
  • 36. worker worker worker worker basho_bench basho
  • 37. Event Generator get update 80% 20% worker worker worker worker basho_bench basho
  • 38. Event Generator get update 80% 20% worker worker worker worker Driver (HTTP, Protobuffs, etc) basho_bench basho
  • 39. Event Generator get update 80% 20% Key Generator uniform worker worker worker worker integer Driver (HTTP, Protobuffs, etc) basho_bench basho
  • 40. Event Generator get update 80% 20% Key Generator uniform worker worker worker worker integer Driver (HTTP, Protobuffs, etc) Value Generator fixed 8KB basho_bench basho
  • 41. Event Generator get update 80% 20% Key Generator uniform worker worker worker worker integer Driver (HTTP, Protobuffs, etc) Value Generator fixed Riak 8KB basho_bench basho
  • 43. Microbenchmarks Are Bad basho
  • 44. Microbenchmarks Are Bad •Benchmarks should be long-running basho
  • 45. Microbenchmarks Are Bad •Benchmarks should be long-running •Cache warmup basho
  • 46. Microbenchmarks Are Bad •Benchmarks should be long-running •Cache warmup •Page flushes basho
  • 47. Microbenchmarks Are Bad •Benchmarks should be long-running •Cache warmup •Page flushes •RAM vs. Disk basho
  • 48. Microbenchmarks Are Bad •Benchmarks should be long-running •Cache warmup •Page flushes •RAM vs. Disk •Test the limits of the infrastructure basho
  • 49. basho
  • 50. Key Generation •sequential_int_bin •uniform_int_bin •pareto_int_bin basho
  • 51. Uniform Distribution {uniform_int_bin, 10000} CDF Uniform 1.0 0.8 • Equal chance 0.6 of selecting cdf any key 0.4 0.2 0.0 0 2000 4000 6000 8000 10000 key basho
  • 52. Pareto Distribution {pareto_int_bin, 10000} 1.0 0.8 • Hard coded so ppareto(x, 2000, 1.5) 0.6 20% of keys receive 80% 0.4 of requests 0.2 0.0 0 2000 4000 6000 8000 10000 x basho
  • 53. Value Generation •fixed_bin •exponential_bin basho
  • 54. Exponential Distrib. {exponential_bin, 5000, 2500} Exponential CDF 1.0 • Value size: 0.8 Min + Exp(Lambda) 0.6 P(Size <= size) • Set Lambda 0.4 1 / (Mean - Min) 0.2 0.0 0 5000 10000 15000 20000 size basho
  • 56. Benchmarking is Hard •Design an accurate test basho
  • 57. Benchmarking is Hard •Design an accurate test •Tool and system limits basho
  • 58. Benchmarking is Hard •Design an accurate test •Tool and system limits •Testing a multi-variate space basho
  • 59. Benchmarking is Hard •Design an accurate test •Tool and system limits •Testing a multi-variate space •Easy to take results out of context basho
  • 60. Benchmarking is Hard •Design an accurate test •Tool and system limits •Testing a multi-variate space •Easy to take results out of context •Everything is relative! basho
  • 62. Gotchas •Running out of file handles basho
  • 63. Gotchas •Running out of file handles •Swapping / thrashing basho
  • 64. Gotchas •Running out of file handles •Swapping / thrashing •Running benchmark on same machine basho
  • 66. Conduct your own •Take metrics from existing app basho
  • 67. Conduct your own •Take metrics from existing app •Mixture of get/put/delete operations basho
  • 68. Conduct your own •Take metrics from existing app •Mixture of get/put/delete operations •Value size distribution basho
  • 69. Conduct your own •Take metrics from existing app •Mixture of get/put/delete operations •Value size distribution •Key distribution basho
  • 70. Conduct your own •Take metrics from existing app •Mixture of get/put/delete operations •Value size distribution •Key distribution •“Hot” and “cold” keys basho
  • 71. Conduct your own •Take metrics from existing app •Mixture of get/put/delete operations •Value size distribution •Key distribution •“Hot” and “cold” keys •Configure a test, run, RINSE & REPEAT basho
  • 72. Plug Interested in learning about support, consulting, or Enterprise features?   Email info@basho.com or go to http://www.basho.com/contact.html to talk with us. www.basho.com basho

Notes de l'éditeur

  1. Why do you benchmark &amp;#xA0;- minimize suprises during deployment &amp;#xA0;- test expected load &amp;#xA0;- test peak load &amp;#xA0;- see how much room there is to scale &amp;#xA0;- find failure points - in your application or in the data store
  2. Why do you benchmark &amp;#xA0;- minimize suprises during deployment &amp;#xA0;- test expected load &amp;#xA0;- test peak load &amp;#xA0;- see how much room there is to scale &amp;#xA0;- find failure points - in your application or in the data store
  3. Why do you benchmark &amp;#xA0;- minimize suprises during deployment &amp;#xA0;- test expected load &amp;#xA0;- test peak load &amp;#xA0;- see how much room there is to scale &amp;#xA0;- find failure points - in your application or in the data store
  4. Why do you benchmark &amp;#xA0;- minimize suprises during deployment &amp;#xA0;- test expected load &amp;#xA0;- test peak load &amp;#xA0;- see how much room there is to scale &amp;#xA0;- find failure points - in your application or in the data store
  5. Why do you benchmark &amp;#xA0;- minimize suprises during deployment &amp;#xA0;- test expected load &amp;#xA0;- test peak load &amp;#xA0;- see how much room there is to scale &amp;#xA0;- find failure points - in your application or in the data store
  6. Why do you benchmark &amp;#xA0;- minimize suprises during deployment &amp;#xA0;- test expected load &amp;#xA0;- test peak load &amp;#xA0;- see how much room there is to scale &amp;#xA0;- find failure points - in your application or in the data store
  7. Goals of benchmarking &amp;#xA0;- Two basic kinds of tests &amp;#xA0;- Throughput tests - how much can you throw at it &amp;#xA0;- Latency tests - how well does it respond at a fixed load
  8. Goals of benchmarking &amp;#xA0;- Two basic kinds of tests &amp;#xA0;- Throughput tests - how much can you throw at it &amp;#xA0;- Latency tests - how well does it respond at a fixed load
  9. Goals of benchmarking &amp;#xA0;- Two basic kinds of tests &amp;#xA0;- Throughput tests - how much can you throw at it &amp;#xA0;- Latency tests - how well does it respond at a fixed load
  10. Goals of benchmarking &amp;#xA0;- Two basic kinds of tests &amp;#xA0;- Throughput tests - how much can you throw at it &amp;#xA0;- Latency tests - how well does it respond at a fixed load
  11. Goals of benchmarking &amp;#xA0;- Two basic kinds of tests &amp;#xA0;- Throughput tests - how much can you throw at it &amp;#xA0;- Latency tests - how well does it respond at a fixed load
  12. Goals of benchmarking &amp;#xA0;- Two basic kinds of tests &amp;#xA0;- Throughput tests - how much can you throw at it &amp;#xA0;- Latency tests - how well does it respond at a fixed load
  13. Goals of benchmarking &amp;#xA0;- Two basic kinds of tests &amp;#xA0;- Throughput tests - how much can you throw at it &amp;#xA0;- Latency tests - how well does it respond at a fixed load
  14. Goals of benchmarking &amp;#xA0;- Two basic kinds of tests &amp;#xA0;- Throughput tests - how much can you throw at it &amp;#xA0;- Latency tests - how well does it respond at a fixed load
  15. Introduce basho_bench &amp;#xA0;- Credit for Dizzy - created after years of experience testing instant messaging and &amp;#xA0;&amp;#xA0;&amp;#xA0;database software. &amp;#xA0;- Created for internal benchmarking &amp;#xA0;- Designed for us to evaluate anything shaped like a key/value store &amp;#xA0;- Used it heavily in our development and testing of innostore and bitcask. &amp;#xA0;- Extensible
  16. Introduce basho_bench &amp;#xA0;- Credit for Dizzy - created after years of experience testing instant messaging and &amp;#xA0;&amp;#xA0;&amp;#xA0;database software. &amp;#xA0;- Created for internal benchmarking &amp;#xA0;- Designed for us to evaluate anything shaped like a key/value store &amp;#xA0;- Used it heavily in our development and testing of innostore and bitcask. &amp;#xA0;- Extensible
  17. Introduce basho_bench &amp;#xA0;- Credit for Dizzy - created after years of experience testing instant messaging and &amp;#xA0;&amp;#xA0;&amp;#xA0;database software. &amp;#xA0;- Created for internal benchmarking &amp;#xA0;- Designed for us to evaluate anything shaped like a key/value store &amp;#xA0;- Used it heavily in our development and testing of innostore and bitcask. &amp;#xA0;- Extensible
  18. Introduce basho_bench &amp;#xA0;- Credit for Dizzy - created after years of experience testing instant messaging and &amp;#xA0;&amp;#xA0;&amp;#xA0;database software. &amp;#xA0;- Created for internal benchmarking &amp;#xA0;- Designed for us to evaluate anything shaped like a key/value store &amp;#xA0;- Used it heavily in our development and testing of innostore and bitcask. &amp;#xA0;- Extensible
  19. Introduce basho_bench &amp;#xA0;- Credit for Dizzy - created after years of experience testing instant messaging and &amp;#xA0;&amp;#xA0;&amp;#xA0;database software. &amp;#xA0;- Created for internal benchmarking &amp;#xA0;- Designed for us to evaluate anything shaped like a key/value store &amp;#xA0;- Used it heavily in our development and testing of innostore and bitcask. &amp;#xA0;- Extensible
  20. How basho bench works &amp;#xA0;- event generator with weights &amp;#xA0;- scheduler to trigger the events &amp;#xA0;- worker threads calls driver to execute the events &amp;#xA0;- key generators &amp;#xA0;- value generators
  21. How basho bench works &amp;#xA0;- event generator with weights &amp;#xA0;- scheduler to trigger the events &amp;#xA0;- worker threads calls driver to execute the events &amp;#xA0;- key generators &amp;#xA0;- value generators
  22. How basho bench works &amp;#xA0;- event generator with weights &amp;#xA0;- scheduler to trigger the events &amp;#xA0;- worker threads calls driver to execute the events &amp;#xA0;- key generators &amp;#xA0;- value generators
  23. How basho bench works &amp;#xA0;- event generator with weights &amp;#xA0;- scheduler to trigger the events &amp;#xA0;- worker threads calls driver to execute the events &amp;#xA0;- key generators &amp;#xA0;- value generators
  24. How basho bench works &amp;#xA0;- event generator with weights &amp;#xA0;- scheduler to trigger the events &amp;#xA0;- worker threads calls driver to execute the events &amp;#xA0;- key generators &amp;#xA0;- value generators
  25. How basho bench works &amp;#xA0;- event generator with weights &amp;#xA0;- scheduler to trigger the events &amp;#xA0;- worker threads calls driver to execute the events &amp;#xA0;- key generators &amp;#xA0;- value generators
  26. Say why this is a bad bad thing &amp;#xA0;- benchmarks should be long running - make sure you saturate things &amp;#xA0;&amp;#xA0;&amp;#xA0;otherwise you don&apos;t see the effect of a cache being filled, or pauses &amp;#xA0;&amp;#xA0;&amp;#xA0;due to pages being flushedm, trees rebalanced etc.
  27. Say why this is a bad bad thing &amp;#xA0;- benchmarks should be long running - make sure you saturate things &amp;#xA0;&amp;#xA0;&amp;#xA0;otherwise you don&apos;t see the effect of a cache being filled, or pauses &amp;#xA0;&amp;#xA0;&amp;#xA0;due to pages being flushedm, trees rebalanced etc.
  28. Say why this is a bad bad thing &amp;#xA0;- benchmarks should be long running - make sure you saturate things &amp;#xA0;&amp;#xA0;&amp;#xA0;otherwise you don&apos;t see the effect of a cache being filled, or pauses &amp;#xA0;&amp;#xA0;&amp;#xA0;due to pages being flushedm, trees rebalanced etc.
  29. Say why this is a bad bad thing &amp;#xA0;- benchmarks should be long running - make sure you saturate things &amp;#xA0;&amp;#xA0;&amp;#xA0;otherwise you don&apos;t see the effect of a cache being filled, or pauses &amp;#xA0;&amp;#xA0;&amp;#xA0;due to pages being flushedm, trees rebalanced etc.
  30. Say why this is a bad bad thing &amp;#xA0;- benchmarks should be long running - make sure you saturate things &amp;#xA0;&amp;#xA0;&amp;#xA0;otherwise you don&apos;t see the effect of a cache being filled, or pauses &amp;#xA0;&amp;#xA0;&amp;#xA0;due to pages being flushedm, trees rebalanced etc.
  31. Why benchmarking is hard &amp;#xA0;- You will have to iterate a lot &amp;#xA0;- Has the benchmarking tool hit the limit or is it the system under test? &amp;#xA0;- Run a second copy from another server
  32. Why benchmarking is hard &amp;#xA0;- You will have to iterate a lot &amp;#xA0;- Has the benchmarking tool hit the limit or is it the system under test? &amp;#xA0;- Run a second copy from another server
  33. Why benchmarking is hard &amp;#xA0;- You will have to iterate a lot &amp;#xA0;- Has the benchmarking tool hit the limit or is it the system under test? &amp;#xA0;- Run a second copy from another server
  34. Why benchmarking is hard &amp;#xA0;- You will have to iterate a lot &amp;#xA0;- Has the benchmarking tool hit the limit or is it the system under test? &amp;#xA0;- Run a second copy from another server
  35. Why benchmarking is hard &amp;#xA0;- You will have to iterate a lot &amp;#xA0;- Has the benchmarking tool hit the limit or is it the system under test? &amp;#xA0;- Run a second copy from another server
  36. Troublespots to look for &amp;#xA0;- running out of file handles &amp;#xA0;- running low on socket connections &amp;#xA0;- swapping
  37. Troublespots to look for &amp;#xA0;- running out of file handles &amp;#xA0;- running low on socket connections &amp;#xA0;- swapping
  38. Troublespots to look for &amp;#xA0;- running out of file handles &amp;#xA0;- running low on socket connections &amp;#xA0;- swapping
  39. Recommendations &amp;#xA0;- Take metrics from your application - measure the mix of get/put/delete operations &amp;#xA0;- Provide a map/reduce job to find out data distributions
  40. Recommendations &amp;#xA0;- Take metrics from your application - measure the mix of get/put/delete operations &amp;#xA0;- Provide a map/reduce job to find out data distributions
  41. Recommendations &amp;#xA0;- Take metrics from your application - measure the mix of get/put/delete operations &amp;#xA0;- Provide a map/reduce job to find out data distributions
  42. Recommendations &amp;#xA0;- Take metrics from your application - measure the mix of get/put/delete operations &amp;#xA0;- Provide a map/reduce job to find out data distributions
  43. Recommendations &amp;#xA0;- Take metrics from your application - measure the mix of get/put/delete operations &amp;#xA0;- Provide a map/reduce job to find out data distributions
  44. Recommendations &amp;#xA0;- Take metrics from your application - measure the mix of get/put/delete operations &amp;#xA0;- Provide a map/reduce job to find out data distributions