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,

Reply via email to