You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2016/03/02 09:11:26 UTC
[07/19] ignite git commit: Added print partition stats.
Added print partition stats.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/071498f1
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/071498f1
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/071498f1
Branch: refs/heads/ignite-1232
Commit: 071498f10ab1857759bc3c180199b6c7efbce81a
Parents: 62c26d5
Author: nikolay_tikhonov <nt...@gridgain.com>
Authored: Mon Feb 29 22:20:15 2016 +0300
Committer: nikolay_tikhonov <nt...@gridgain.com>
Committed: Mon Feb 29 22:20:15 2016 +0300
----------------------------------------------------------------------
.../yardstick/IgniteBenchmarkArguments.java | 11 +++++
.../cache/IgniteCacheAbstractBenchmark.java | 52 ++++++++++++++++++++
2 files changed, 63 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/071498f1/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 1ecfa0f..36551cc 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
@@ -136,6 +136,17 @@ public class IgniteBenchmarkArguments {
@Parameter(names = {"-kpt", "--keysPerThread"}, description = "Use not intersecting keys in putAll benchmark")
private boolean keysPerThread;
+ /** */
+ @Parameter(names = {"-pp", "--printPartitionStats"}, description = "Print partition statistics")
+ private boolean printPartStats;
+
+ /**
+ * @return If {@code true} when need to print partition statistics.
+ */
+ public boolean printPartitionStatistics() {
+ return printPartStats;
+ }
+
/**
* @return JDBC url.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/071498f1/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteCacheAbstractBenchmark.java
----------------------------------------------------------------------
diff --git a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteCacheAbstractBenchmark.java b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteCacheAbstractBenchmark.java
index 3efa4a5..c9a4b9c 100644
--- a/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteCacheAbstractBenchmark.java
+++ b/modules/yardstick/src/main/java/org/apache/ignite/yardstick/cache/IgniteCacheAbstractBenchmark.java
@@ -17,9 +17,18 @@
package org.apache.ignite.yardstick.cache;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.affinity.Affinity;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.internal.util.typedef.T2;
+import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.yardstick.IgniteAbstractBenchmark;
import org.yardstickframework.BenchmarkConfiguration;
import org.yardstickframework.BenchmarkUtils;
@@ -42,6 +51,49 @@ public abstract class IgniteCacheAbstractBenchmark<K, V> extends IgniteAbstractB
super.setUp(cfg);
cache = cache();
+
+ if (args.printPartitionStatistics()) {
+ Map<ClusterNode, T2<List<Integer>, List<Integer>>> parts = new HashMap<>();
+
+ for (ClusterNode node : ignite().cluster().nodes())
+ parts.put(node,
+ new T2<List<Integer>, List<Integer>>(new ArrayList<Integer>(), new ArrayList<Integer>()));
+
+ U.sleep(5000);
+
+ Affinity<Object> aff = ignite().affinity(cache.getName());
+
+ for (int p = 0; p < aff.partitions(); p++) {
+ Collection<ClusterNode> nodes = aff.mapPartitionToPrimaryAndBackups(p);
+
+ boolean primary = true;
+
+ for (ClusterNode node : nodes) {
+ if (primary) {
+ parts.get(node).get1().add(p);
+
+ primary = false;
+ }
+ else
+ parts.get(node).get2().add(p);
+ }
+ }
+
+ BenchmarkUtils.println(cfg, "Partition stats. [cacheName: "+ cache.getName() +", topVer: "
+ + ignite().cluster().topologyVersion() + "]");
+ BenchmarkUtils.println(cfg, "(Node id, Number of Primary, Percent, Number of Backup, Percent, Total, Percent)");
+
+ for (Map.Entry<ClusterNode, T2<List<Integer>, List<Integer>>> e : parts.entrySet()) {
+ List<Integer> primary = e.getValue().get1();
+ List<Integer> backup = e.getValue().get2();
+
+ BenchmarkUtils.println(cfg, e.getKey().id() + " " + primary.size() + " " + primary.size() * 1. /
+ aff.partitions() + " " + backup.size() + " "
+ + backup.size() * 1. / (aff.partitions() * args.backups() == 0 ? 1 : args.backups())
+ + (primary.size() + backup.size() * 1.) / (aff.partitions() * args.backups() + aff.partitions())
+ );
+ }
+ }
}
/**