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