You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2017/04/25 09:21:01 UTC
ignite git commit: IGNITE-5072 - Return memory metrics snapshot on
public API
Repository: ignite
Updated Branches:
refs/heads/ignite-5072 [created] 9125b904a
IGNITE-5072 - Return memory metrics snapshot on public API
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/9125b904
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/9125b904
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/9125b904
Branch: refs/heads/ignite-5072
Commit: 9125b904a0fa253231374b0a9002de40e25f7ce3
Parents: 1dc9e69
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Tue Apr 25 12:21:42 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Tue Apr 25 12:21:42 2017 +0300
----------------------------------------------------------------------
.../src/main/java/org/apache/ignite/Ignite.java | 1 -
.../java/org/apache/ignite/MemoryMetrics.java | 34 +-----
.../MemoryPolicyConfiguration.java | 37 +++++++
.../apache/ignite/internal/IgniteKernal.java | 9 +-
.../IgniteCacheDatabaseSharedManager.java | 37 +++++--
.../cache/database/MemoryMetricsImpl.java | 6 +-
.../cache/database/MemoryMetricsSnapshot.java | 103 +++++++++++++++++++
.../processors/cache/database/MemoryPolicy.java | 7 +-
.../ignite/mxbean/MemoryMetricsMXBean.java | 56 ++++++----
.../internal/ClusterNodeMetricsSelfTest.java | 6 +-
10 files changed, 224 insertions(+), 72 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/9125b904/modules/core/src/main/java/org/apache/ignite/Ignite.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/Ignite.java b/modules/core/src/main/java/org/apache/ignite/Ignite.java
index d8addcd..5ad930f 100644
--- a/modules/core/src/main/java/org/apache/ignite/Ignite.java
+++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java
@@ -615,7 +615,6 @@ public interface Ignite extends AutoCloseable {
*/
public void resetLostPartitions(Collection<String> cacheNames);
-
/**
* Returns collection {@link MemoryMetrics} objects providing information about memory usage in current Ignite instance.
*
http://git-wip-us.apache.org/repos/asf/ignite/blob/9125b904/modules/core/src/main/java/org/apache/ignite/MemoryMetrics.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/MemoryMetrics.java b/modules/core/src/main/java/org/apache/ignite/MemoryMetrics.java
index b4097d1..41b07d7 100644
--- a/modules/core/src/main/java/org/apache/ignite/MemoryMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/MemoryMetrics.java
@@ -27,9 +27,9 @@ public interface MemoryMetrics {
public String getName();
/**
- * @return Returns size (in MBytes) of MemoryPolicy observed by this MemoryMetrics MBean.
+ * @return Returns size (in bytes) of MemoryPolicy represented by this MemoryMetrics MBean.
*/
- public int getSize();
+ public long getSize();
/**
* @return Path of memory-mapped file used to swap PageMemory pages to disk.
@@ -37,16 +37,6 @@ public interface MemoryMetrics {
public String getSwapFilePath();
/**
- * Enables collecting memory metrics.
- */
- public void enableMetrics();
-
- /**
- * Disables collecting memory metrics.
- */
- public void disableMetrics();
-
- /**
* @return Total number of allocated pages.
*/
public long getTotalAllocatedPages();
@@ -72,24 +62,4 @@ public interface MemoryMetrics {
* @return Free space to overall size ratio across all pages in FreeList.
*/
public float getPagesFillFactor();
-
- /**
- * Sets interval of time (in seconds) to monitor allocation rate.
- *
- * E.g. after setting rateTimeInterval to 60 seconds subsequent calls to {@link #getAllocationRate()}
- * will return average allocation rate (pages per second) for the last minute.
- *
- * @param rateTimeInterval Time interval used to calculate allocation/eviction rate.
- */
- public void rateTimeInterval(int rateTimeInterval);
-
- /**
- * Sets number of subintervals the whole rateTimeInterval will be split into to calculate allocation rate,
- * 5 by default.
- * Setting it to bigger number allows more precise calculation and smaller drops of allocationRate metric
- * when next subinterval has to be recycled but introduces bigger calculation overhead.
- *
- * @param subInts Number of subintervals.
- */
- public void subIntervals(int subInts);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9125b904/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java
index d0adcf9..7d12b27 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java
@@ -62,6 +62,9 @@ public final class MemoryPolicyConfiguration implements Serializable {
/** */
private static final long serialVersionUID = 0L;
+ /** Default metrics enabled flag. */
+ public static final boolean DFLT_METRICS_ENABLED = false;
+
/** Memory policy name. */
private String name = DFLT_MEM_PLC_DEFAULT_NAME;
@@ -83,6 +86,9 @@ public final class MemoryPolicyConfiguration implements Serializable {
/** Minimum number of empty pages in reuse lists. */
private int emptyPagesPoolSize = 100;
+ /** */
+ private boolean metricsEnabled = DFLT_METRICS_ENABLED;
+
/**
* Gets memory policy name.
*
@@ -98,6 +104,7 @@ public final class MemoryPolicyConfiguration implements Serializable {
* If not specified, {@link MemoryConfiguration#DFLT_MEM_PLC_DEFAULT_NAME} value is used.
*
* @param name Memory policy name.
+ * @return {@code this} for chaining.
*/
public MemoryPolicyConfiguration setName(String name) {
this.name = name;
@@ -118,6 +125,9 @@ public final class MemoryPolicyConfiguration implements Serializable {
/**
* Sets maximum memory region size defined by this memory policy. The total size should not be less than 10 MB
* due to the internal data structures overhead.
+ *
+ * @param size Maximum memory region size in bytes.
+ * @return {@code this} for chaining.
*/
public MemoryPolicyConfiguration setSize(long size) {
this.size = size;
@@ -140,6 +150,7 @@ public final class MemoryPolicyConfiguration implements Serializable {
* Sets a path to the memory-mapped file.
*
* @param swapFilePath A Path to the memory mapped file.
+ * @return {@code this} for chaining.
*/
public MemoryPolicyConfiguration setSwapFilePath(String swapFilePath) {
this.swapFilePath = swapFilePath;
@@ -162,6 +173,7 @@ public final class MemoryPolicyConfiguration implements Serializable {
* Sets memory pages eviction mode.
*
* @param evictionMode Eviction mode.
+ * @return {@code this} for chaining.
*/
public MemoryPolicyConfiguration setPageEvictionMode(DataPageEvictionMode evictionMode) {
pageEvictionMode = evictionMode;
@@ -183,6 +195,7 @@ public final class MemoryPolicyConfiguration implements Serializable {
* Sets memory pages eviction threshold.
*
* @param evictionThreshold Eviction threshold.
+ * @return {@code this} for chaining.
*/
public MemoryPolicyConfiguration setEvictionThreshold(double evictionThreshold) {
this.evictionThreshold = evictionThreshold;
@@ -213,10 +226,34 @@ public final class MemoryPolicyConfiguration implements Serializable {
* Increase this parameter if {@link IgniteOutOfMemoryException} occurred with enabled page eviction.
*
* @param emptyPagesPoolSize Empty pages pool size.
+ * @return {@code this} for chaining.
*/
public MemoryPolicyConfiguration setEmptyPagesPoolSize(int emptyPagesPoolSize) {
this.emptyPagesPoolSize = emptyPagesPoolSize;
return this;
}
+
+ /**
+ * Gets whether memory metrics are enabled by default on node startup. Memory metrics can be enabled and disabled
+ * at runtime via memory metrics MX bean.
+ *
+ * @return Metrics enabled flag.
+ */
+ public boolean isMetricsEnabled() {
+ return metricsEnabled;
+ }
+
+ /**
+ * Sets memory metrics enabled flag. If this flag is {@code true}, metrics will be enabled on node startup.
+ * Memory metrics can be enabled and disabled at runtime via memory metrics MX bean.
+ *
+ * @param metricsEnabled Metrics enanabled flag.
+ * @return {@code this} for chaining.
+ */
+ public MemoryPolicyConfiguration setMetricsEnabled(boolean metricsEnabled) {
+ this.metricsEnabled = metricsEnabled;
+
+ return this;
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9125b904/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index 12a7af6..e828914 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -3393,7 +3393,14 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
/** {@inheritDoc} */
@Override public Collection<MemoryMetrics> memoryMetrics() {
- return ctx.cache().context().database().memoryMetrics();
+ guard();
+
+ try {
+ return ctx.cache().context().database().memoryMetrics();
+ }
+ finally {
+ unguard();
+ }
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/9125b904/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java
index ae594fa..2fa8d99 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java
@@ -18,7 +18,9 @@
package org.apache.ignite.internal.processors.cache.database;
import java.io.File;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -28,8 +30,8 @@ import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.MemoryMetrics;
import org.apache.ignite.cluster.ClusterNode;
-import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.DataPageEvictionMode;
+import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.MemoryConfiguration;
import org.apache.ignite.configuration.MemoryPolicyConfiguration;
import org.apache.ignite.internal.GridKernalContext;
@@ -38,8 +40,8 @@ import org.apache.ignite.internal.mem.DirectMemoryProvider;
import org.apache.ignite.internal.mem.file.MappedFileMemoryProvider;
import org.apache.ignite.internal.mem.unsafe.UnsafeMemoryProvider;
import org.apache.ignite.internal.pagemem.PageMemory;
-import org.apache.ignite.internal.pagemem.snapshot.StartFullSnapshotAckDiscoveryMessage;
import org.apache.ignite.internal.pagemem.impl.PageMemoryNoStoreImpl;
+import org.apache.ignite.internal.pagemem.snapshot.StartFullSnapshotAckDiscoveryMessage;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.GridCacheMapEntry;
import org.apache.ignite.internal.processors.cache.GridCacheSharedManagerAdapter;
@@ -52,8 +54,9 @@ import org.apache.ignite.internal.processors.cache.database.freelist.FreeList;
import org.apache.ignite.internal.processors.cache.database.freelist.FreeListImpl;
import org.apache.ignite.internal.processors.cache.database.tree.reuse.ReuseList;
import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.processors.cluster.IgniteChangeGlobalStateSupport;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.mxbean.MemoryMetricsMXBean;
import org.jetbrains.annotations.Nullable;
@@ -126,13 +129,13 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
IgniteConfiguration cfg = cctx.gridConfig();
for (MemoryMetrics memMetrics : memMetricsMap.values())
- registerMetricsMBean((MemoryMetricsImpl) memMetrics, cfg);
+ registerMetricsMBean((MemoryMetricsMXBean)memMetrics, cfg);
}
/**
* @param memMetrics Memory metrics.
*/
- private void registerMetricsMBean(MemoryMetricsImpl memMetrics, IgniteConfiguration cfg) {
+ private void registerMetricsMBean(MemoryMetricsMXBean memMetrics, IgniteConfiguration cfg) {
try {
U.registerMBean(
cfg.getMBeanServer(),
@@ -143,7 +146,7 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
MemoryMetricsMXBean.class);
}
catch (JMException e) {
- log.warning("Failed to register MBean for MemoryMetrics with name: '" + memMetrics.getName() + "'");
+ U.error(log, "Failed to register MBean for MemoryMetrics with name: '" + memMetrics.getName() + "'", e);
}
}
@@ -330,7 +333,7 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
* @param plcNames All MemoryPolicy names.
* @throws IgniteCheckedException In case of validation violation.
*/
- private static void checkDefaultPolicyConfiguration(String dfltPlcName, Set<String> plcNames) throws IgniteCheckedException {
+ private static void checkDefaultPolicyConfiguration(String dfltPlcName, Collection<String> plcNames) throws IgniteCheckedException {
if (!DFLT_MEM_PLC_DEFAULT_NAME.equals(dfltPlcName)) {
if (dfltPlcName.isEmpty())
throw new IgniteCheckedException("User-defined default MemoryPolicy name must be non-empty");
@@ -379,7 +382,7 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
* @param observedNames Names of MemoryPolicies observed before.
* @throws IgniteCheckedException If config is invalid.
*/
- private static void checkPolicyName(String plcName, Set<String> observedNames) throws IgniteCheckedException {
+ private static void checkPolicyName(String plcName, Collection<String> observedNames) throws IgniteCheckedException {
if (plcName == null || plcName.isEmpty())
throw new IgniteCheckedException("User-defined MemoryPolicyConfiguration must have non-null and non-empty name.");
@@ -420,7 +423,17 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
* @return MemoryMetrics for all MemoryPolicies configured in Ignite instance.
*/
public Collection<MemoryMetrics> memoryMetrics() {
- return memMetricsMap != null ? memMetricsMap.values() : null;
+ if (!F.isEmpty(memMetricsMap)) {
+ // Intentionally return a collection copy to make it explicitly serializable.
+ Collection<MemoryMetrics> res = new ArrayList<>(memMetricsMap.size());
+
+ for (MemoryMetrics metrics : memMetricsMap.values())
+ res.add(new MemoryMetricsSnapshot(metrics));
+
+ return res;
+ }
+ else
+ return Collections.emptyList();
}
/**
@@ -619,7 +632,11 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
* @param memMetrics {@link MemoryMetrics} object to collect memory usage metrics.
* @return Memory policy instance.
*/
- private MemoryPolicy initMemory(MemoryConfiguration dbCfg, MemoryPolicyConfiguration plc, MemoryMetricsImpl memMetrics) {
+ private MemoryPolicy initMemory(
+ MemoryConfiguration dbCfg,
+ MemoryPolicyConfiguration plc,
+ MemoryMetricsImpl memMetrics
+ ) {
long[] sizes = calculateFragmentSizes(
dbCfg.getConcurrencyLevel(),
plc.getSize());
http://git-wip-us.apache.org/repos/asf/ignite/blob/9125b904/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsImpl.java
index ed4cae0..47d018a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsImpl.java
@@ -68,6 +68,8 @@ public class MemoryMetricsImpl implements MemoryMetricsMXBean {
public MemoryMetricsImpl(MemoryPolicyConfiguration memPlcCfg) {
this.memPlcCfg = memPlcCfg;
+ metricsEnabled = memPlcCfg.isMetricsEnabled();
+
for (int i = 0; i < subInts; i++)
allocRateCounters[i] = new LongAdder8();
}
@@ -78,8 +80,8 @@ public class MemoryMetricsImpl implements MemoryMetricsMXBean {
}
/** {@inheritDoc} */
- @Override public int getSize() {
- return (int) (memPlcCfg.getSize() / (1024 * 1024));
+ @Override public long getSize() {
+ return memPlcCfg.getSize();
}
/** {@inheritDoc} */
http://git-wip-us.apache.org/repos/asf/ignite/blob/9125b904/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsSnapshot.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsSnapshot.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsSnapshot.java
new file mode 100644
index 0000000..9205ae6
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsSnapshot.java
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.database;
+
+import org.apache.ignite.MemoryMetrics;
+
+/**
+ *
+ */
+public class MemoryMetricsSnapshot implements MemoryMetrics {
+ /** */
+ private String name;
+
+ /** */
+ private long size;
+
+ /** */
+ private String swapFilePath;
+
+ /** */
+ private long totalAllocatedPages;
+
+ /** */
+ private float allocationRate;
+
+ /** */
+ private float evictionRate;
+
+ /** */
+ private float largeEntriesPagesPercentage;
+
+ /** */
+ private float pagesFillFactor;
+
+ /**
+ * @param metrics Metrics instance to take a copy.
+ */
+ public MemoryMetricsSnapshot(MemoryMetrics metrics) {
+ name = metrics.getName();
+ size = metrics.getSize();
+ swapFilePath = metrics.getSwapFilePath();
+ totalAllocatedPages = metrics.getTotalAllocatedPages();
+ allocationRate = metrics.getAllocationRate();
+ evictionRate = metrics.getEvictionRate();
+ largeEntriesPagesPercentage = metrics.getLargeEntriesPagesPercentage();
+ pagesFillFactor = metrics.getPagesFillFactor();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String getName() {
+ return name;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getSize() {
+ return size;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String getSwapFilePath() {
+ return swapFilePath;
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getTotalAllocatedPages() {
+ return totalAllocatedPages;
+ }
+
+ /** {@inheritDoc} */
+ @Override public float getAllocationRate() {
+ return allocationRate;
+ }
+
+ /** {@inheritDoc} */
+ @Override public float getEvictionRate() {
+ return evictionRate;
+ }
+
+ /** {@inheritDoc} */
+ @Override public float getLargeEntriesPagesPercentage() {
+ return largeEntriesPagesPercentage;
+ }
+
+ /** {@inheritDoc} */
+ @Override public float getPagesFillFactor() {
+ return pagesFillFactor;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9125b904/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryPolicy.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryPolicy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryPolicy.java
index 90e5ac1..cb35d33 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryPolicy.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryPolicy.java
@@ -16,7 +16,6 @@
*/
package org.apache.ignite.internal.processors.cache.database;
-import org.apache.ignite.MemoryMetrics;
import org.apache.ignite.configuration.MemoryPolicyConfiguration;
import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.database.evict.PageEvictionTracker;
@@ -29,7 +28,7 @@ public class MemoryPolicy {
private final PageMemory pageMem;
/** */
- private final MemoryMetrics memMetrics;
+ private final MemoryMetricsImpl memMetrics;
/** */
private final MemoryPolicyConfiguration cfg;
@@ -46,7 +45,7 @@ public class MemoryPolicy {
public MemoryPolicy(
PageMemory pageMem,
MemoryPolicyConfiguration cfg,
- MemoryMetrics memMetrics,
+ MemoryMetricsImpl memMetrics,
PageEvictionTracker evictionTracker) {
this.pageMem = pageMem;
this.memMetrics = memMetrics;
@@ -71,7 +70,7 @@ public class MemoryPolicy {
/**
* @return Memory Metrics.
*/
- public MemoryMetrics memoryMetrics() {
+ public MemoryMetricsImpl memoryMetrics() {
return memMetrics;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9125b904/modules/core/src/main/java/org/apache/ignite/mxbean/MemoryMetricsMXBean.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/MemoryMetricsMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/MemoryMetricsMXBean.java
index db75f57..2f3ca7c 100644
--- a/modules/core/src/main/java/org/apache/ignite/mxbean/MemoryMetricsMXBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/MemoryMetricsMXBean.java
@@ -29,21 +29,13 @@ public interface MemoryMetricsMXBean extends MemoryMetrics {
/** {@inheritDoc} */
@MXBeanDescription("Size of PageMemory in MBytes.")
- @Override public int getSize();
+ @Override public long getSize();
/** {@inheritDoc} */
@MXBeanDescription("File path of memory-mapped swap file.")
@Override public String getSwapFilePath();
/** {@inheritDoc} */
- @MXBeanDescription("Enables metrics gathering.")
- @Override public void enableMetrics();
-
- /** {@inheritDoc} */
- @MXBeanDescription("Disables metrics gathering.")
- @Override public void disableMetrics();
-
- /** {@inheritDoc} */
@MXBeanDescription("Total number of allocated pages.")
@Override public long getTotalAllocatedPages();
@@ -63,27 +55,53 @@ public interface MemoryMetricsMXBean extends MemoryMetrics {
@MXBeanDescription("Pages fill factor: size of all entries in cache over size of all allocated pages.")
@Override public float getPagesFillFactor();
- /** {@inheritDoc} */
+ /**
+ * Enables collecting memory metrics.
+ */
+ @MXBeanDescription("Enables metrics gathering.")
+ public void enableMetrics();
+
+ /**
+ * Disables collecting memory metrics.
+ */
+ @MXBeanDescription("Disables metrics gathering.")
+ public void disableMetrics();
+
+ /**
+ * Sets interval of time (in seconds) to monitor allocation rate.
+ *
+ * E.g. after setting rateTimeInterval to 60 seconds subsequent calls to {@link #getAllocationRate()}
+ * will return average allocation rate (pages per second) for the last minute.
+ *
+ * @param rateTimeInterval Time interval used to calculate allocation/eviction rate.
+ */
@MXBeanDescription(
- "Sets time interval average allocation rate (pages per second) is calculated over."
+ "Sets time interval average allocation rate (pages per second) is calculated over."
)
@MXBeanParametersNames(
- "rateTimeInterval"
+ "rateTimeInterval"
)
@MXBeanParametersDescriptions(
- "Time interval (in seconds) to set."
+ "Time interval (in seconds) to set."
)
- @Override public void rateTimeInterval(int rateTimeInterval);
+ public void rateTimeInterval(int rateTimeInterval);
- /** {@inheritDoc} */
+ /**
+ * Sets number of subintervals the whole rateTimeInterval will be split into to calculate allocation rate,
+ * 5 by default.
+ * Setting it to bigger number allows more precise calculation and smaller drops of allocationRate metric
+ * when next subinterval has to be recycled but introduces bigger calculation overhead.
+ *
+ * @param subInts Number of subintervals.
+ */
@MXBeanDescription(
- "Sets number of subintervals to calculate allocationRate metrics."
+ "Sets number of subintervals to calculate allocationRate metrics."
)
@MXBeanParametersNames(
- "subInts"
+ "subInts"
)
@MXBeanParametersDescriptions(
- "Number of subintervals to set."
+ "Number of subintervals to set."
)
- @Override public void subIntervals(int subInts);
+ public void subIntervals(int subInts);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/9125b904/modules/core/src/test/java/org/apache/ignite/internal/ClusterNodeMetricsSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/ClusterNodeMetricsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/ClusterNodeMetricsSelfTest.java
index dafc41f..b447e31 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/ClusterNodeMetricsSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/ClusterNodeMetricsSelfTest.java
@@ -24,12 +24,12 @@ import org.apache.ignite.GridTestTask;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.MemoryMetrics;
import org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy;
import org.apache.ignite.cluster.ClusterMetrics;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.events.Event;
+import org.apache.ignite.internal.processors.cache.database.MemoryMetricsImpl;
import org.apache.ignite.internal.processors.task.GridInternal;
import org.apache.ignite.internal.util.lang.GridAbsPredicate;
import org.apache.ignite.lang.IgnitePredicate;
@@ -111,7 +111,7 @@ public class ClusterNodeMetricsSelfTest extends GridCommonAbstractTest {
final IgniteCache cache = ignite.getOrCreateCache(CACHE_NAME);
- MemoryMetrics memMetrics = getDefaultMemoryPolicyMetrics(ignite);
+ MemoryMetricsImpl memMetrics = getDefaultMemoryPolicyMetrics(ignite);
memMetrics.enableMetrics();
@@ -128,7 +128,7 @@ public class ClusterNodeMetricsSelfTest extends GridCommonAbstractTest {
/**
* @param ignite Ignite instance.
*/
- private MemoryMetrics getDefaultMemoryPolicyMetrics(IgniteEx ignite) throws IgniteCheckedException {
+ private MemoryMetricsImpl getDefaultMemoryPolicyMetrics(IgniteEx ignite) throws IgniteCheckedException {
return ignite.context().cache().context().database().memoryPolicy(null).memoryMetrics();
}