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
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
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
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
Why do you benchmark
 - minimize suprises during deployment
 - test expected load
 - test peak load
 - see how much room there is to scale
 - find failure points - in your application or in the data store
Why do you benchmark
 - minimize suprises during deployment
 - test expected load
 - test peak load
 - see how much room there is to scale
 - find failure points - in your application or in the data store
Why do you benchmark
 - minimize suprises during deployment
 - test expected load
 - test peak load
 - see how much room there is to scale
 - find failure points - in your application or in the data store
Why do you benchmark
 - minimize suprises during deployment
 - test expected load
 - test peak load
 - see how much room there is to scale
 - find failure points - in your application or in the data store
Why do you benchmark
 - minimize suprises during deployment
 - test expected load
 - test peak load
 - see how much room there is to scale
 - find failure points - in your application or in the data store
Why do you benchmark
 - minimize suprises during deployment
 - test expected load
 - test peak load
 - see how much room there is to scale
 - find failure points - in your application or in the data store
Goals of benchmarking
 - Two basic kinds of tests
 - Throughput tests - how much can you throw at it
 - Latency tests - how well does it respond at a fixed load
Goals of benchmarking
 - Two basic kinds of tests
 - Throughput tests - how much can you throw at it
 - Latency tests - how well does it respond at a fixed load
Goals of benchmarking
 - Two basic kinds of tests
 - Throughput tests - how much can you throw at it
 - Latency tests - how well does it respond at a fixed load
Goals of benchmarking
 - Two basic kinds of tests
 - Throughput tests - how much can you throw at it
 - Latency tests - how well does it respond at a fixed load
Goals of benchmarking
 - Two basic kinds of tests
 - Throughput tests - how much can you throw at it
 - Latency tests - how well does it respond at a fixed load
Goals of benchmarking
 - Two basic kinds of tests
 - Throughput tests - how much can you throw at it
 - Latency tests - how well does it respond at a fixed load
Goals of benchmarking
 - Two basic kinds of tests
 - Throughput tests - how much can you throw at it
 - Latency tests - how well does it respond at a fixed load
Goals of benchmarking
 - Two basic kinds of tests
 - Throughput tests - how much can you throw at it
 - Latency tests - how well does it respond at a fixed load
Introduce basho_bench
 - Credit for Dizzy - created after years of experience testing instant messaging and
   database software.
 - Created for internal benchmarking
 - Designed for us to evaluate anything shaped like a key/value store
 - Used it heavily in our development and testing of innostore and bitcask.
 - Extensible
Introduce basho_bench
 - Credit for Dizzy - created after years of experience testing instant messaging and
   database software.
 - Created for internal benchmarking
 - Designed for us to evaluate anything shaped like a key/value store
 - Used it heavily in our development and testing of innostore and bitcask.
 - Extensible
Introduce basho_bench
 - Credit for Dizzy - created after years of experience testing instant messaging and
   database software.
 - Created for internal benchmarking
 - Designed for us to evaluate anything shaped like a key/value store
 - Used it heavily in our development and testing of innostore and bitcask.
 - Extensible
Introduce basho_bench
 - Credit for Dizzy - created after years of experience testing instant messaging and
   database software.
 - Created for internal benchmarking
 - Designed for us to evaluate anything shaped like a key/value store
 - Used it heavily in our development and testing of innostore and bitcask.
 - Extensible
Introduce basho_bench
 - Credit for Dizzy - created after years of experience testing instant messaging and
   database software.
 - Created for internal benchmarking
 - Designed for us to evaluate anything shaped like a key/value store
 - Used it heavily in our development and testing of innostore and bitcask.
 - Extensible
How basho bench works
 - event generator with weights
 - scheduler to trigger the events
 - worker threads calls driver to execute the events
 - key generators
 - value generators
How basho bench works
 - event generator with weights
 - scheduler to trigger the events
 - worker threads calls driver to execute the events
 - key generators
 - value generators
How basho bench works
 - event generator with weights
 - scheduler to trigger the events
 - worker threads calls driver to execute the events
 - key generators
 - value generators
How basho bench works
 - event generator with weights
 - scheduler to trigger the events
 - worker threads calls driver to execute the events
 - key generators
 - value generators
How basho bench works
 - event generator with weights
 - scheduler to trigger the events
 - worker threads calls driver to execute the events
 - key generators
 - value generators
How basho bench works
 - event generator with weights
 - scheduler to trigger the events
 - worker threads calls driver to execute the events
 - key generators
 - value generators
Say why this is a bad bad thing
 - benchmarks should be long running - make sure you saturate things
   otherwise you don't see the effect of a cache being filled, or pauses
   due to pages being flushedm, trees rebalanced etc.
Say why this is a bad bad thing
 - benchmarks should be long running - make sure you saturate things
   otherwise you don't see the effect of a cache being filled, or pauses
   due to pages being flushedm, trees rebalanced etc.
Say why this is a bad bad thing
 - benchmarks should be long running - make sure you saturate things
   otherwise you don't see the effect of a cache being filled, or pauses
   due to pages being flushedm, trees rebalanced etc.
Say why this is a bad bad thing
 - benchmarks should be long running - make sure you saturate things
   otherwise you don't see the effect of a cache being filled, or pauses
   due to pages being flushedm, trees rebalanced etc.
Say why this is a bad bad thing
 - benchmarks should be long running - make sure you saturate things
   otherwise you don't see the effect of a cache being filled, or pauses
   due to pages being flushedm, trees rebalanced etc.
Why benchmarking is hard
 - You will have to iterate a lot
 - Has the benchmarking tool hit the limit or is it the system under test?
 - Run a second copy from another server
Why benchmarking is hard
 - You will have to iterate a lot
 - Has the benchmarking tool hit the limit or is it the system under test?
 - Run a second copy from another server
Why benchmarking is hard
 - You will have to iterate a lot
 - Has the benchmarking tool hit the limit or is it the system under test?
 - Run a second copy from another server
Why benchmarking is hard
 - You will have to iterate a lot
 - Has the benchmarking tool hit the limit or is it the system under test?
 - Run a second copy from another server
Why benchmarking is hard
 - You will have to iterate a lot
 - Has the benchmarking tool hit the limit or is it the system under test?
 - Run a second copy from another server
Troublespots to look for
 - running out of file handles
 - running low on socket connections
 - swapping
Troublespots to look for
 - running out of file handles
 - running low on socket connections
 - swapping
Troublespots to look for
 - running out of file handles
 - running low on socket connections
 - swapping
Recommendations
 - Take metrics from your application - measure the mix of get/put/delete operations
 - Provide a map/reduce job to find out data distributions
Recommendations
 - Take metrics from your application - measure the mix of get/put/delete operations
 - Provide a map/reduce job to find out data distributions
Recommendations
 - Take metrics from your application - measure the mix of get/put/delete operations
 - Provide a map/reduce job to find out data distributions
Recommendations
 - Take metrics from your application - measure the mix of get/put/delete operations
 - Provide a map/reduce job to find out data distributions
Recommendations
 - Take metrics from your application - measure the mix of get/put/delete operations
 - Provide a map/reduce job to find out data distributions
Recommendations
 - Take metrics from your application - measure the mix of get/put/delete operations
 - Provide a map/reduce job to find out data distributions