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/096404d3
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/096404d3
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/096404d3

Branch: refs/heads/ignite-5398
Commit: 096404d36c1cc3a1d9da1db3a2b0a2b7fcdd702d
Parents: afbade5
Author: Yakov Zhdanov <[email protected]>
Authored: Fri May 19 20:33:36 2017 +0300
Committer: Yakov Zhdanov <[email protected]>
Committed: Fri May 19 20:33:36 2017 +0300

----------------------------------------------------------------------
 .../managers/communication/GridIoManager.java   | 30 ++++++++++++++++++--
 1 file changed, 27 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/096404d3/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 45b3fa0..5d88ed1 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
@@ -62,6 +62,7 @@ import 
org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
 import 
org.apache.ignite.internal.processors.platform.message.PlatformMessageFilter;
 import org.apache.ignite.internal.processors.pool.PoolProcessor;
 import org.apache.ignite.internal.processors.timeout.GridTimeoutObject;
+import org.apache.ignite.internal.util.GridAtomicLong;
 import org.apache.ignite.internal.util.GridBoundedConcurrentLinkedHashSet;
 import org.apache.ignite.internal.util.GridSpinReadWriteLock;
 import org.apache.ignite.internal.util.future.GridFinishedFuture;
@@ -456,6 +457,7 @@ public class GridIoManager extends 
GridManagerAdapter<CommunicationSpi<Serializa
         final long sleepDuration = 5000;
         final byte[] payLoad = new byte[payLoadSize];
         final Map<UUID, long[]>[] res = new Map[threads];
+        final ConcurrentMap<UUID, GridAtomicLong> maxLatencies = new 
ConcurrentHashMap8<>();
 
         boolean failed = true;
 
@@ -529,7 +531,7 @@ public class GridIoManager extends 
GridManagerAdapter<CommunicationSpi<Serializa
                             }
                         }
 
-                        printIoTestResults(maxLatency / (1000 * rangesCnt), 
res0);
+                        printIoTestResults(maxLatency / (1000 * rangesCnt), 
res0, maxLatencies);
                     }
                     catch (InterruptedException | BrokenBarrierException e) {
                         U.error(log, "IO test failed.", e);
@@ -580,8 +582,21 @@ public class GridIoManager extends 
GridManagerAdapter<CommunicationSpi<Serializa
                                 if (latencies == null)
                                     res0.put(node.id(), latencies = new 
long[rangesCnt + 1]);
 
-                                if (latency >= maxLatency)
+                                if (latency >= maxLatency) {
                                     latencies[rangesCnt]++; // Timed out.
+
+                                    GridAtomicLong maxLatency = 
maxLatencies.get(node.id());
+
+                                    if (maxLatency == null) {
+                                        GridAtomicLong old = 
maxLatencies.putIfAbsent(node.id(),
+                                            maxLatency = new GridAtomicLong());
+
+                                        if (old != null)
+                                            maxLatency = old;
+                                    }
+
+                                    maxLatency.setIfGreater(latency);
+                                }
                                 else {
                                     int idx = (int)Math.floor((1.0 * latency) 
/ ((1.0 * maxLatency) / rangesCnt));
 
@@ -615,8 +630,13 @@ public class GridIoManager extends 
GridManagerAdapter<CommunicationSpi<Serializa
     /**
      * @param binLatencyMcs Bin latency in microseconds.
      * @param res Resulting map.
+     * @param maxLatencies Max latency for each node.
      */
-    private void printIoTestResults(long binLatencyMcs, Map<UUID, long[]> res) 
{
+    private void printIoTestResults(
+        long binLatencyMcs,
+        Map<UUID, long[]> res,
+        ConcurrentMap<UUID, GridAtomicLong> maxLatencies
+    ) {
         StringBuilder b = new StringBuilder(U.nl())
             .append("IO test results (round-trip count per each latency bin) " 
+
                 "[binLatency=" + binLatencyMcs + "mcs]")
@@ -654,6 +674,10 @@ public class GridIoManager extends 
GridManagerAdapter<CommunicationSpi<Serializa
                         nodeRes[i], (100.0 * nodeRes[i]) / sum,
                         curSum, (100.0 * curSum) / sum));
             }
+
+            GridAtomicLong maxLatency = maxLatencies.get(e.getKey());
+
+            b.append("Max latency (ns): ").append(maxLatency != null ? 
maxLatency.get() : -1).append(U.nl());
         }
 
         if (log.isInfoEnabled())

Reply via email to