You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by nt...@apache.org on 2016/02/01 15:21:28 UTC
[20/49] ignite git commit: WIP on local benchmarks.
WIP on local benchmarks.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/62d6ce73
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/62d6ce73
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/62d6ce73
Branch: refs/heads/ignite-2435
Commit: 62d6ce73c2e48c3a3306b0be769065a9dc6fdfac
Parents: d3fbb1c
Author: vozerov-gridgain <vo...@gridgain.com>
Authored: Thu Jan 28 16:37:20 2016 +0300
Committer: vozerov-gridgain <vo...@gridgain.com>
Committed: Thu Jan 28 16:37:20 2016 +0300
----------------------------------------------------------------------
.../jmh/cache/JmhCacheAbstractBenchmark.java | 71 +++++++++++++
.../jmh/cache/JmhCachePutBenchmark.java | 102 +++++++------------
.../jmh/runner/JmhIdeBenchmarkRunner.java | 16 +++
3 files changed, 124 insertions(+), 65 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/62d6ce73/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheAbstractBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheAbstractBenchmark.java b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheAbstractBenchmark.java
index 1205650..e8829bb 100644
--- a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheAbstractBenchmark.java
+++ b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheAbstractBenchmark.java
@@ -17,13 +17,19 @@
package org.apache.ignite.internal.benchmarks.jmh.cache;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.cache.CacheRebalanceMode;
import org.apache.ignite.cache.CacheWriteSynchronizationMode;
import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.benchmarks.jmh.JmhAbstractBenchmark;
+import org.apache.ignite.internal.util.typedef.internal.A;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
@@ -43,6 +49,24 @@ public class JmhCacheAbstractBenchmark extends JmhAbstractBenchmark {
/** Property: atomicity mode. */
protected static final String PROP_WRITE_SYNC_MODE = "ignite.jmh.cache.writeSynchronizationMode";
+ /** Property: nodes count. */
+ protected static final String PROP_DATA_NODES = "ignite.jmh.cache.dataNodes";
+
+ /** Property: client mode flag. */
+ protected static final String PROP_CLIENT_MODE = "ignite.jmh.cache.clientMode";
+
+ /** Default amount of nodes. */
+ protected static final int DFLT_DATA_NODES = 1;
+
+ /** IP finder shared across nodes. */
+ private static final TcpDiscoveryVmIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true);
+
+ /** Target node. */
+ protected Ignite node;
+
+ /** Target cache. */
+ protected IgniteCache cache;
+
/**
* Setup routine. Child classes must invoke this method first.
*
@@ -55,6 +79,10 @@ public class JmhCacheAbstractBenchmark extends JmhAbstractBenchmark {
System.out.println("IGNITE BENCHMARK INFO: ");
+ System.out.println("\tclient mode: " + booleanProperty(PROP_CLIENT_MODE));
+
+ System.out.println("\tdata nodes: " + intProperty(PROP_DATA_NODES, DFLT_DATA_NODES));
+
System.out.println("\tbackups: " + intProperty(PROP_BACKUPS));
System.out.println("\tatomicity mode: " +
@@ -65,6 +93,27 @@ public class JmhCacheAbstractBenchmark extends JmhAbstractBenchmark {
System.out.println("--------------------");
System.out.println();
+
+ int nodesCnt = intProperty(PROP_DATA_NODES, DFLT_DATA_NODES);
+
+ A.ensure(nodesCnt >= 1, "nodesCnt >= 1");
+
+ node = Ignition.start(configuration("node0"));
+
+ for (int i = 1; i < nodesCnt; i++)
+ Ignition.start(configuration("node" + i));
+
+ boolean isClient = booleanProperty(PROP_CLIENT_MODE);
+
+ if (isClient) {
+ IgniteConfiguration clientCfg = configuration("client");
+
+ clientCfg.setClientMode(true);
+
+ node = Ignition.start(clientCfg);
+ }
+
+ cache = node.cache(null);
}
/**
@@ -78,6 +127,28 @@ public class JmhCacheAbstractBenchmark extends JmhAbstractBenchmark {
}
/**
+ * Create Ignite configuration.
+ *
+ * @param gridName Grid name.
+ * @return Configuration.
+ */
+ protected IgniteConfiguration configuration(String gridName) {
+ IgniteConfiguration cfg = new IgniteConfiguration();
+
+ cfg.setGridName(gridName);
+
+ cfg.setLocalHost("127.0.0.1");
+
+ TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
+ discoSpi.setIpFinder(IP_FINDER);
+ cfg.setDiscoverySpi(discoSpi);
+
+ cfg.setCacheConfiguration(cacheConfiguration());
+
+ return cfg;
+ }
+
+ /**
* Create cache configuration.
*
* @return Cache configuration.
http://git-wip-us.apache.org/repos/asf/ignite/blob/62d6ce73/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCachePutBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCachePutBenchmark.java b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCachePutBenchmark.java
index c05acf0..6421243 100644
--- a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCachePutBenchmark.java
+++ b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCachePutBenchmark.java
@@ -17,54 +17,24 @@
package org.apache.ignite.internal.benchmarks.jmh.cache;
-import org.apache.ignite.Ignite;
-import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteDataStreamer;
-import org.apache.ignite.Ignition;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheWriteSynchronizationMode;
-import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
import org.apache.ignite.internal.benchmarks.model.IntValue;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.BenchmarkMode;
-import org.openjdk.jmh.annotations.Fork;
-import org.openjdk.jmh.annotations.Measurement;
-import org.openjdk.jmh.annotations.Mode;
-import org.openjdk.jmh.annotations.OutputTimeUnit;
import org.openjdk.jmh.annotations.Threads;
-import org.openjdk.jmh.annotations.Warmup;
import java.util.concurrent.ThreadLocalRandom;
-import java.util.concurrent.TimeUnit;
/**
* Put benchmark.
*/
-@SuppressWarnings({"unchecked", "unused", "FieldCanBeLocal"})
-@BenchmarkMode(Mode.Throughput)
-@OutputTimeUnit(TimeUnit.SECONDS)
-@Warmup(iterations = 10)
-@Measurement(iterations = 120)
-@Fork(1)
+@SuppressWarnings("unchecked")
public class JmhCachePutBenchmark extends JmhCacheAbstractBenchmark {
- /** First Ignite instance. */
- private static Ignite ignite1;
-
- /** Second Ignite instance. */
- private static Ignite ignite2;
-
- /** Target cache. */
- private static IgniteCache<Integer, IntValue> cache1;
-
/** Items count. */
private static final int CNT = 100000;
- /** IP finder shared across nodes. */
- private static final TcpDiscoveryVmIpFinder IP_FINDER = new TcpDiscoveryVmIpFinder(true);
-
/**
* Set up routine.
*
@@ -74,12 +44,7 @@ public class JmhCachePutBenchmark extends JmhCacheAbstractBenchmark {
public void setup() throws Exception {
super.setup();
- ignite1 = Ignition.start(config("node1"));
- ignite2 = Ignition.start(config("node2"));
-
- cache1 = ignite1.cache(null);
-
- IgniteDataStreamer<Integer, IntValue> dataLdr = ignite1.dataStreamer(cache1.getName());
+ IgniteDataStreamer<Integer, IntValue> dataLdr = node.dataStreamer(cache.getName());
for (int i = 0; i < CNT; i++)
dataLdr.addData(i, new IntValue(i));
@@ -90,28 +55,6 @@ public class JmhCachePutBenchmark extends JmhCacheAbstractBenchmark {
}
/**
- * Create configuration.
- *
- * @param gridName Grid name.
- * @return Configuration.
- */
- private IgniteConfiguration config(String gridName) {
- IgniteConfiguration cfg = new IgniteConfiguration();
-
- cfg.setGridName(gridName);
-
- cfg.setLocalHost("127.0.0.1");
-
- TcpDiscoverySpi discoSpi = new TcpDiscoverySpi();
- discoSpi.setIpFinder(IP_FINDER);
- cfg.setDiscoverySpi(discoSpi);
-
- cfg.setCacheConfiguration(cacheConfiguration());
-
- return cfg;
- }
-
- /**
* Test PUT operation.
*
* @throws Exception If failed.
@@ -121,7 +64,7 @@ public class JmhCachePutBenchmark extends JmhCacheAbstractBenchmark {
public void testPut() throws Exception {
int key = ThreadLocalRandom.current().nextInt(CNT);
- cache1.put(key, new IntValue(key));
+ cache.put(key, new IntValue(key));
}
/**
@@ -131,20 +74,49 @@ public class JmhCachePutBenchmark extends JmhCacheAbstractBenchmark {
* @throws Exception If failed.
*/
public static void main(String[] args) throws Exception {
+ runAtomic(CacheAtomicityMode.ATOMIC);
+ }
+
+ /**
+ * Run benchmarks for atomic cache.
+ *
+ * @param atomicityMode Atomicity mode.
+ * @throws Exception If failed.
+ */
+ private static void runAtomic(CacheAtomicityMode atomicityMode) throws Exception {
+ run(true, atomicityMode, CacheWriteSynchronizationMode.PRIMARY_SYNC);
+ run(true, atomicityMode, CacheWriteSynchronizationMode.FULL_SYNC);
+ run(false, atomicityMode, CacheWriteSynchronizationMode.PRIMARY_SYNC);
+ run(false, atomicityMode, CacheWriteSynchronizationMode.FULL_SYNC);
+ }
+
+ /**
+ * Run benchmark.
+ *
+ * @param client Client mode flag.
+ * @param writeSyncMode Write synchronization mode.
+ * @throws Exception If failed.
+ */
+ private static void run(boolean client, CacheAtomicityMode atomicityMode,
+ CacheWriteSynchronizationMode writeSyncMode) throws Exception {
+ String output = "ignite-cache-put-" + (client ? "client" : "data") + "-" + atomicityMode + "-" + writeSyncMode;
+
JmhIdeBenchmarkRunner.create()
.forks(1)
.warmupIterations(10)
- .measurementIterations(2000)
+ .measurementIterations(60)
.classes(JmhCachePutBenchmark.class)
+ .output(output + ".jmh.log")
.jvmArguments(
"-Xms4g",
"-Xmx4g",
"-XX:+UnlockCommercialFeatures",
"-XX:+FlightRecorder",
- "-XX:StartFlightRecording=delay=20s,duration=60s,dumponexit=true,settings=alloc,filename=ignite-put_bench.jfr",
- JmhIdeBenchmarkRunner.createProperty(PROP_BACKUPS, 1),
- JmhIdeBenchmarkRunner.createProperty(PROP_ATOMICITY_MODE, CacheAtomicityMode.ATOMIC),
- JmhIdeBenchmarkRunner.createProperty(PROP_WRITE_SYNC_MODE, CacheWriteSynchronizationMode.PRIMARY_SYNC))
+ "-XX:StartFlightRecording=delay=30s,dumponexit=true,settings=alloc,filename=" + output + ".jfr",
+ JmhIdeBenchmarkRunner.createProperty(PROP_ATOMICITY_MODE, atomicityMode),
+ JmhIdeBenchmarkRunner.createProperty(PROP_WRITE_SYNC_MODE, writeSyncMode),
+ JmhIdeBenchmarkRunner.createProperty(PROP_DATA_NODES, 2),
+ JmhIdeBenchmarkRunner.createProperty(PROP_CLIENT_MODE, client))
.run();
}
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/62d6ce73/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/runner/JmhIdeBenchmarkRunner.java
----------------------------------------------------------------------
diff --git a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/runner/JmhIdeBenchmarkRunner.java b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/runner/JmhIdeBenchmarkRunner.java
index 68e9000..a34cfb9 100644
--- a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/runner/JmhIdeBenchmarkRunner.java
+++ b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/runner/JmhIdeBenchmarkRunner.java
@@ -48,6 +48,9 @@ public class JmhIdeBenchmarkRunner {
/** JVM arguments. */
private String[] jvmArgs;
+ /** Output. */
+ private String output;
+
/**
* Create new runner.
*
@@ -124,6 +127,16 @@ public class JmhIdeBenchmarkRunner {
}
/**
+ * @param output Output file.
+ * @return This instance.
+ */
+ public JmhIdeBenchmarkRunner output(String output) {
+ this.output = output;
+
+ return this;
+ }
+
+ /**
* @param jvmArgs JVM arguments.
* @return This instance.
*/
@@ -159,6 +172,9 @@ public class JmhIdeBenchmarkRunner {
if (jvmArgs != null)
builder.jvmArgs(jvmArgs);
+ if (output != null)
+ builder.output(output);
+
return builder;
}