IGNITE-9503 Visor CMD: Fixed output of cache metrics.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/52069811 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/52069811 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/52069811 Branch: refs/heads/ignite-7251 Commit: 52069811feeb9dd37fd07b429917b153178a2469 Parents: 2105290 Author: Vasiliy Sisko <[email protected]> Authored: Thu Sep 13 23:37:57 2018 +0700 Committer: Alexey Kuznetsov <[email protected]> Committed: Thu Sep 13 23:37:57 2018 +0700 ---------------------------------------------------------------------- .../cache/VisorCacheAggregatedMetrics.java | 58 ++++++++++++++++---- .../commands/cache/VisorCacheCommand.scala | 19 +++++-- 2 files changed, 59 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/52069811/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAggregatedMetrics.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAggregatedMetrics.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAggregatedMetrics.java index a0258cc..6dd91d8 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAggregatedMetrics.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheAggregatedMetrics.java @@ -48,22 +48,28 @@ public class VisorCacheAggregatedMetrics extends VisorDataTransferObject { /** Node IDs with cache metrics. */ private Map<UUID, VisorCacheMetrics> metrics = new HashMap<>(); - /** Minimum number of elements in heap. */ + /** Total number of entries in heap. */ + private transient Long totalHeapSize; + + /** Minimum number of entries in heap. */ private transient Long minHeapSize; - /** Average number of elements in heap. */ + /** Average number of entries in heap. */ private transient Double avgHeapSize; - /** Maximum number of elements in heap. */ + /** Maximum number of entries in heap. */ private transient Long maxHeapSize; - /** Minimum number of elements in off heap. */ + /** Total number of entries in off heap. */ + private transient Long totalOffHeapSize; + + /** Minimum number of entries in off heap. */ private transient Long minOffHeapSize; - /** Average number of elements in off heap. */ + /** Average number of entries in off heap. */ private transient Double avgOffHeapSize; - /** Maximum number of elements in off heap. */ + /** Maximum number of entries in off heap. */ private transient Long maxOffHeapSize; /** Minimum hits of the owning cache. */ @@ -163,7 +169,21 @@ public class VisorCacheAggregatedMetrics extends VisorDataTransferObject { } /** - * @return Minimum number of elements in heap. + * @return Total number of entries in heap. + */ + public long getTotalHeapSize() { + if (totalHeapSize == null) { + totalHeapSize = 0L; + + for (VisorCacheMetrics metric : metrics.values()) + totalHeapSize += metric.getHeapEntriesCount(); + } + + return totalHeapSize; + } + + /** + * @return Minimum number of entries in heap. */ public long getMinimumHeapSize() { if (minHeapSize == null) { @@ -177,7 +197,7 @@ public class VisorCacheAggregatedMetrics extends VisorDataTransferObject { } /** - * @return Average number of elements in heap. + * @return Average number of entries in heap. */ public double getAverageHeapSize() { if (avgHeapSize == null) { @@ -193,7 +213,7 @@ public class VisorCacheAggregatedMetrics extends VisorDataTransferObject { } /** - * @return Maximum number of elements in heap. + * @return Maximum number of entries in heap. */ public long getMaximumHeapSize() { if (maxHeapSize == null) { @@ -215,7 +235,21 @@ public class VisorCacheAggregatedMetrics extends VisorDataTransferObject { } /** - * @return Minimum number of primary elements in off heap. + * @return Total number of entries in off-heap. + */ + public long getTotalOffHeapSize() { + if (totalOffHeapSize == null) { + totalOffHeapSize = 0L; + + for (VisorCacheMetrics metric : metrics.values()) + totalOffHeapSize += metric.getOffHeapPrimaryEntriesCount(); + } + + return totalOffHeapSize; + } + + /** + * @return Minimum number of primary entries in off heap. */ public long getMinimumOffHeapPrimarySize() { if (minOffHeapSize == null) { @@ -229,7 +263,7 @@ public class VisorCacheAggregatedMetrics extends VisorDataTransferObject { } /** - * @return Average number of primary elements in off heap. + * @return Average number of primary entries in off heap. */ public double getAverageOffHeapPrimarySize() { if (avgOffHeapSize == null) { @@ -245,7 +279,7 @@ public class VisorCacheAggregatedMetrics extends VisorDataTransferObject { } /** - * @return Maximum number of primary elements in off heap. + * @return Maximum number of primary entries in off heap. */ public long getMaximumOffHeapPrimarySize() { if (maxOffHeapSize == null) { http://git-wip-us.apache.org/repos/asf/ignite/blob/52069811/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheCommand.scala ---------------------------------------------------------------------- diff --git a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheCommand.scala b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheCommand.scala index e3e2001..25f1212 100755 --- a/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheCommand.scala +++ b/modules/visor-console/src/main/scala/org/apache/ignite/visor/commands/cache/VisorCacheCommand.scala @@ -356,7 +356,7 @@ class VisorCacheCommand extends VisorConsoleCommand { val sumT = VisorTextTable() - sumT #= ("Name(@)", "Mode", "Nodes", "Entries (Heap / Off-heap)", "Hits", "Misses", "Reads", "Writes") + sumT #= ("Name(@)", "Mode", "Nodes", "Total entries (Heap / Off-heap)", "Primary entries (Heap / Off-heap)", "Hits", "Misses", "Reads", "Writes") sortAggregatedData(aggrData, sortType.getOrElse("cn"), reversed).foreach( ad => { @@ -367,6 +367,7 @@ class VisorCacheCommand extends VisorConsoleCommand { mkCacheName(ad.getName), ad.getMode, ad.getNodes.size(), + (ad.getTotalHeapSize + ad.getTotalOffHeapSize) + " (" + ad.getTotalHeapSize + " / " + ad.getTotalOffHeapSize + ")", ( "min: " + (ad.getMinimumHeapSize + ad.getMinimumOffHeapPrimarySize) + " (" + ad.getMinimumHeapSize + " / " + ad.getMinimumOffHeapPrimarySize + ")", @@ -424,6 +425,8 @@ class VisorCacheCommand extends VisorConsoleCommand { val csT = VisorTextTable() csT += ("Name(@)", cacheNameVar) + csT += ("Total entries (Heap / Off-heap)", (ad.getTotalHeapSize + ad.getTotalOffHeapSize) + + " (" + ad.getTotalHeapSize + " / " + ad.getTotalOffHeapSize + ")") csT += ("Nodes", m.size()) csT += ("Total size Min/Avg/Max", (ad.getMinimumHeapSize + ad.getMinimumOffHeapPrimarySize) + " / " + formatDouble(ad.getAverageHeapSize + ad.getAverageOffHeapPrimarySize) + " / " + @@ -435,7 +438,7 @@ class VisorCacheCommand extends VisorConsoleCommand { val ciT = VisorTextTable() - ciT #= ("Node ID8(@), IP", "CPUs", "Heap Used", "CPU Load", "Up Time", "Size", "Hi/Mi/Rd/Wr") + ciT #= ("Node ID8(@), IP", "CPUs", "Heap Used", "CPU Load", "Up Time", "Size (Primary / Backup)", "Hi/Mi/Rd/Wr") sortData(m.toMap, sortType.getOrElse("hi"), reversed).foreach { case (nid, cm) => val nm = ignite.cluster.node(nid).metrics() @@ -448,10 +451,14 @@ class VisorCacheCommand extends VisorConsoleCommand { formatDouble(nm.getCurrentCpuLoad * 100d) + " %", X.timeSpan2HMSM(nm.getUpTime), ( - "Total: " + (cm.getHeapEntriesCount + cm.getOffHeapPrimaryEntriesCount), - " Heap: " + cm.getHeapEntriesCount, - " Off-Heap: " + cm.getOffHeapPrimaryEntriesCount, - " Off-Heap Memory: " + formatMemory(cm.getOffHeapAllocatedSize) + "Total: " + (cm.getHeapEntriesCount + cm.getOffHeapEntriesCount) + + " (" + (cm.getHeapEntriesCount + cm.getOffHeapPrimaryEntriesCount) + " / " + cm.getOffHeapBackupEntriesCount + ")", + " Heap: " + cm.getHeapEntriesCount + " (" + cm.getHeapEntriesCount + " / " + NA + ")", + " Off-Heap: " + cm.getOffHeapEntriesCount + + " (" + cm.getOffHeapPrimaryEntriesCount + " / " + cm.getOffHeapBackupEntriesCount + ")", + " Off-Heap Memory: " + (if (cm.getOffHeapPrimaryEntriesCount == 0) "0" + else if (cm.getOffHeapAllocatedSize > 0) formatMemory(cm.getOffHeapAllocatedSize) + else NA) ), ( "Hi: " + cm.getHits,
