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;
     }