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 2017/05/17 22:24:04 UTC

[07/15] ignite git commit: Results printout for IO latency test

Results printout for IO latency test


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a0fc6ee6
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a0fc6ee6
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a0fc6ee6

Branch: refs/heads/ignite-5075
Commit: a0fc6ee6018007ed9b358b1766e4998cd0a1e9d2
Parents: 958b08f
Author: Yakov Zhdanov <yz...@gridgain.com>
Authored: Wed May 17 16:36:27 2017 +0300
Committer: Yakov Zhdanov <yz...@gridgain.com>
Committed: Wed May 17 16:36:27 2017 +0300

----------------------------------------------------------------------
 .../managers/communication/GridIoManager.java   | 68 +++++++++++++++-----
 1 file changed, 52 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/a0fc6ee6/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index fc94667..800f3cc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -524,7 +524,9 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
                             Thread.sleep(sleepDuration);
                         }
 
-                        // At this point all threads have finished the test and stored data to the result map.
+                        // At this point all threads have finished the test and
+                        // stored data to the resulting array of maps.
+                        // Need to iterate it over and sum values for all threads.
                         Map<UUID, long[]> res0 = new HashMap<>();
 
                         for (Map<UUID, long[]> r : res) {
@@ -540,21 +542,7 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
                             }
                         }
 
-                        StringBuilder b = new StringBuilder("IO test results " +
-                            "[range=" + (maxLatency / (1000 * rangesCnt)) + "mcs]");
-
-                        b.append(U.nl());
-
-                        for (Entry<UUID, long[]> e : res0.entrySet()) {
-                            ClusterNode node = ctx.discovery().node(e.getKey());
-
-                            b.append("    ").append(e.getKey()).append(" (addrs=")
-                                .append(node != null ? node.addresses().toString() : "n/a").append(')')
-                                .append(Arrays.toString(e.getValue())).append(U.nl());
-                        }
-
-                        if (log.isInfoEnabled())
-                            log.info(b.toString());
+                        printIoTestResults(maxLatency / (1000 * rangesCnt), res0);
                     }
                     catch (InterruptedException | BrokenBarrierException e) {
                         U.error(log, "IO test failed.", e);
@@ -637,6 +625,54 @@ public class GridIoManager extends GridManagerAdapter<CommunicationSpi<Serializa
         }
     }
 
+    /**
+     * @param binLatencyMcs Bin latency in microseconds.
+     * @param res Resulting map.
+     */
+    private void printIoTestResults(long binLatencyMcs, Map<UUID, long[]> res) {
+        StringBuilder b = new StringBuilder(U.nl())
+            .append("IO test results (round-trip count per each latency bin) " +
+                "[binLatency=" + binLatencyMcs + "mcs]")
+            .append(U.nl());
+
+        for (Entry<UUID, long[]> e : res.entrySet()) {
+            ClusterNode node = ctx.discovery().node(e.getKey());
+
+            b.append("Node ID: ").append(e.getKey()).append(" (addrs=")
+                .append(node != null ? node.addresses().toString() : "n/a").append(')').append(U.nl());
+
+            b.append("Latency bin, mcs | Count exclusive | Percentage exclusive | " +
+                "Count inclusive | Percentage inclusive ").append(U.nl());
+
+            long[] nodeRes = e.getValue();
+
+            long sum = 0;
+
+            for (int i = 0; i < nodeRes.length; i++)
+                sum += nodeRes[i];
+
+            long curSum = 0;
+
+            for (int i = 0; i < nodeRes.length; i++) {
+                curSum += nodeRes[i];
+
+                if (i < nodeRes.length - 1)
+                    b.append(String.format("<%11d mcs | %15d | %19.6f%% | %15d | %19.6f%%\n",
+                        (i + 1) * binLatencyMcs,
+                        nodeRes[i], (100.0 * nodeRes[i]) / sum,
+                        curSum, (100.0 * curSum) / sum));
+                else
+                    b.append(String.format(">%11d mcs | %15d | %19.6f%% | %15d | %19.6f%%\n",
+                        i * binLatencyMcs,
+                        nodeRes[i], (100.0 * nodeRes[i]) / sum,
+                        curSum, (100.0 * curSum) / sum));
+            }
+        }
+
+        if (log.isInfoEnabled())
+            log.info(b.toString());
+    }
+
     /** {@inheritDoc} */
     @SuppressWarnings({"deprecation", "SynchronizationOnLocalVariableOrMethodParameter"})
     @Override public void onKernalStart0() throws IgniteCheckedException {