You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ni...@apache.org on 2020/07/16 14:09:52 UTC
[ignite] branch master updated: IGNITE-13173 Add offHeapEntries and
similar values to cache metrics (#7995)
This is an automated email from the ASF dual-hosted git repository.
nizhikov pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 1e38bb7 IGNITE-13173 Add offHeapEntries and similar values to cache metrics (#7995)
1e38bb7 is described below
commit 1e38bb71ef00d1e49a71822ba5a7c9b40bc0ed9b
Author: Nikita Amelchev <ns...@gmail.com>
AuthorDate: Thu Jul 16 17:09:27 2020 +0300
IGNITE-13173 Add offHeapEntries and similar values to cache metrics (#7995)
---
.../processors/cache/CacheMetricsImpl.java | 51 +++++++++++++++++-----
.../cache/CacheMetricsEntitiesCountTest.java | 15 +++++++
2 files changed, 56 insertions(+), 10 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
index 663b296..c7ba159 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
@@ -34,6 +34,7 @@ import org.apache.ignite.internal.processors.metric.MetricRegistry;
import org.apache.ignite.internal.processors.metric.impl.AtomicLongMetric;
import org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl;
import org.apache.ignite.internal.processors.metric.impl.HitRateMetric;
+import org.apache.ignite.internal.processors.metric.impl.LongGauge;
import org.apache.ignite.internal.processors.metric.impl.MetricUtils;
import org.apache.ignite.internal.util.collection.ImmutableIntSet;
import org.apache.ignite.internal.util.collection.IntSet;
@@ -212,6 +213,21 @@ public class CacheMetricsImpl implements CacheMetrics {
/** Tx collisions info. */
private volatile Supplier<List<Map.Entry</* Colliding keys. */ GridCacheMapEntry, /* Collisions queue size. */ Integer>>> txKeyCollisionInfo;
+ /** Offheap entries count. */
+ private final LongGauge offHeapEntriesCnt;
+
+ /** Offheap primary entries count. */
+ private final LongGauge offHeapPrimaryEntriesCnt;
+
+ /** Offheap backup entries count. */
+ private final LongGauge offHeapBackupEntriesCnt;
+
+ /** Onheap entries count. */
+ private final LongGauge heapEntriesCnt;
+
+ /** Cache size. */
+ private final LongGauge cacheSize;
+
/**
* Creates cache metrics.
*
@@ -368,6 +384,21 @@ public class CacheMetricsImpl implements CacheMetrics {
mreg.register("TxKeyCollisions", this::getTxKeyCollisions, String.class, "Tx key collisions. " +
"Show keys and collisions queue size. Due transactional payload some keys become hot. Metric shows " +
"corresponding keys.");
+
+ offHeapEntriesCnt = mreg.register("OffHeapEntriesCount",
+ () -> getEntriesStat().offHeapEntriesCount(), "Offheap entries count.");
+
+ offHeapPrimaryEntriesCnt = mreg.register("OffHeapPrimaryEntriesCount",
+ () -> getEntriesStat().offHeapPrimaryEntriesCount(), "Offheap primary entries count.");
+
+ offHeapBackupEntriesCnt = mreg.register("OffHeapBackupEntriesCount",
+ () -> getEntriesStat().offHeapBackupEntriesCount(), "Offheap backup entries count.");
+
+ heapEntriesCnt = mreg.register("HeapEntriesCount",
+ () -> getEntriesStat().heapEntriesCount(), "Onheap entries count.");
+
+ cacheSize = mreg.register("CacheSize",
+ () -> getEntriesStat().cacheSize(), "Local cache size.");
}
/**
@@ -438,22 +469,22 @@ public class CacheMetricsImpl implements CacheMetrics {
/** {@inheritDoc} */
@Override public long getOffHeapEntriesCount() {
- return getEntriesStat().offHeapEntriesCount();
+ return offHeapEntriesCnt.value();
}
/** {@inheritDoc} */
@Override public long getHeapEntriesCount() {
- return getEntriesStat().heapEntriesCount();
+ return heapEntriesCnt.value();
}
/** {@inheritDoc} */
@Override public long getOffHeapPrimaryEntriesCount() {
- return getEntriesStat().offHeapPrimaryEntriesCount();
+ return offHeapPrimaryEntriesCnt.value();
}
/** {@inheritDoc} */
@Override public long getOffHeapBackupEntriesCount() {
- return getEntriesStat().offHeapBackupEntriesCount();
+ return offHeapBackupEntriesCnt.value();
}
/** {@inheritDoc} */
@@ -470,7 +501,7 @@ public class CacheMetricsImpl implements CacheMetrics {
/** {@inheritDoc} */
@Override public long getCacheSize() {
- return getEntriesStat().cacheSize();
+ return cacheSize.value();
}
/** {@inheritDoc} */
@@ -1221,11 +1252,6 @@ public class CacheMetricsImpl implements CacheMetrics {
* Calculates entries count/partitions count metrics using one iteration over local partitions for all metrics
*/
public EntriesStatMetrics getEntriesStat() {
- AffinityTopologyVersion topVer = cctx.affinity().affinityTopologyVersion();
-
- if (AffinityTopologyVersion.NONE.equals(topVer))
- return unknownEntriesStat();
-
int owningPartCnt = 0;
int movingPartCnt = 0;
long offHeapEntriesCnt = 0L;
@@ -1237,6 +1263,11 @@ public class CacheMetricsImpl implements CacheMetrics {
boolean isEmpty;
try {
+ AffinityTopologyVersion topVer = cctx.affinity().affinityTopologyVersion();
+
+ if (AffinityTopologyVersion.NONE.equals(topVer))
+ return unknownEntriesStat();
+
final GridCacheAdapter<?, ?> cache = cctx.cache();
if (cache != null) {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsEntitiesCountTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsEntitiesCountTest.java
index 5fd8d1e..4b38e9e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsEntitiesCountTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheMetricsEntitiesCountTest.java
@@ -29,11 +29,15 @@ import org.apache.ignite.cache.CacheWriteSynchronizationMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.NearCacheConfiguration;
+import org.apache.ignite.internal.processors.metric.MetricRegistry;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.spi.metric.LongMetric;
import org.apache.ignite.testframework.MvccFeatureChecker;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
+import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.cacheMetricsRegistryName;
+
/**
* This test checks that entries count metrics, calculated by method
* {@link org.apache.ignite.internal.processors.cache.CacheMetricsImpl#getEntriesStat()} (which uses one iteration
@@ -237,6 +241,17 @@ public class CacheMetricsEntitiesCountTest extends GridCommonAbstractTest {
assertEquals(cacheInfo + " keySize", size, metrics.getKeySize());
assertEquals(cacheInfo + " cacheSize", cacheSize, metrics.getCacheSize());
assertEquals(cacheInfo + " isEmpty", isEmpty, metrics.isEmpty());
+
+ MetricRegistry mreg = cctx.kernalContext().metric().registry(cacheMetricsRegistryName(cctx.name(),
+ cache.isNear()));
+
+ assertNotNull(mreg);
+
+ assertEquals(offHeapEntriesCount, ((LongMetric)mreg.findMetric("OffHeapEntriesCount")).value());
+ assertEquals(offHeapBackupEntriesCount, ((LongMetric)mreg.findMetric("OffHeapBackupEntriesCount")).value());
+ assertEquals(offHeapPrimaryEntriesCount, ((LongMetric)mreg.findMetric("OffHeapPrimaryEntriesCount")).value());
+ assertEquals(heapEntriesCount, ((LongMetric)mreg.findMetric("HeapEntriesCount")).value());
+ assertEquals(cacheSize, ((LongMetric)mreg.findMetric("CacheSize")).value());
}
/**