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())
