You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by yz...@apache.org on 2017/03/02 12:37:25 UTC
ignite git commit: put all benchmark - added striping and
pregenerated maps
Repository: ignite
Updated Branches:
refs/heads/ignite-3477 c6df06030 -> 76cd44d6f
put all benchmark - added striping and pregenerated maps
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/76cd44d6
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/76cd44d6
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/76cd44d6
Branch: refs/heads/ignite-3477
Commit: 76cd44d6fc8a195b2a20016c144836e684330b40
Parents: c6df060
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Thu Mar 2 15:01:50 2017 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Thu Mar 2 15:01:50 2017 +0300
----------------------------------------------------------------------
.../yardstick/IgniteAbstractBenchmark.java | 6 ++
.../yardstick/IgniteBenchmarkArguments.java | 11 +++
.../yardstick/cache/IgnitePutAllBenchmark.java | 95 +++++++++++++++++---
.../cache/IgnitePutAllTxBenchmark.java | 43 +--------
4 files changed, 103 insertions(+), 52 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/76cd44d6/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteAbstractBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteAbstractBenchmark.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteAbstractBenchmark.java
index ba815fe..5aec308 100644
--- a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteAbstractBenchmark.java
+++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteAbstractBenchmark.java
@@ -20,6 +20,7 @@ package org.apache.ignite.yardstick;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ThreadLocalRandom;
import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteLogger;
import org.apache.ignite.IgniteState;
import org.apache.ignite.Ignition;
import org.apache.ignite.events.Event;
@@ -61,6 +62,11 @@ public abstract class IgniteAbstractBenchmark extends BenchmarkDriverAdapter {
node = new IgniteNode(args.isClientOnly() && !args.isNearCache(), Ignition.ignite());
waitForNodes();
+
+ IgniteLogger log = ignite().log();
+
+ if (log.isInfoEnabled())
+ log.info("Benchmark arguments: " + args);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/76cd44d6/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
index fd07841..a1c5087 100644
--- a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
+++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/IgniteBenchmarkArguments.java
@@ -126,6 +126,10 @@ public class IgniteBenchmarkArguments {
private boolean collocated;
/** */
+ @Parameter(names = {"-stripe", "--singleStripe"}, description = "Generate keys belonging to single stripe per node")
+ private boolean singleStripe;
+
+ /** */
@Parameter(names = {"-jdbc", "--jdbcUrl"}, description = "JDBC url")
private String jdbcUrl;
@@ -381,6 +385,13 @@ public class IgniteBenchmarkArguments {
}
/**
+ * @return Generate keys for single stripe per node.
+ */
+ public boolean singleStripe() {
+ return singleStripe;
+ }
+
+ /**
* @return Delay in second which used in nodes restart algorithm.
*/
public int restartDelay() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/76cd44d6/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgnitePutAllBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgnitePutAllBenchmark.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgnitePutAllBenchmark.java
index 8cd2347..33aa205 100644
--- a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgnitePutAllBenchmark.java
+++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgnitePutAllBenchmark.java
@@ -17,43 +17,118 @@
package org.apache.ignite.yardstick.cache;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
import java.util.Map;
-import java.util.SortedMap;
import java.util.TreeMap;
import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteLogger;
import org.apache.ignite.cache.affinity.Affinity;
import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.internal.util.typedef.internal.U;
import org.yardstickframework.BenchmarkConfiguration;
/**
* Ignite benchmark that performs putAll operations.
*/
public class IgnitePutAllBenchmark extends IgniteCacheAbstractBenchmark<Integer, Object> {
+ /** */
+ private static final Integer PUT_MAPS_KEY = 2048;
+
+ /** */
+ private static final Integer PUT_MAPS_CNT = 256;
+
/** Affinity mapper. */
private Affinity<Integer> aff;
+ /** */
+ private int srvrCnt;
+
+ /** */
+ private int stripesCnt;
+
/** {@inheritDoc} */
@Override public void setUp(BenchmarkConfiguration cfg) throws Exception {
super.setUp(cfg);
- aff = ignite().affinity("atomic");
+ aff = ignite().affinity(cache().getName());
+
+ Collection<ClusterNode> nodes = ignite().cluster().forServers().nodes();
+
+ stripesCnt = ignite().cluster().forServers().forRandom().metrics().getTotalCpus();
+
+ srvrCnt = nodes.size();
+
+ IgniteLogger log = ignite().log();
+
+ if (log.isInfoEnabled())
+ log.info("Servers info [srvrsCnt=" + srvrCnt + ", stripesCnt=" + stripesCnt + ']');
}
/** {@inheritDoc} */
@Override public boolean test(Map<Object, Object> ctx) throws Exception {
- SortedMap<Integer, Integer> vals = new TreeMap<>();
+ List<Map<Integer, Integer>> putMaps = (List<Map<Integer, Integer>>)ctx.get(PUT_MAPS_KEY);
+
+ if (putMaps == null) {
+ putMaps = new ArrayList<>(PUT_MAPS_CNT);
+
+ ctx.put(PUT_MAPS_KEY, putMaps);
+ }
+
+ Map<Integer, Integer> vals;
+
+ if (putMaps.size() == PUT_MAPS_CNT)
+ vals = putMaps.get(nextRandom(PUT_MAPS_CNT));
+ else {
+ vals = new TreeMap<>();
+
+ ClusterNode node = args.collocated() ? aff.mapKeyToNode(nextRandom(args.range())) : null;
+
+ Map<ClusterNode, Integer> stripesMap = null;
+
+ if (args.singleStripe())
+ stripesMap = U.newHashMap(srvrCnt);
+
+ for (; vals.size() < args.batch(); ) {
+ int key = nextRandom(args.range());
+
+ if (args.collocated() && !aff.isPrimary(
+ node,
+ key))
+ continue;
+
+ if (args.singleStripe()) {
+ int part = aff.partition(key);
+
+ ClusterNode node0 = node != null ? node : aff.mapPartitionToNode(part);
+
+ Integer stripe0 = stripesMap.get(node0);
+ int stripe = part % stripesCnt;
- ClusterNode node = args.collocated() ? aff.mapKeyToNode(nextRandom(args.range())) : null;
+ if (stripe0 != null) {
+ if (stripe0 != stripe)
+ continue;
+ }
+ else
+ stripesMap.put(
+ node0,
+ stripe);
+ }
- for (int i = 0; i < args.batch(); ) {
- int key = nextRandom(args.range());
+ vals.put(
+ key,
+ key);
+ }
- if (args.collocated() && !aff.isPrimary(node, key))
- continue;
+ putMaps.add(vals);
- ++i;
+ if (putMaps.size() == PUT_MAPS_CNT) {
+ IgniteLogger log = ignite().log();
- vals.put(key, key);
+ if (log.isInfoEnabled())
+ log.info("Put maps set generated.");
+ }
}
cache.putAll(vals);
http://git-wip-us.apache.org/repos/asf/ignite/blob/76cd44d6/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgnitePutAllTxBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgnitePutAllTxBenchmark.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgnitePutAllTxBenchmark.java
index 63faa2f..d701314 100644
--- a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgnitePutAllTxBenchmark.java
+++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgnitePutAllTxBenchmark.java
@@ -17,53 +17,12 @@
package org.apache.ignite.yardstick.cache;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
import org.apache.ignite.IgniteCache;
-import org.apache.ignite.cache.affinity.Affinity;
-import org.apache.ignite.cluster.ClusterNode;
-import org.yardstickframework.BenchmarkConfiguration;
/**
* Ignite benchmark that performs transactional putAll operations.
*/
-public class IgnitePutAllTxBenchmark extends IgniteCacheAbstractBenchmark<Integer, Object> {
- /** Affinity mapper. */
- private Affinity<Integer> aff;
-
- /** {@inheritDoc} */
- @Override public void setUp(BenchmarkConfiguration cfg) throws Exception {
- super.setUp(cfg);
-
- aff = ignite().affinity("tx");
- }
-
- /** {@inheritDoc} */
- @Override public boolean test(Map<Object, Object> ctx) throws Exception {
- ThreadRange r = threadRange();
-
- SortedMap<Integer, Integer> vals = new TreeMap<>();
-
- ClusterNode node = args.collocated() ? aff.mapKeyToNode(r.nextRandom()) : null;
-
- for (int i = 0; i < args.batch(); ) {
- int key = r.nextRandom();
-
- if (args.collocated() && !aff.isPrimary(node, key))
- continue;
-
- ++i;
-
- vals.put(key, key);
- }
-
- // Implicit transaction is used.
- cache.putAll(vals);
-
- return true;
- }
-
+public class IgnitePutAllTxBenchmark extends IgnitePutAllBenchmark {
/** {@inheritDoc} */
@Override protected IgniteCache<Integer, Object> cache() {
return ignite().cache("tx");