Yardstick Apache Ignite Benchmarks
Yardstick Apache Ignite is a set of Ignite Grid benchmarks written on top of Yardstick framework.
Visit Yardstick Repository for detailed information on how to run Yardstick benchmarks and how to generate graphs.
The documentation below describes configuration parameters in addition to standard Yardstick parameters.
- Create a local clone of repository
mvn packagecommand for Yardstick Apache Ignite POM
The following benchmarks are provided:
GetBenchmark- benchmarks atomic distributed cache get operation
PutBenchmark- benchmarks atomic distributed cache put operation
PutGetBenchmark- benchmarks atomic distributed cache put and get operations together
PutTxBenchmark- benchmarks transactional distributed cache put operation
PutGetTxBenchmark- benchmarks transactional distributed cache put and get operations together
SqlQueryBenchmark- benchmarks distributed SQL query over cached data
SqlQueryJoinBenchmark- benchmarks distributed SQL query with a Join over cached data
SqlQueryPutBenchmark- benchmarks distributed SQL query with simultaneous cache updates
Writing Apache Ignite Benchmarks
All benchmarks extend
AbstractBenchmark class. A new benchmark should also extend this abstract class and implement
test method. This is the method that is actually benchmarked.
Running Apache Ignite Benchmarks
Before running Apache Ignite benchmarks, run
mvn package command. This command will compile the project and also will unpack scripts from
yardstick-resources.zip file to
Properties And Command Line Arguments
Note that this section only describes configuration parameters specific to Apache Ignite benchmarks, and not for Yardstick framework. To run Apache Ignite benchmarks and generate graphs, you will need to run them using Yardstick framework scripts in
Refer to Yardstick Documentation for common Yardstick properties and command line arguments for running Yardstick scripts.
The following Apache Ignite benchmark properties can be defined in the benchmark configuration:
--nodeNumber <num>- Number of nodes (automatically set in
benchmark.properties), used to wait for the specified number of nodes to start
--backups <num>- Number of backups for every key
--Config <path>- Path to Apache Ignite configuration file
-syncMode <mode>- Synchronization mode (defined in
--distroMode <mode>- Distribution mode (defined in
--writeOrderMode <mode>- Write order mode for ATOMIC caches (defined in
--txConcurrency <value>- Cache transaction concurrency control, either
--txIsolation <value>- Cache transaction isolation (defined in
--offheapTiered- Flag indicating whether tiered off-heap mode is on
--offheapValuesOnly- Flag indicating whether off-heap mode is on and only cache values are stored off-heap
--restPort <num>- REST TCP port, indicates that a Apache Ignite node is ready to process Apache Ignite Clients
--restHost <host>- REST TCP host
--syncSend- Flag indicating whether synchronous send is used in
--range- Range of keys that are randomly generated for cache operations
For example if we need to run 2
IgniteNode servers on localhost with
PutBenchmark benchmark on localhost, with number of backups set to 1, synchronization mode set to
PRIMARY_SYNC, then the following configuration should be specified in
SERVER_HOSTS=localhost,localhost # Note that -dn and -sn, which stand for data node and server node, are # native Yardstick parameters and are documented in Yardstick framework. CONFIGS="-b 1 -sm PRIMARY_SYNC -dn PutBenchmark -sn IgniteNode"
Running on Amazon
This repo contains all necessary scripts and properties files for a comparison Apache Ignite with other products. You can easy run benchmark by using yardstick-docker extension, but it might have an influence on performance.
For running on Amazon EC2 need to perform the following steps:
- Run Amazon EC2 instances. Choose number of instances and hardware according to your requirements.
The following actions need to perform on all instances:
- Install Java, Maven and Git.
For example for Ubuntu: # apt-get install java # apt-get install mvn # apt-get install git
- Clone this repository (on all nodes path should be the same) and build project.
git clone https://github.com/gridgain/yardstick-ignite mvn clean package
SERVER_HOSTSis comma-separated list of IP addresses where servers should be started, one server per host.
DRIVER_HOSTSis comma-separated list of IP addresses where drivers should be started, one driver per host, if the property is not defined then the driver will be run on localhost. Property file contains many useful information about benchmarks such as
list of benchmarks,
JVM optsand etc. More details there Properties And Command Line Arguments
Update IP addresses in
config/ignite-localhost-config.xmlfile on actual. For example:
config/ignite-localhost-config.xml ... <property name="addresses"> <list> <value>XXX.XXX.XX.1:47500..47509</value> <value>XXX.XXX.XX.2:47500..47509</value> <value>XXX.XXX.XX.3:47500..47509</value> </list> </property> ...
./bin/benchmark-run-all.shscript. For more details about running scripts see Running Yardstick Benchmarks.
- After execution the script in
resultfolder will be saved to results of benchmarks. For visualisation of results can be used
bin/jfreechart-graph-gen.shscript. For more details about the script see JFreeChart Graphs.
Use Apache Ignite Apache JIRA (https://issues.apache.org/jira/browse/IGNITE) to file bugs.
Yardstick Apache Ignite is available under Apache 2.0 Open Source license.