You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dp...@apache.org on 2018/05/24 15:04:22 UTC
ignite git commit: IGNITE-8583
DataStorageMetricsMXBean.getOffHeapSize include checkpoint buffer size -
Fixes #4054.
Repository: ignite
Updated Branches:
refs/heads/master b9100aa7c -> 86c18998d
IGNITE-8583 DataStorageMetricsMXBean.getOffHeapSize include checkpoint buffer size - Fixes #4054.
Signed-off-by: dpavlov <dp...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/86c18998
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/86c18998
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/86c18998
Branch: refs/heads/master
Commit: 86c18998dbb430c69eb136ffce54858f52432808
Parents: b9100aa
Author: Dmitriy Govorukhin <dm...@gmail.com>
Authored: Thu May 24 18:04:02 2018 +0300
Committer: dpavlov <dp...@apache.org>
Committed: Thu May 24 18:04:02 2018 +0300
----------------------------------------------------------------------
.../org/apache/ignite/DataRegionMetrics.java | 11 ++-
.../org/apache/ignite/DataStorageMetrics.java | 21 +++++
.../persistence/DataRegionMetricsImpl.java | 31 +++++--
.../DataRegionMetricsMXBeanImpl.java | 9 +-
.../persistence/DataRegionMetricsSnapshot.java | 17 +++-
.../persistence/DataStorageMetricsImpl.java | 54 +++++++++++
.../persistence/DataStorageMetricsSnapshot.java | 33 ++++++-
.../GridCacheDatabaseSharedManager.java | 46 ++++++++++
.../platform/cluster/PlatformClusterGroup.java | 4 +-
.../visor/cache/VisorMemoryMetrics.java | 4 +-
.../ignite/mxbean/DataStorageMetricsMXBean.java | 12 +++
.../db/IgnitePdsDataRegionMetricsTest.java | 97 ++++++++++++++++++--
.../ApiParity/DataRegionMetricsParityTest.cs | 4 +-
.../ApiParity/DataStorageMetricsParityTest.cs | 5 +-
14 files changed, 318 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/core/src/main/java/org/apache/ignite/DataRegionMetrics.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/DataRegionMetrics.java b/modules/core/src/main/java/org/apache/ignite/DataRegionMetrics.java
index ca2fc66..88dcd16 100644
--- a/modules/core/src/main/java/org/apache/ignite/DataRegionMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/DataRegionMetrics.java
@@ -146,11 +146,18 @@ public interface DataRegionMetrics {
public long getPhysicalMemorySize();
/**
- * Gets checkpoint buffer size in pages.
+ * Gets used checkpoint buffer size in pages.
*
* @return Checkpoint buffer size in pages.
*/
- public long getCheckpointBufferPages();
+ public long getUsedCheckpointBufferPages();
+
+ /**
+ * Gets used checkpoint buffer size in bytes.
+ *
+ * @return Checkpoint buffer size in bytes.
+ */
+ public long getUsedCheckpointBufferSize();
/**
* Gets checkpoint buffer size in bytes.
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/core/src/main/java/org/apache/ignite/DataStorageMetrics.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/DataStorageMetrics.java b/modules/core/src/main/java/org/apache/ignite/DataStorageMetrics.java
index 5fb2b1e..cdde0ac 100644
--- a/modules/core/src/main/java/org/apache/ignite/DataStorageMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/DataStorageMetrics.java
@@ -191,4 +191,25 @@ public interface DataStorageMetrics {
* @return Total size of memory allocated in bytes.
*/
public long getTotalAllocatedSize();
+
+ /**
+ * Gets used checkpoint buffer size in pages.
+ *
+ * @return Checkpoint buffer size in pages.
+ */
+ public long getUsedCheckpointBufferPages();
+
+ /**
+ * Gets used checkpoint buffer size in bytes.
+ *
+ * @return Checkpoint buffer size in bytes.
+ */
+ public long getUsedCheckpointBufferSize();
+
+ /**
+ * Checkpoint buffer size in bytes.
+ *
+ * @return Checkpoint buffer size in bytes.
+ */
+ public long getCheckpointBufferSize();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
index cb13747..a82f73b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsImpl.java
@@ -62,6 +62,9 @@ public class DataRegionMetricsImpl implements DataRegionMetrics, AllocatedPageTr
private final AtomicLong offHeapSize = new AtomicLong();
/** */
+ private final AtomicLong checkpointBufferSize = new AtomicLong();
+
+ /** */
private volatile boolean metricsEnabled;
/** */
@@ -129,7 +132,7 @@ public class DataRegionMetricsImpl implements DataRegionMetrics, AllocatedPageTr
@Override public long getTotalAllocatedSize() {
assert pageMem != null;
- return getTotalAllocatedPages() * pageMem.pageSize();
+ return getTotalAllocatedPages() * (persistenceEnabled ? pageMem.pageSize() : pageMem.systemPageSize());
}
/** {@inheritDoc} */
@@ -211,12 +214,12 @@ public class DataRegionMetricsImpl implements DataRegionMetrics, AllocatedPageTr
/** {@inheritDoc} */
@Override public long getPhysicalMemorySize() {
- return getPhysicalMemoryPages() * pageMem.pageSize();
+ return getPhysicalMemoryPages() * pageMem.systemPageSize();
}
/** {@inheritDoc} */
- @Override public long getCheckpointBufferPages() {
- if (!metricsEnabled)
+ @Override public long getUsedCheckpointBufferPages() {
+ if (!metricsEnabled || !persistenceEnabled)
return 0;
assert pageMem != null;
@@ -225,8 +228,16 @@ public class DataRegionMetricsImpl implements DataRegionMetrics, AllocatedPageTr
}
/** {@inheritDoc} */
+ @Override public long getUsedCheckpointBufferSize() {
+ return getUsedCheckpointBufferPages() * pageMem.systemPageSize();
+ }
+
+ /** {@inheritDoc} */
@Override public long getCheckpointBufferSize() {
- return getCheckpointBufferPages() * pageMem.pageSize();
+ if (!metricsEnabled || !persistenceEnabled)
+ return 0;
+
+ return checkpointBufferSize.get();
}
/** {@inheritDoc} */
@@ -276,11 +287,10 @@ public class DataRegionMetricsImpl implements DataRegionMetrics, AllocatedPageTr
if (!metricsEnabled)
return 0;
- return pageMem.loadedPages() * pageMem.pageSize();
+ return pageMem.loadedPages() * pageMem.systemPageSize();
}
/**
- *
* @param size Region size.
*/
public void updateOffHeapSize(long size) {
@@ -288,6 +298,13 @@ public class DataRegionMetricsImpl implements DataRegionMetrics, AllocatedPageTr
}
/**
+ * @param size Checkpoint buffer size.
+ */
+ public void updateCheckpointBufferSize(long size) {
+ this.checkpointBufferSize.addAndGet(size);
+ }
+
+ /**
* Updates pageReplaceRate metric.
*/
public void updatePageReplaceRate(long pageAge) {
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsMXBeanImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsMXBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsMXBeanImpl.java
index 9ab6824..f837168 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsMXBeanImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsMXBeanImpl.java
@@ -97,8 +97,13 @@ class DataRegionMetricsMXBeanImpl implements DataRegionMetricsMXBean {
}
/** {@inheritDoc} */
- @Override public long getCheckpointBufferPages() {
- return memMetrics.getCheckpointBufferPages();
+ @Override public long getUsedCheckpointBufferPages() {
+ return memMetrics.getUsedCheckpointBufferPages();
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getUsedCheckpointBufferSize() {
+ return memMetrics.getUsedCheckpointBufferSize();
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsSnapshot.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsSnapshot.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsSnapshot.java
index 6126c4b..f119419 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsSnapshot.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataRegionMetricsSnapshot.java
@@ -60,7 +60,10 @@ public class DataRegionMetricsSnapshot implements DataRegionMetrics {
private long physicalMemorySize;
/** */
- private long checkpointBufferPages;
+ private long usedCheckpointBufferPages;
+
+ /** */
+ private long usedCheckpointBufferSize;
/** */
private long checkpointBufferSize;
@@ -99,7 +102,8 @@ public class DataRegionMetricsSnapshot implements DataRegionMetrics {
pageReplaceAge = metrics.getPagesReplaceAge();
physicalMemoryPages = metrics.getPhysicalMemoryPages();
physicalMemorySize = metrics.getPhysicalMemorySize();
- checkpointBufferPages = metrics.getCheckpointBufferPages();
+ usedCheckpointBufferPages = metrics.getUsedCheckpointBufferPages();
+ usedCheckpointBufferSize = metrics.getUsedCheckpointBufferSize();
checkpointBufferSize = metrics.getCheckpointBufferSize();
pageSize = metrics.getPageSize();
readPages = metrics.getPagesRead();
@@ -170,8 +174,13 @@ public class DataRegionMetricsSnapshot implements DataRegionMetrics {
}
/** {@inheritDoc} */
- @Override public long getCheckpointBufferPages() {
- return checkpointBufferPages;
+ @Override public long getUsedCheckpointBufferPages() {
+ return usedCheckpointBufferPages;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getUsedCheckpointBufferSize() {
+ return usedCheckpointBufferSize;
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsImpl.java
index b7f99e5..03955a4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsImpl.java
@@ -396,6 +396,60 @@ public class DataStorageMetricsImpl implements DataStorageMetricsMXBean {
return totalAllocatedSize;
}
+ /** {@inheritDoc} */
+ @Override public long getUsedCheckpointBufferPages() {
+ if (!metricsEnabled)
+ return 0;
+
+ Collection<DataRegionMetrics> regionMetrics0 = regionMetrics;
+
+ if (F.isEmpty(regionMetrics0))
+ return 0;
+
+ long usedCheckpointBufferPages = 0L;
+
+ for (DataRegionMetrics rm : regionMetrics0)
+ usedCheckpointBufferPages += rm.getUsedCheckpointBufferPages();
+
+ return usedCheckpointBufferPages;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getUsedCheckpointBufferSize() {
+ if (!metricsEnabled)
+ return 0;
+
+ Collection<DataRegionMetrics> regionMetrics0 = regionMetrics;
+
+ if (F.isEmpty(regionMetrics0))
+ return 0;
+
+ long usedCheckpointBufferSize = 0L;
+
+ for (DataRegionMetrics rm : regionMetrics0)
+ usedCheckpointBufferSize += rm.getUsedCheckpointBufferSize();
+
+ return usedCheckpointBufferSize;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getCheckpointBufferSize(){
+ if (!metricsEnabled)
+ return 0;
+
+ Collection<DataRegionMetrics> regionMetrics0 = regionMetrics;
+
+ if (F.isEmpty(regionMetrics0))
+ return 0;
+
+ long checkpointBufferSize = 0L;
+
+ for (DataRegionMetrics rm : regionMetrics0)
+ checkpointBufferSize += rm.getCheckpointBufferSize();
+
+ return checkpointBufferSize;
+ }
+
/**
* @param wal Write-ahead log manager.
*/
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsSnapshot.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsSnapshot.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsSnapshot.java
index cb52279..c3bcd5b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsSnapshot.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/DataStorageMetricsSnapshot.java
@@ -69,7 +69,16 @@ public class DataStorageMetricsSnapshot implements DataStorageMetrics {
private long walLastRollOverTime;
/** */
- private long checkpointTotalSize;
+ private long checkpointTotalTime;
+
+ /** */
+ private long usedCheckpointBufferSize;
+
+ /** */
+ private long usedCheckpointBufferPages;
+
+ /** */
+ private long checkpointBufferSize;
/** */
private long dirtyPages;
@@ -111,7 +120,10 @@ public class DataStorageMetricsSnapshot implements DataStorageMetrics {
lastCpCowPages = metrics.getLastCheckpointCopiedOnWritePagesNumber();
walTotalSize = metrics.getWalTotalSize();
walLastRollOverTime = metrics.getWalLastRollOverTime();
- checkpointTotalSize = metrics.getCheckpointTotalTime();
+ checkpointTotalTime = metrics.getCheckpointTotalTime();
+ usedCheckpointBufferSize = metrics.getUsedCheckpointBufferSize();
+ usedCheckpointBufferPages = metrics.getUsedCheckpointBufferPages();
+ checkpointBufferSize = metrics.getCheckpointBufferSize();
dirtyPages = metrics.getDirtyPages();
readPages = metrics.getPagesRead();
writtenPages = metrics.getPagesWritten();
@@ -198,7 +210,7 @@ public class DataStorageMetricsSnapshot implements DataStorageMetrics {
/** {@inheritDoc} */
@Override public long getCheckpointTotalTime() {
- return checkpointTotalSize;
+ return checkpointTotalTime;
}
/** {@inheritDoc} */
@@ -237,6 +249,21 @@ public class DataStorageMetricsSnapshot implements DataStorageMetrics {
}
/** {@inheritDoc} */
+ @Override public long getUsedCheckpointBufferPages() {
+ return usedCheckpointBufferPages;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getUsedCheckpointBufferSize() {
+ return usedCheckpointBufferSize;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getCheckpointBufferSize(){
+ return checkpointBufferSize;
+ }
+
+ /** {@inheritDoc} */
@Override public String toString() {
return S.toString(DataStorageMetricsSnapshot.class, this);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
index 2eb6e6f..2e1fcb4 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
@@ -85,6 +85,7 @@ import org.apache.ignite.internal.IgniteInterruptedCheckedException;
import org.apache.ignite.internal.NodeStoppingException;
import org.apache.ignite.internal.managers.discovery.GridDiscoveryManager;
import org.apache.ignite.internal.mem.DirectMemoryProvider;
+import org.apache.ignite.internal.mem.DirectMemoryRegion;
import org.apache.ignite.internal.mem.file.MappedFileMemoryProvider;
import org.apache.ignite.internal.mem.unsafe.UnsafeMemoryProvider;
import org.apache.ignite.internal.pagemem.FullPageId;
@@ -1059,6 +1060,51 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan
}
/**
+ * @param memoryProvider0 Memory provider.
+ * @param memMetrics Memory metrics.
+ * @return Wrapped memory provider.
+ */
+ @Override protected DirectMemoryProvider wrapMetricsMemoryProvider(
+ final DirectMemoryProvider memoryProvider0,
+ final DataRegionMetricsImpl memMetrics
+ ) {
+ return new DirectMemoryProvider() {
+ private AtomicInteger checkPointBufferIdxCnt = new AtomicInteger();
+
+ private final DirectMemoryProvider memProvider = memoryProvider0;
+
+ @Override public void initialize(long[] chunkSizes) {
+ memProvider.initialize(chunkSizes);
+
+ checkPointBufferIdxCnt.set(chunkSizes.length);
+ }
+
+ @Override public void shutdown() {
+ memProvider.shutdown();
+ }
+
+ @Override public DirectMemoryRegion nextRegion() {
+ DirectMemoryRegion nextMemoryRegion = memProvider.nextRegion();
+
+ if (nextMemoryRegion == null)
+ return null;
+
+ int idx = checkPointBufferIdxCnt.decrementAndGet();
+
+ long chunkSize = nextMemoryRegion.size();
+
+ // Checkpoint chunk last in the long[] chunkSizes.
+ if (idx != 0)
+ memMetrics.updateOffHeapSize(chunkSize);
+ else
+ memMetrics.updateCheckpointBufferSize(chunkSize);
+
+ return nextMemoryRegion;
+ }
+ };
+ }
+
+ /**
* Resolves throttling policy according to the settings.
*/
@NotNull private PageMemoryImpl.ThrottlingPolicy resolveThrottlingPolicy() {
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cluster/PlatformClusterGroup.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cluster/PlatformClusterGroup.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cluster/PlatformClusterGroup.java
index f95e69b..d7a6b56 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cluster/PlatformClusterGroup.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cluster/PlatformClusterGroup.java
@@ -560,8 +560,8 @@ public class PlatformClusterGroup extends PlatformAbstractTarget {
writer.writeFloat(metrics.getPagesReplaceAge());
writer.writeLong(metrics.getPhysicalMemoryPages());
writer.writeLong(metrics.getPhysicalMemorySize());
- writer.writeLong(metrics.getCheckpointBufferPages());
- writer.writeLong(metrics.getCheckpointBufferSize());
+ writer.writeLong(metrics.getUsedCheckpointBufferPages());
+ writer.writeLong(metrics.getUsedCheckpointBufferSize());
writer.writeInt(metrics.getPageSize());
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorMemoryMetrics.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorMemoryMetrics.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorMemoryMetrics.java
index c19fd36..5b46220 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorMemoryMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorMemoryMetrics.java
@@ -96,8 +96,8 @@ public class VisorMemoryMetrics extends VisorDataTransferObject {
physicalMemoryPages = m.getPhysicalMemoryPages();
totalAllocatedSz = m.getTotalAllocatedSize();
physicalMemSz = m.getPhysicalMemorySize();
- cpBufPages = m.getCheckpointBufferPages();
- cpBufSz = m.getCheckpointBufferSize();
+ cpBufPages = m.getUsedCheckpointBufferPages();
+ cpBufSz = m.getUsedCheckpointBufferSize();
pageSize = m.getPageSize();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/core/src/main/java/org/apache/ignite/mxbean/DataStorageMetricsMXBean.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/DataStorageMetricsMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/DataStorageMetricsMXBean.java
index 2450874..2069099 100644
--- a/modules/core/src/main/java/org/apache/ignite/mxbean/DataStorageMetricsMXBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/DataStorageMetricsMXBean.java
@@ -57,6 +57,18 @@ public interface DataStorageMetricsMXBean extends DataStorageMetrics {
@Override long getCheckpointTotalTime();
/** {@inheritDoc} */
+ @MXBeanDescription("Used checkpoint buffer size in pages.")
+ @Override long getUsedCheckpointBufferPages();
+
+ /** {@inheritDoc} */
+ @MXBeanDescription("Used checkpoint buffer size in bytes.")
+ @Override long getUsedCheckpointBufferSize();
+
+ /** {@inheritDoc} */
+ @MXBeanDescription("Total size in bytes for checkpoint buffer.")
+ @Override long getCheckpointBufferSize();
+
+ /** {@inheritDoc} */
@MXBeanDescription("Duration of the last checkpoint in milliseconds.")
@Override long getLastCheckpointDuration();
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java
index 4b7d6ae..18a4781 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsDataRegionMetricsTest.java
@@ -17,10 +17,11 @@
package org.apache.ignite.internal.processors.cache.persistence.db;
-import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
+import java.util.Random;
+import java.util.HashMap;
import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.Collectors;
import org.apache.ignite.DataRegionMetrics;
@@ -32,14 +33,20 @@ import org.apache.ignite.configuration.DataRegionConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.processors.cache.CacheGroupContext;
import org.apache.ignite.internal.processors.cache.persistence.DataRegion;
+import org.apache.ignite.internal.processors.cache.persistence.DataRegionMetricsImpl;
+import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
+import org.apache.ignite.internal.util.future.GridFutureAdapter;
import org.apache.ignite.internal.util.typedef.PA;
+import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Assert;
import static org.apache.ignite.configuration.DataStorageConfiguration.DFLT_DATA_REG_DEFAULT_NAME;
@@ -54,6 +61,9 @@ public class IgnitePdsDataRegionMetricsTest extends GridCommonAbstractTest {
private static final long INIT_REGION_SIZE = 10 << 20;
/** */
+ private static final long MAX_REGION_SIZE = INIT_REGION_SIZE * 10;
+
+ /** */
private static final int ITERATIONS = 3;
/** */
@@ -72,11 +82,13 @@ public class IgnitePdsDataRegionMetricsTest extends GridCommonAbstractTest {
((TcpDiscoverySpi)cfg.getDiscoverySpi()).setIpFinder(IP_FINDER);
DataStorageConfiguration memCfg = new DataStorageConfiguration()
- .setDefaultDataRegionConfiguration(
- new DataRegionConfiguration()
- .setInitialSize(INIT_REGION_SIZE)
- .setPersistenceEnabled(true)
- .setMetricsEnabled(true));
+ .setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration()
+ .setInitialSize(INIT_REGION_SIZE)
+ .setMaxSize(MAX_REGION_SIZE)
+ .setPersistenceEnabled(true)
+ .setMetricsEnabled(true))
+ .setCheckpointFrequency(1000);
cfg.setDataStorageConfiguration(memCfg);
@@ -194,6 +206,79 @@ public class IgnitePdsDataRegionMetricsTest extends GridCommonAbstractTest {
checkMetricsConsistency(node2, grpIds);
}
+ /**
+ * Test for check checkpoint size metric.
+ *
+ * @throws Exception If failed.
+ */
+ public void testCheckpointBufferSize() throws Exception {
+ IgniteEx ig = startGrid(0);
+
+ ig.cluster().active(true);
+
+ DataRegionMetricsImpl regionMetrics = ig.cachex(DEFAULT_CACHE_NAME)
+ .context().group().dataRegion().memoryMetrics();
+
+ Assert.assertTrue(regionMetrics.getCheckpointBufferSize() != 0);
+ Assert.assertTrue(regionMetrics.getCheckpointBufferSize() <= MAX_REGION_SIZE);
+ }
+
+ /**
+ * Test for check used checkpoint size metric.
+ *
+ * @throws Exception If failed.
+ */
+ public void testUsedCheckpointBuffer() throws Exception {
+ IgniteEx ig = startGrid(0);
+
+ ig.cluster().active(true);
+
+ final DataRegionMetricsImpl regionMetrics = ig.cachex(DEFAULT_CACHE_NAME)
+ .context().group().dataRegion().memoryMetrics();
+
+ Assert.assertEquals(0, regionMetrics.getUsedCheckpointBufferPages());
+ Assert.assertEquals(0, regionMetrics.getUsedCheckpointBufferSize());
+
+ load(ig);
+
+ GridCacheDatabaseSharedManager psMgr = (GridCacheDatabaseSharedManager) ig.context().cache().context().database();
+
+ GridFutureAdapter<T2<Long, Long>> metricsResult = new GridFutureAdapter<>();
+
+ IgniteInternalFuture chpBeginFut = psMgr.wakeupForCheckpoint(null);
+
+ chpBeginFut.listen((f) -> {
+ load(ig);
+
+ metricsResult.onDone(new T2<>(
+ regionMetrics.getUsedCheckpointBufferPages(),
+ regionMetrics.getUsedCheckpointBufferSize()
+ ));
+ });
+
+ metricsResult.get();
+
+ Assert.assertTrue(metricsResult.get().get1() > 0);
+ Assert.assertTrue(metricsResult.get().get2() > 0);
+ }
+
+ /**
+ * @param ig Ignite.
+ */
+ private void load(Ignite ig){
+ IgniteCache<Integer, byte[]> cache = ig.cache(DEFAULT_CACHE_NAME);
+
+ Random rnd = new Random();
+
+ for (int i = 0; i < 1000; i++) {
+ byte[] payload = new byte[128];
+
+ rnd.nextBytes(payload);
+
+ cache.put(i, payload);
+ }
+ }
+
/** */
private static DataRegionMetrics getDfltRegionMetrics(Ignite node) {
for (DataRegionMetrics m : node.dataRegionMetrics())
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/DataRegionMetricsParityTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/DataRegionMetricsParityTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/DataRegionMetricsParityTest.cs
index 22b8986..463eaa4 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/DataRegionMetricsParityTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/DataRegionMetricsParityTest.cs
@@ -39,7 +39,9 @@ namespace Apache.Ignite.Core.Tests.ApiParity
"PagesWritten",
"PagesReplaced",
"OffHeapSize",
- "OffheapUsedSize"
+ "OffheapUsedSize",
+ "UsedCheckpointBufferPages",
+ "UsedCheckpointBufferSize"
};
/// <summary>
http://git-wip-us.apache.org/repos/asf/ignite/blob/86c18998/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/DataStorageMetricsParityTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/DataStorageMetricsParityTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/DataStorageMetricsParityTest.cs
index 300ab25..58c974e 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/DataStorageMetricsParityTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ApiParity/DataStorageMetricsParityTest.cs
@@ -38,7 +38,10 @@ namespace Apache.Ignite.Core.Tests.ApiParity
"PagesReplaced",
"OffHeapSize",
"OffheapUsedSize",
- "TotalAllocatedSize"
+ "TotalAllocatedSize",
+ "UsedCheckpointBufferPages",
+ "UsedCheckpointBufferSize",
+ "CheckpointBufferSize"
};
/// <summary>