You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ds...@apache.org on 2016/07/18 18:11:51 UTC

incubator-geode git commit: GEODE-1590: add defragmentationsInProgress stat

Repository: incubator-geode
Updated Branches:
  refs/heads/develop e72831ecb -> 5cbaa7d19


GEODE-1590: add defragmentationsInProgress stat


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/5cbaa7d1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/5cbaa7d1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/5cbaa7d1

Branch: refs/heads/develop
Commit: 5cbaa7d193e1d15d78f32afa4cbb455904450e1a
Parents: e72831e
Author: Darrel Schneider <ds...@pivotal.io>
Authored: Fri Jul 8 11:18:59 2016 -0700
Committer: Darrel Schneider <ds...@pivotal.io>
Committed: Mon Jul 18 11:03:35 2016 -0700

----------------------------------------------------------------------
 .../internal/offheap/OffHeapMemoryStats.java     |  1 +
 .../gemfire/internal/offheap/OffHeapStorage.java | 19 ++++++++++++++++++-
 .../internal/offheap/NullOffHeapMemoryStats.java |  4 ++++
 .../offheap/OffHeapStorageJUnitTest.java         |  6 +++++-
 4 files changed, 28 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cbaa7d1/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapMemoryStats.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapMemoryStats.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapMemoryStats.java
index 1204814..bd888ca 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapMemoryStats.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapMemoryStats.java
@@ -42,6 +42,7 @@ public interface OffHeapMemoryStats {
   public long getReads();
   public int getObjects();
   public int getDefragmentations();
+  public int getDefragmentationsInProgress();
   public long getFragments();
   public int getLargestFragment();
   public int getFragmentation();

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cbaa7d1/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStorage.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStorage.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStorage.java
index 47f25b0..bc7fb6a 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStorage.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/offheap/OffHeapStorage.java
@@ -56,6 +56,7 @@ public class OffHeapStorage implements OffHeapMemoryStats {
   private static final int largestFragmentId;
   private static final int defragmentationTimeId;
   private static final int fragmentationId;
+  private static final int defragmentationsInProgressId;
   // NOTE!!!! When adding new stats make sure and update the initialize method on this class
   
   // creates and registers the statistics type
@@ -64,6 +65,7 @@ public class OffHeapStorage implements OffHeapMemoryStats {
     
     final String usedMemoryDesc = "The amount of off-heap memory, in bytes, that is being used to store data.";
     final String defragmentationDesc = "The total number of times off-heap memory has been defragmented.";
+    final String defragmentationsInProgressDesc = "Current number of defragment operations currently in progress.";
     final String defragmentationTimeDesc = "The total time spent defragmenting off-heap memory.";
     final String fragmentationDesc = "The percentage of off-heap free memory that is fragmented.  Updated every time a defragmentation is performed.";
     final String fragmentsDesc = "The number of fragments of free off-heap memory. Updated every time a defragmentation is done.";
@@ -75,6 +77,7 @@ public class OffHeapStorage implements OffHeapMemoryStats {
 
     final String usedMemory = "usedMemory";
     final String defragmentations = "defragmentations";
+    final String defragmentationsInProgress = "defragmentationsInProgress";
     final String defragmentationTime = "defragmentationTime";
     final String fragmentation = "fragmentation";
     final String fragments = "fragments";
@@ -89,7 +92,8 @@ public class OffHeapStorage implements OffHeapMemoryStats {
         statsTypeDescription,
         new StatisticDescriptor[] {
             f.createLongGauge(usedMemory, usedMemoryDesc, "bytes"),
-            f.createIntCounter(defragmentations, defragmentationDesc, "defragmentations"),
+            f.createIntCounter(defragmentations, defragmentationDesc, "operations"),
+            f.createIntGauge(defragmentationsInProgress, defragmentationsInProgressDesc, "operations"),
             f.createLongCounter(defragmentationTime, defragmentationTimeDesc, "nanoseconds", false),
             f.createIntGauge(fragmentation, fragmentationDesc, "percentage"),
             f.createLongGauge(fragments, fragmentsDesc, "fragments"),
@@ -103,6 +107,7 @@ public class OffHeapStorage implements OffHeapMemoryStats {
     
     usedMemoryId = statsType.nameToId(usedMemory);
     defragmentationId = statsType.nameToId(defragmentations);
+    defragmentationsInProgressId = statsType.nameToId(defragmentationsInProgress);
     defragmentationTimeId = statsType.nameToId(defragmentationTime);
     fragmentationId = statsType.nameToId(fragmentation);
     fragmentsId = statsType.nameToId(fragments);
@@ -306,13 +311,20 @@ public class OffHeapStorage implements OffHeapMemoryStats {
   }
   
   @Override
+  public int getDefragmentationsInProgress() {
+    return this.stats.getInt(defragmentationsInProgressId);
+  }
+  
+  @Override
   public long startDefragmentation() {
+    this.stats.incInt(defragmentationsInProgressId, 1);
     return DistributionStats.getStatTime();
   }
   
   @Override
   public void endDefragmentation(long start) {
     incDefragmentations();
+    this.stats.incInt(defragmentationsInProgressId, -1);
     if (DistributionStats.enableClockStats) {
       stats.incLong(defragmentationTimeId, DistributionStats.getStatTime()-start);
     }
@@ -350,6 +362,7 @@ public class OffHeapStorage implements OffHeapMemoryStats {
     setObjects(oldStats.getObjects());
     setReads(oldStats.getReads());
     setDefragmentations(oldStats.getDefragmentations());
+    setDefragmentationsInProgress(oldStats.getDefragmentationsInProgress());
     setFragments(oldStats.getFragments());
     setLargestFragment(oldStats.getLargestFragment());
     setDefragmentationTime(oldStats.getDefragmentationTime());
@@ -365,6 +378,10 @@ public class OffHeapStorage implements OffHeapMemoryStats {
   private void setDefragmentations(int value) {
     this.stats.setInt(defragmentationId, value);
   }
+  
+  private void setDefragmentationsInProgress(int value) {
+    this.stats.setInt(defragmentationsInProgressId, value);
+  }
 
   private void setReads(long value) {
     this.stats.setLong(readsId, value);

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cbaa7d1/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/NullOffHeapMemoryStats.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/NullOffHeapMemoryStats.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/NullOffHeapMemoryStats.java
index 6a1b2a6..ac104dc 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/NullOffHeapMemoryStats.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/NullOffHeapMemoryStats.java
@@ -63,6 +63,10 @@ public class NullOffHeapMemoryStats implements OffHeapMemoryStats {
     return 0;
   }
   @Override
+  public int getDefragmentationsInProgress() {
+    return 0;
+  }
+  @Override
   public void setFragments(long value) {
   }
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/5cbaa7d1/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStorageJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStorageJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStorageJUnitTest.java
index 90ff3cf..93bef98 100755
--- a/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStorageJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/internal/offheap/OffHeapStorageJUnitTest.java
@@ -168,6 +168,7 @@ public class OffHeapStorageJUnitTest {
       assertEquals(1024 * 1024, stats.getMaxMemory());
       assertEquals(0, stats.getUsedMemory());
       assertEquals(0, stats.getDefragmentations());
+      assertEquals(0, stats.getDefragmentationsInProgress());
       assertEquals(0, stats.getDefragmentationTime());
       assertEquals(0, stats.getFragmentation());
       assertEquals(1, stats.getFragments());
@@ -217,11 +218,13 @@ public class OffHeapStorageJUnitTest {
       DistributionStats.enableClockStats = true;
       try {
         long start = stats.startDefragmentation();
-        while (stats.startDefragmentation() == start) {
+        assertEquals(1, stats.getDefragmentationsInProgress());
+        while (DistributionStats.getStatTime() == start) {
           Thread.yield();
         }
         stats.endDefragmentation(start);
         assertEquals(1, stats.getDefragmentations());
+        assertEquals(0, stats.getDefragmentationsInProgress());
         assertTrue(stats.getDefragmentationTime() > 0);
       } finally {
         DistributionStats.enableClockStats = originalEnableClockStats;
@@ -236,6 +239,7 @@ public class OffHeapStorageJUnitTest {
       assertEquals(0, stats.getMaxMemory());
       assertEquals(0, stats.getUsedMemory());
       assertEquals(0, stats.getDefragmentations());
+      assertEquals(0, stats.getDefragmentationsInProgress());
       assertEquals(0, stats.getDefragmentationTime());
       assertEquals(0, stats.getFragmentation());
       assertEquals(0, stats.getFragments());