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/07 12:41:58 UTC
[8/9] ignite git commit: IGNITE-4536 - Update metrics for memory
policies.
IGNITE-4536 - Update metrics for memory policies.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/3f90a9c0
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/3f90a9c0
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/3f90a9c0
Branch: refs/heads/ignite-3477-master
Commit: 3f90a9c0795c2ba61942f2f379e379e8bcd36d08
Parents: 6b62a20
Author: Sergey Chugunov <se...@gmail.com>
Authored: Fri Apr 7 15:39:22 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Fri Apr 7 15:39:22 2017 +0300
----------------------------------------------------------------------
.../src/main/java/org/apache/ignite/Ignite.java | 8 +
.../java/org/apache/ignite/MemoryMetrics.java | 95 ++++++
.../org/apache/ignite/cache/CacheMetrics.java | 70 -----
.../configuration/MemoryConfiguration.java | 4 +-
.../apache/ignite/internal/IgniteKernal.java | 7 +-
.../pagemem/impl/PageMemoryNoStoreImpl.java | 11 +-
.../cache/CacheClusterMetricsMXBeanImpl.java | 50 ---
.../cache/CacheLocalMetricsMXBeanImpl.java | 50 ---
.../processors/cache/CacheMetricsImpl.java | 125 +-------
.../processors/cache/CacheMetricsSnapshot.java | 120 -------
.../processors/cache/GridCacheProcessor.java | 3 +
.../IgniteCacheDatabaseSharedManager.java | 98 +++++-
.../cache/database/IgniteMemoryPoolMetrics.java | 33 --
.../cache/database/MemoryMetricsImpl.java | 314 +++++++++++++++++++
.../processors/cache/database/MemoryPolicy.java | 18 +-
.../cache/database/freelist/FreeListImpl.java | 35 +++
.../platform/cache/PlatformCache.java | 10 -
.../visor/node/VisorMemoryConfiguration.java | 1 -
.../ignite/mxbean/CacheMetricsMXBean.java | 40 ---
.../ignite/mxbean/MemoryMetricsMXBean.java | 89 ++++++
.../pagemem/impl/PageMemoryNoLoadSelfTest.java | 3 +-
.../cache/CacheConfigurationLeakTest.java | 3 +-
...LocalCacheOffHeapAndSwapMetricsSelfTest.java | 182 +----------
.../processors/database/BPlusTreeSelfTest.java | 3 +-
.../database/FreeListImplSelfTest.java | 5 +-
.../database/MemoryMetricsSelfTest.java | 313 ++++++++++++++++++
.../database/MetadataStorageSelfTest.java | 3 +-
.../processors/igfs/IgfsIgniteMock.java | 8 +
.../platform/PlatformCacheWriteMetricsTask.java | 126 +++-----
.../ignite/testframework/junits/IgniteMock.java | 6 +
.../junits/multijvm/IgniteProcessProxy.java | 6 +
.../ignite/testsuites/IgniteBasicTestSuite.java | 2 +
.../h2/database/InlineIndexHelperTest.java | 4 +
.../cpp/core-test/config/cache-test.xml | 2 +-
.../platforms/cpp/core-test/src/cache_test.cpp | 2 +-
.../org/apache/ignite/IgniteSpringBean.java | 7 +
.../ant/beautifier/GridJavadocAntTask.java | 18 +-
37 files changed, 1092 insertions(+), 782 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/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 c97186e..aba224f 100644
--- a/modules/core/src/main/java/org/apache/ignite/Ignite.java
+++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java
@@ -615,4 +615,12 @@ public interface Ignite extends AutoCloseable {
* Clears partition's lost state and moves caches to a normal mode.
*/
public void resetLostPartitions(Collection<String> cacheNames);
+
+
+ /**
+ * Returns collection {@link MemoryMetrics} objects providing information about memory usage in current Ignite instance.
+ *
+ * @return Collection of {@link MemoryMetrics}
+ */
+ public Collection<MemoryMetrics> memoryMetrics();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/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
new file mode 100644
index 0000000..b4097d1
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/MemoryMetrics.java
@@ -0,0 +1,95 @@
+/*
+ * 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;
+
+/**
+ * Interface provides methods to access metrics of memory usage on local instance of Ignite.
+ */
+public interface MemoryMetrics {
+ /**
+ * @return Memory policy name.
+ */
+ public String getName();
+
+ /**
+ * @return Returns size (in MBytes) of MemoryPolicy observed by this MemoryMetrics MBean.
+ */
+ public int getSize();
+
+ /**
+ * @return Path of memory-mapped file used to swap PageMemory pages to disk.
+ */
+ 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();
+
+ /**
+ * @return Number of allocated pages per second within PageMemory.
+ */
+ public float getAllocationRate();
+
+ /**
+ * @return Number of evicted pages per second within PageMemory.
+ */
+ public float getEvictionRate();
+
+ /**
+ * Large entities bigger than page are split into fragments so each fragment can fit into a page.
+ *
+ * @return Percentage of pages fully occupied by large entities.
+ */
+ public float getLargeEntriesPagesPercentage();
+
+ /**
+ * @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/3f90a9c0/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java b/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java
index 669c427..c0eb98e 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/CacheMetrics.java
@@ -146,13 +146,6 @@ public interface CacheMetrics {
public String name();
/**
- * Gets number of entries that was swapped to disk.
- *
- * @return Number of entries that was swapped to disk.
- */
- public long getOverflowSize();
-
- /**
* The total number of get requests to the off-heap memory.
*
* @return The number of gets.
@@ -244,69 +237,6 @@ public interface CacheMetrics {
public long getOffHeapMaxSize();
/**
- * The total number of get requests to the swap.
- *
- * @return The number of gets.
- */
- public long getSwapGets();
-
- /**
- * The total number of put requests to the swap.
- *
- * @return The number of puts.
- */
- public long getSwapPuts();
-
- /**
- * The total number of removals from the swap.
- *
- * @return The number of removals.
- */
- public long getSwapRemovals();
-
- /**
- * The number of get requests that were satisfied by the swap.
- *
- * @return The swap hits number.
- */
- public long getSwapHits();
-
- /**
- * A miss is a get request that is not satisfied by swap.
- *
- * @return The swap misses number.
- */
- public long getSwapMisses();
-
- /**
- * Gets number of entries stored in swap.
- *
- * @return Number of entries stored in swap.
- */
- public long getSwapEntriesCount();
-
- /**
- * Gets size of swap.
- *
- * @return Size of swap.
- */
- public long getSwapSize();
-
- /**
- * Gets the percentage of hits on swap.
- *
- * @return The percentage of hits on swap.
- */
- public float getSwapHitPercentage();
-
- /**
- * Gets the percentage of misses on swap.
- *
- * @return The percentage of misses on swap.
- */
- public float getSwapMissPercentage();
-
- /**
* Gets number of non-{@code null} values in the cache.
*
* @return Number of non-{@code null} values in the cache.
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/main/java/org/apache/ignite/configuration/MemoryConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/MemoryConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/MemoryConfiguration.java
index 0f16ada..3ef876b 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/MemoryConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/MemoryConfiguration.java
@@ -112,7 +112,7 @@ public class MemoryConfiguration implements Serializable {
}
/**
- * @return Array of MemoryPolicyConfiguration objects.
+ * @return array of MemoryPolicyConfiguration objects.
*/
public MemoryPolicyConfiguration[] getMemoryPolicies() {
return memPlcs;
@@ -151,7 +151,7 @@ public class MemoryConfiguration implements Serializable {
*/
public MemoryConfiguration setConcurrencyLevel(int concLvl) {
this.concLvl = concLvl;
-
+
return this;
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/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 3ab7f8e..9c661df 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
@@ -73,6 +73,7 @@ import org.apache.ignite.IgniteSet;
import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.IgniteTransactions;
import org.apache.ignite.Ignition;
+import org.apache.ignite.MemoryMetrics;
import org.apache.ignite.cache.affinity.Affinity;
import org.apache.ignite.cluster.ClusterGroup;
import org.apache.ignite.cluster.ClusterMetrics;
@@ -99,7 +100,6 @@ import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager;
import org.apache.ignite.internal.managers.failover.GridFailoverManager;
import org.apache.ignite.internal.managers.indexing.GridIndexingManager;
import org.apache.ignite.internal.managers.loadbalancer.GridLoadBalancerManager;
-import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.GridProcessor;
import org.apache.ignite.internal.processors.affinity.GridAffinityProcessor;
import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
@@ -3371,6 +3371,11 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
}
/** {@inheritDoc} */
+ @Override public Collection<MemoryMetrics> memoryMetrics() {
+ return ctx.cache().context().database().memoryMetrics();
+ }
+
+ /** {@inheritDoc} */
@Nullable @Override public IgniteAtomicSequence atomicSequence(String name, long initVal, boolean create) {
guard();
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
index 0b65ce6..f24113c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoStoreImpl.java
@@ -31,6 +31,7 @@ import org.apache.ignite.internal.mem.OutOfMemoryException;
import org.apache.ignite.internal.pagemem.PageIdUtils;
import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
+import org.apache.ignite.internal.processors.cache.database.MemoryMetricsImpl;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.OffheapReadWriteLock;
@@ -104,6 +105,9 @@ public class PageMemoryNoStoreImpl implements PageMemory {
/** Direct memory allocator. */
private final DirectMemoryProvider directMemoryProvider;
+ /** Object to collect memory usage metrics. */
+ private final MemoryMetricsImpl memMetrics;
+
/** Segments array. */
private Segment[] segments;
@@ -133,6 +137,7 @@ public class PageMemoryNoStoreImpl implements PageMemory {
* @param directMemoryProvider Memory allocator to use.
* @param sharedCtx Cache shared context.
* @param pageSize Page size.
+ * @param memMetrics Memory Metrics.
* @param trackAcquiredPages If {@code true} tracks number of allocated pages (for tests purpose only).
*/
public PageMemoryNoStoreImpl(
@@ -140,6 +145,7 @@ public class PageMemoryNoStoreImpl implements PageMemory {
DirectMemoryProvider directMemoryProvider,
GridCacheSharedContext<?, ?> sharedCtx,
int pageSize,
+ MemoryMetricsImpl memMetrics,
boolean trackAcquiredPages
) {
assert log != null || sharedCtx != null;
@@ -148,6 +154,7 @@ public class PageMemoryNoStoreImpl implements PageMemory {
this.log = sharedCtx != null ? sharedCtx.logger(PageMemoryNoStoreImpl.class) : log;
this.directMemoryProvider = directMemoryProvider;
this.trackAcquiredPages = trackAcquiredPages;
+ this.memMetrics = memMetrics;
sysPageSize = pageSize + PAGE_OVERHEAD;
@@ -210,6 +217,8 @@ public class PageMemoryNoStoreImpl implements PageMemory {
/** {@inheritDoc} */
@Override public long allocatePage(int cacheId, int partId, byte flags) {
+ memMetrics.incrementTotalAllocatedPages();
+
long relPtr = INVALID_REL_PTR;
long absPtr = 0;
@@ -607,9 +616,9 @@ public class PageMemoryNoStoreImpl implements PageMemory {
}
/**
+ * @param tag Tag to initialize RW lock.
* @return Relative pointer of the allocated page.
* @throws GridOffHeapOutOfMemoryException If failed to allocate.
- * @param tag Tag to initialize RW lock.
*/
private long allocateFreePage(int tag) throws GridOffHeapOutOfMemoryException {
long limit = region.address() + region.size();
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
index 519d07b..c633fde 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheClusterMetricsMXBeanImpl.java
@@ -44,11 +44,6 @@ class CacheClusterMetricsMXBeanImpl implements CacheMetricsMXBean {
}
/** {@inheritDoc} */
- @Override public long getOverflowSize() {
- return cache.clusterMetrics().getOverflowSize();
- }
-
- /** {@inheritDoc} */
@Override public long getOffHeapGets() {
return cache.clusterMetrics().getOffHeapGets();
}
@@ -114,51 +109,6 @@ class CacheClusterMetricsMXBeanImpl implements CacheMetricsMXBean {
}
/** {@inheritDoc} */
- @Override public long getSwapGets() {
- return cache.clusterMetrics().getSwapGets();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapPuts() {
- return cache.clusterMetrics().getSwapPuts();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapRemovals() {
- return cache.clusterMetrics().getSwapRemovals();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapHits() {
- return cache.clusterMetrics().getSwapHits();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapMisses() {
- return cache.clusterMetrics().getSwapMisses();
- }
-
- /** {@inheritDoc} */
- @Override public float getSwapHitPercentage() {
- return cache.clusterMetrics().getSwapHitPercentage();
- }
-
- /** {@inheritDoc} */
- @Override public float getSwapMissPercentage() {
- return cache.clusterMetrics().getSwapMissPercentage();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapEntriesCount() {
- return cache.clusterMetrics().getSwapEntriesCount();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapSize() {
- return cache.clusterMetrics().getSwapSize();
- }
-
- /** {@inheritDoc} */
@Override public int getSize() {
return cache.clusterMetrics().getSize();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
index 5284ca0..cdab58a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheLocalMetricsMXBeanImpl.java
@@ -44,11 +44,6 @@ class CacheLocalMetricsMXBeanImpl implements CacheMetricsMXBean {
}
/** {@inheritDoc} */
- @Override public long getOverflowSize() {
- return cache.metrics0().getOverflowSize();
- }
-
- /** {@inheritDoc} */
@Override public long getOffHeapGets() {
return cache.metrics0().getOffHeapGets();
}
@@ -114,51 +109,6 @@ class CacheLocalMetricsMXBeanImpl implements CacheMetricsMXBean {
}
/** {@inheritDoc} */
- @Override public long getSwapGets() {
- return cache.metrics0().getSwapGets();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapPuts() {
- return cache.metrics0().getSwapPuts();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapRemovals() {
- return cache.metrics0().getSwapRemovals();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapHits() {
- return cache.metrics0().getSwapHits();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapMisses() {
- return cache.metrics0().getSwapMisses();
- }
-
- /** {@inheritDoc} */
- @Override public float getSwapHitPercentage() {
- return cache.metrics0().getSwapHitPercentage();
- }
-
- /** {@inheritDoc} */
- @Override public float getSwapMissPercentage() {
- return cache.metrics0().getSwapMissPercentage();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapEntriesCount() {
- return cache.metrics0().getSwapEntriesCount();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapSize() {
- return cache.metrics0().getSwapSize();
- }
-
- /** {@inheritDoc} */
@Override public int getSize() {
return cache.metrics0().getSize();
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
----------------------------------------------------------------------
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 1613af7..eb63a60 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
@@ -149,11 +149,6 @@ public class CacheMetricsImpl implements CacheMetrics {
}
/** {@inheritDoc} */
- @Override public long getOverflowSize() {
- return 0;
- }
-
- /** {@inheritDoc} */
@Override public long getOffHeapGets() {
return offHeapGets.get();
}
@@ -245,63 +240,6 @@ public class CacheMetricsImpl implements CacheMetrics {
}
/** {@inheritDoc} */
- @Override public long getSwapGets() {
- return swapGets.get();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapPuts() {
- return swapPuts.get();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapRemovals() {
- return swapRemoves.get();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapHits() {
- return swapHits.get();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapMisses() {
- return swapMisses.get();
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapEntriesCount() {
- return 0;
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapSize() {
- return 0;
- }
-
- /** {@inheritDoc} */
- @Override public float getSwapHitPercentage() {
- long hits0 = swapHits.get();
- long gets0 = swapGets.get();
-
- if (hits0 == 0)
- return 0;
-
- return (float) hits0 / gets0 * 100.0f;
- }
-
- /** {@inheritDoc} */
- @Override public float getSwapMissPercentage() {
- long misses0 = swapMisses.get();
- long reads0 = swapGets.get();
-
- if (misses0 == 0)
- return 0;
-
- return (float) misses0 / reads0 * 100.0f;
- }
-
- /** {@inheritDoc} */
@Override public int getSize() {
GridCacheAdapter<?, ?> cache = cctx.cache();
@@ -782,6 +720,14 @@ public class CacheMetricsImpl implements CacheMetrics {
return ccfg != null && ccfg.isManagementEnabled();
}
+ public long getTotalAllocatedPages() {
+ return 0;
+ }
+
+ public long getTotalEvictedPages() {
+ return 0;
+ }
+
/**
* Off-heap read callback.
*
@@ -829,61 +775,6 @@ public class CacheMetricsImpl implements CacheMetrics {
delegate.onOffHeapEvict();
}
- /**
- * Swap read callback.
- *
- * @param hit Hit or miss flag.
- */
- public void onSwapRead(boolean hit) {
- swapGets.incrementAndGet();
-
- if (hit)
- swapHits.incrementAndGet();
- else
- swapMisses.incrementAndGet();
-
- if (delegate != null)
- delegate.onSwapRead(hit);
- }
-
- /**
- * Swap write callback.
- */
- public void onSwapWrite() {
- onSwapWrite(1);
- }
-
- /**
- * Swap write callback.
- *
- * @param cnt Amount of entries.
- */
- public void onSwapWrite(int cnt) {
- swapPuts.addAndGet(cnt);
-
- if (delegate != null)
- delegate.onSwapWrite(cnt);
- }
-
- /**
- * Swap remove callback.
- */
- public void onSwapRemove() {
- onSwapRemove(1);
- }
-
- /**
- * Swap remove callback.
- *
- * @param cnt Amount of entries.
- */
- public void onSwapRemove(int cnt) {
- swapRemoves.addAndGet(cnt);
-
- if (delegate != null)
- delegate.onSwapRemove(cnt);
- }
-
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(CacheMetricsImpl.class, this);
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
index 1971d5b..a8d7693 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsSnapshot.java
@@ -74,9 +74,6 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
/** Cache name */
private String cacheName;
- /** Number of entries that was swapped to disk. */
- private long overflowSize;
-
/** Number of reads from off-heap. */
private long offHeapGets;
@@ -110,27 +107,6 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
/** Off-heap memory maximum size*/
private long offHeapMaxSize;
- /** Number of reads from swap. */
- private long swapGets;
-
- /** Number of writes to swap. */
- private long swapPuts;
-
- /** Number of removed entries from swap. */
- private long swapRemoves;
-
- /** Number of entries stored in swap. */
- private long swapEntriesCnt;
-
- /** Swap hits number. */
- private long swapHits;
-
- /** Swap misses number. */
- private long swapMisses;
-
- /** Swap size. */
- private long swapSize;
-
/** Number of non-{@code null} values in the cache. */
private int size;
@@ -262,7 +238,6 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
rollbackAvgTimeNanos = m.getAverageTxRollbackTime();
cacheName = m.name();
- overflowSize = m.getOverflowSize();
offHeapGets = m.getOffHeapGets();
offHeapPuts = m.getOffHeapPuts();
@@ -276,14 +251,6 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
offHeapAllocatedSize = m.getOffHeapAllocatedSize();
offHeapMaxSize = m.getOffHeapMaxSize();
- swapGets = m.getSwapGets();
- swapPuts = m.getSwapPuts();
- swapRemoves = m.getSwapRemovals();
- swapHits = m.getSwapHits();
- swapMisses = m.getSwapMisses();
- swapEntriesCnt = m.getSwapEntriesCount();
- swapSize = m.getSwapSize();
-
size = m.getSize();
keySize = m.getKeySize();
isEmpty = m.isEmpty();
@@ -365,11 +332,6 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
commitAvgTimeNanos += e.getAverageTxCommitTime();
rollbackAvgTimeNanos += e.getAverageTxRollbackTime();
- if (e.getOverflowSize() > -1)
- overflowSize += e.getOverflowSize();
- else
- overflowSize = -1;
-
offHeapGets += e.getOffHeapGets();
offHeapPuts += e.getOffHeapPuts();
offHeapRemoves += e.getOffHeapRemovals();
@@ -381,14 +343,6 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
offHeapBackupEntriesCnt += e.getOffHeapBackupEntriesCount();
offHeapAllocatedSize += e.getOffHeapAllocatedSize();
- swapGets += e.getSwapGets();
- swapPuts += e.getSwapPuts();
- swapRemoves += e.getSwapRemovals();
- swapHits += e.getSwapHits();
- swapMisses += e.getSwapMisses();
- swapEntriesCnt += e.getSwapEntriesCount();
- swapSize += e.getSwapSize();
-
if (e.getDhtEvictQueueCurrentSize() > -1)
dhtEvictQueueCurrSize += e.getDhtEvictQueueCurrentSize();
else
@@ -551,11 +505,6 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
}
/** {@inheritDoc} */
- @Override public long getOverflowSize() {
- return overflowSize;
- }
-
- /** {@inheritDoc} */
@Override public long getOffHeapGets() {
return offHeapGets;
}
@@ -626,57 +575,6 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
}
/** {@inheritDoc} */
- @Override public long getSwapGets() {
- return swapGets;
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapPuts() {
- return swapPuts;
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapRemovals() {
- return swapRemoves;
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapHits() {
- return swapHits;
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapMisses() {
- return swapMisses;
- }
-
- /** {@inheritDoc} */
- @Override public float getSwapHitPercentage() {
- if (swapHits == 0 || swapGets == 0)
- return 0;
-
- return (float) swapHits / swapGets * 100.0f;
- }
-
- /** {@inheritDoc} */
- @Override public float getSwapMissPercentage() {
- if (swapMisses == 0 || swapGets == 0)
- return 0;
-
- return (float) swapMisses / swapGets * 100.0f;
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapEntriesCount() {
- return swapEntriesCnt;
- }
-
- /** {@inheritDoc} */
- @Override public long getSwapSize() {
- return swapSize;
- }
-
- /** {@inheritDoc} */
@Override public int getSize() {
return size;
}
@@ -868,7 +766,6 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
out.writeFloat(commitAvgTimeNanos);
out.writeFloat(rollbackAvgTimeNanos);
- out.writeLong(overflowSize);
out.writeLong(offHeapGets);
out.writeLong(offHeapPuts);
out.writeLong(offHeapRemoves);
@@ -881,14 +778,6 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
out.writeLong(offHeapAllocatedSize);
out.writeLong(offHeapMaxSize);
- out.writeLong(swapGets);
- out.writeLong(swapPuts);
- out.writeLong(swapRemoves);
- out.writeLong(swapHits);
- out.writeLong(swapMisses);
- out.writeLong(swapEntriesCnt);
- out.writeLong(swapSize);
-
out.writeInt(dhtEvictQueueCurrSize);
out.writeInt(txThreadMapSize);
out.writeInt(txXidMapSize);
@@ -926,7 +815,6 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
commitAvgTimeNanos = in.readFloat();
rollbackAvgTimeNanos = in.readFloat();
- overflowSize = in.readLong();
offHeapGets = in.readLong();
offHeapPuts = in.readLong();
offHeapRemoves = in.readLong();
@@ -939,14 +827,6 @@ public class CacheMetricsSnapshot implements CacheMetrics, Externalizable {
offHeapAllocatedSize = in.readLong();
offHeapMaxSize = in.readLong();
- swapGets = in.readLong();
- swapPuts = in.readLong();
- swapRemoves = in.readLong();
- swapHits = in.readLong();
- swapMisses = in.readLong();
- swapEntriesCnt = in.readLong();
- swapSize = in.readLong();
-
dhtEvictQueueCurrSize = in.readInt();
txThreadMapSize = in.readInt();
txXidMapSize = in.readInt();
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index 3ddd7ac..ab5db28 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -716,6 +716,9 @@ public class GridCacheProcessor extends GridProcessorAdapter {
if (cacheType != CacheType.USER)
cfg.setMemoryPolicyName(sharedCtx.database().systemMemoryPolicyName());
+ if (cacheType != CacheType.USER)
+ cfg.setMemoryPolicyName(sharedCtx.database().systemMemoryPolicyName());
+
boolean template = cfg.getName() != null && cfg.getName().endsWith("*");
DynamicCacheDescriptor desc = new DynamicCacheDescriptor(ctx,
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/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 c1c2e67..300e935 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
@@ -23,9 +23,12 @@ import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
+import javax.management.JMException;
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.MemoryConfiguration;
import org.apache.ignite.configuration.MemoryPolicyConfiguration;
import org.apache.ignite.internal.GridKernalContext;
@@ -44,6 +47,7 @@ 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.mxbean.MemoryMetricsMXBean;
import org.jetbrains.annotations.Nullable;
/**
@@ -60,6 +64,9 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
protected Map<String, MemoryPolicy> memPlcMap;
/** */
+ protected Map<String, MemoryMetrics> memMetricsMap;
+
+ /** */
protected MemoryPolicy dfltMemPlc;
/** */
@@ -110,14 +117,19 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
for (MemoryPolicy memPlc : memPlcMap.values()) {
MemoryPolicyConfiguration memPlcCfg = memPlc.config();
+ MemoryMetricsImpl memMetrics = (MemoryMetricsImpl) memMetricsMap.get(memPlcCfg.getName());
+
FreeListImpl freeList = new FreeListImpl(0,
cctx.igniteInstanceName(),
memPlc.pageMemory(),
+ memMetrics,
null,
cctx.wal(),
0L,
true);
+ memMetrics.freeList(freeList);
+
freeListMap.put(memPlcCfg.getName(), freeList);
}
@@ -149,8 +161,18 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
//reserve place for default and system memory policies
memPlcMap = U.newHashMap(2);
- dfltMemPlc = createDefaultMemoryPolicy(dbCfg);
+ memMetricsMap = U.newHashMap(2);
+
+ MemoryPolicyConfiguration dfltPlcCfg = dbCfg.createDefaultPolicyConfig();
+
+ MemoryMetricsImpl memMetrics = new MemoryMetricsImpl(dfltPlcCfg);
+
+ registerMetricsMBean(memMetrics);
+
+ dfltMemPlc = createDefaultMemoryPolicy(dbCfg, dfltPlcCfg, memMetrics);
+
memPlcMap.put(null, dfltMemPlc);
+ memMetricsMap.put(null, memMetrics);
log.warning("No user-defined default MemoryPolicy found; system default of 1GB size will be used.");
}
@@ -160,23 +182,35 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
if (dfltMemPlcName == null) {
//reserve additional place for default and system memory policies
memPlcMap = U.newHashMap(memPlcsCfgs.length + 2);
+ memMetricsMap = U.newHashMap(memPlcsCfgs.length + 2);
+
+ MemoryPolicyConfiguration dfltPlcCfg = dbCfg.createDefaultPolicyConfig();
+
+ MemoryMetricsImpl memMetrics = new MemoryMetricsImpl(dfltPlcCfg);
- dfltMemPlc = createDefaultMemoryPolicy(dbCfg);
+ dfltMemPlc = createDefaultMemoryPolicy(dbCfg, dfltPlcCfg, memMetrics);
memPlcMap.put(null, dfltMemPlc);
+ memMetricsMap.put(null, memMetrics);
log.warning("No user-defined default MemoryPolicy found; system default of 1GB size will be used.");
}
- else
+ else {
//reserve additional place for system memory policy only
memPlcMap = U.newHashMap(memPlcsCfgs.length + 1);
+ memMetricsMap = U.newHashMap(memPlcsCfgs.length + 1);;
+ }
for (MemoryPolicyConfiguration memPlcCfg : memPlcsCfgs) {
- PageMemory pageMem = initMemory(dbCfg, memPlcCfg);
+ MemoryMetricsImpl memMetrics = new MemoryMetricsImpl(memPlcCfg);
+
+ PageMemory pageMem = initMemory(dbCfg, memPlcCfg, memMetrics);
- MemoryPolicy memPlc = new MemoryPolicy(pageMem, memPlcCfg);
+ MemoryPolicy memPlc = new MemoryPolicy(pageMem, memMetrics, memPlcCfg);
memPlcMap.put(memPlcCfg.getName(), memPlc);
+ memMetricsMap.put(memPlcCfg.getName(), memMetrics);
+
if (memPlcCfg.getName().equals(dfltMemPlcName))
dfltMemPlc = memPlc;
}
@@ -184,18 +218,42 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
MemoryPolicyConfiguration sysPlcCfg = createSystemMemoryPolicy(dbCfg.getSystemCacheMemorySize());
- memPlcMap.put(SYSTEM_MEMORY_POLICY_NAME, new MemoryPolicy(initMemory(dbCfg, sysPlcCfg), sysPlcCfg));
+ MemoryMetricsImpl sysMemMetrics = new MemoryMetricsImpl(sysPlcCfg);
+
+ memPlcMap.put(SYSTEM_MEMORY_POLICY_NAME, new MemoryPolicy(initMemory(dbCfg, sysPlcCfg, sysMemMetrics), sysMemMetrics, sysPlcCfg));
+
+ memMetricsMap.put(SYSTEM_MEMORY_POLICY_NAME, sysMemMetrics);
}
/**
- * @param dbCfg Database config.
+ * @param memMetrics Mem metrics.
*/
- private MemoryPolicy createDefaultMemoryPolicy(MemoryConfiguration dbCfg) {
- MemoryPolicyConfiguration dfltPlc = dbCfg.createDefaultPolicyConfig();
+ private void registerMetricsMBean(MemoryMetricsImpl memMetrics) {
+ IgniteConfiguration cfg = cctx.gridConfig();
- PageMemory pageMem = initMemory(dbCfg, dfltPlc);
+ try {
+ U.registerMBean(
+ cfg.getMBeanServer(),
+ cfg.getIgniteInstanceName(),
+ "MemoryMetrics",
+ memMetrics.getName(),
+ memMetrics,
+ MemoryMetricsMXBean.class);
+ }
+ catch (JMException e) {
+ log.warning("Failed to register MBean for MemoryMetrics with name: '" + memMetrics.getName() + "'");
+ }
+ }
- return new MemoryPolicy(pageMem, dfltPlc);
+ /**
+ * @param dbCfg Database configuration.
+ * @param memPlcCfg MemoryPolicy configuration.
+ * @param memMetrics MemoryMetrics instance.
+ */
+ private MemoryPolicy createDefaultMemoryPolicy(MemoryConfiguration dbCfg, MemoryPolicyConfiguration memPlcCfg, MemoryMetricsImpl memMetrics) {
+ PageMemory pageMem = initMemory(dbCfg, memPlcCfg, memMetrics);
+
+ return new MemoryPolicy(pageMem, memMetrics, memPlcCfg);
}
/**
@@ -295,6 +353,13 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
}
/**
+ * @return MemoryMetrics for all MemoryPolicies configured in Ignite instance.
+ */
+ public Collection<MemoryMetrics> memoryMetrics() {
+ return memMetricsMap != null ? memMetricsMap.values() : null;
+ }
+
+ /**
* @param memPlcName Memory policy name.
* @return {@link MemoryPolicy} instance associated with a given {@link MemoryPolicyConfiguration}.
* @throws IgniteCheckedException in case of request for unknown MemoryPolicy.
@@ -447,9 +512,10 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
/**
* @param dbCfg memory configuration with common parameters.
* @param plc memory policy with PageMemory specific parameters.
+ * @param memMetrics {@link MemoryMetrics} object to collect memory usage metrics.
* @return Page memory instance.
*/
- private PageMemory initMemory(MemoryConfiguration dbCfg, MemoryPolicyConfiguration plc) {
+ private PageMemory initMemory(MemoryConfiguration dbCfg, MemoryPolicyConfiguration plc, MemoryMetricsImpl memMetrics) {
long[] sizes = calculateFragmentSizes(
dbCfg.getConcurrencyLevel(),
plc.getSize());
@@ -464,7 +530,7 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
true,
sizes);
- return createPageMemory(memProvider, dbCfg.getPageSize());
+ return createPageMemory(memProvider, dbCfg.getPageSize(), memMetrics);
}
/**
@@ -512,9 +578,11 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
*
* @param memProvider Memory provider.
* @param pageSize Page size.
+ * @param memMetrics MemoryMetrics to collect memory usage metrics.
+ * @return PageMemory instance.
*/
- protected PageMemory createPageMemory(DirectMemoryProvider memProvider, int pageSize) {
- return new PageMemoryNoStoreImpl(log, memProvider, cctx, pageSize, false);
+ protected PageMemory createPageMemory(DirectMemoryProvider memProvider, int pageSize, MemoryMetricsImpl memMetrics) {
+ return new PageMemoryNoStoreImpl(log, memProvider, cctx, pageSize, memMetrics, false);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteMemoryPoolMetrics.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteMemoryPoolMetrics.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteMemoryPoolMetrics.java
deleted file mode 100644
index ca11232..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteMemoryPoolMetrics.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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;
-
-/**
- *
- */
-public interface IgniteMemoryPoolMetrics {
- /**
- * @return Memory pool name.
- */
- public String name();
-
- /**
- * @return Total number of pages available.
- */
- public long totalPages();
-}
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/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
new file mode 100644
index 0000000..ed4cae0
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsImpl.java
@@ -0,0 +1,314 @@
+/*
+ * 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 java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
+import org.apache.ignite.configuration.MemoryPolicyConfiguration;
+import org.apache.ignite.internal.processors.cache.database.freelist.FreeListImpl;
+import org.apache.ignite.internal.util.IgniteUtils;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.mxbean.MemoryMetricsMXBean;
+import org.jsr166.LongAdder8;
+
+/**
+ *
+ */
+public class MemoryMetricsImpl implements MemoryMetricsMXBean {
+ /** */
+ private FreeListImpl freeList;
+
+ /** */
+ private final LongAdder8 totalAllocatedPages = new LongAdder8();
+
+ /**
+ * Counter for number of pages occupied by large entries (one entry is larger than one page).
+ */
+ private final LongAdder8 largeEntriesPages = new LongAdder8();
+
+ /** */
+ private volatile boolean metricsEnabled;
+
+ /** */
+ private volatile int subInts = 5;
+
+ /** */
+ private volatile LongAdder8[] allocRateCounters = new LongAdder8[subInts];
+
+ /** */
+ private final AtomicInteger counterIdx = new AtomicInteger(0);
+
+ /** */
+ private final AtomicLong lastUpdTime = new AtomicLong(0);
+
+ /** */
+ private final MemoryPolicyConfiguration memPlcCfg;
+
+ /** Time interval (in seconds) when allocations/evictions are counted to calculate rate.
+ * Default value is 60 seconds. */
+ private volatile int rateTimeInterval = 60;
+
+ /**
+ * @param memPlcCfg MemoryPolicyConfiguration.
+ */
+ public MemoryMetricsImpl(MemoryPolicyConfiguration memPlcCfg) {
+ this.memPlcCfg = memPlcCfg;
+
+ for (int i = 0; i < subInts; i++)
+ allocRateCounters[i] = new LongAdder8();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String getName() {
+ return U.maskName(memPlcCfg.getName());
+ }
+
+ /** {@inheritDoc} */
+ @Override public int getSize() {
+ return (int) (memPlcCfg.getSize() / (1024 * 1024));
+ }
+
+ /** {@inheritDoc} */
+ @Override public String getSwapFilePath() {
+ return memPlcCfg.getSwapFilePath();
+ }
+
+ /** {@inheritDoc} */
+ @Override public long getTotalAllocatedPages() {
+ return metricsEnabled ? totalAllocatedPages.longValue() : 0;
+ }
+
+ /** {@inheritDoc} */
+ @Override public float getAllocationRate() {
+ if (!metricsEnabled)
+ return 0;
+
+ float res = 0;
+
+ for (int i = 0; i < subInts; i++)
+ res += allocRateCounters[i].floatValue();
+
+ return res / rateTimeInterval;
+ }
+
+ /** {@inheritDoc} */
+ @Override public float getEvictionRate() {
+ return 0;
+ }
+
+ /** {@inheritDoc} */
+ @Override public float getLargeEntriesPagesPercentage() {
+ if (!metricsEnabled)
+ return 0;
+
+ return totalAllocatedPages.longValue() != 0 ?
+ (float) largeEntriesPages.doubleValue() / totalAllocatedPages.longValue()
+ : 0;
+ }
+
+ /** {@inheritDoc} */
+ @Override public float getPagesFillFactor() {
+ if (!metricsEnabled || freeList == null)
+ return 0;
+
+ return freeList.fillFactor();
+ }
+
+ /**
+ * Increments totalAllocatedPages counter.
+ */
+ public void incrementTotalAllocatedPages() {
+ if (metricsEnabled) {
+ totalAllocatedPages.increment();
+
+ try {
+ updateAllocationRateMetrics();
+ }
+ catch (ArrayIndexOutOfBoundsException | NullPointerException ignored) {
+ // No-op.
+ }
+ }
+ }
+
+ /**
+ *
+ */
+ private void updateAllocationRateMetrics() {
+ if (subInts != allocRateCounters.length)
+ return;
+
+ long lastUpdT = lastUpdTime.get();
+ long currT = IgniteUtils.currentTimeMillis();
+
+ int currIdx = counterIdx.get();
+
+ long deltaT = currT - lastUpdT;
+
+ int subInts = this.subInts;
+
+ LongAdder8[] rateCntrs = allocRateCounters;
+
+ for (int i = 1; i <= subInts; i++) {
+ if (deltaT < subInt(i)) {
+ if (i > 1) {
+ if (!lastUpdTime.compareAndSet(lastUpdT, currT)) {
+ rateCntrs[counterIdx.get()].increment();
+
+ break;
+ }
+ }
+
+ if (rotateIndex(currIdx, i - 1)) {
+ currIdx = counterIdx.get();
+
+ resetCounters(currIdx, i - 1);
+
+ rateCntrs[currIdx].increment();
+
+ break;
+ }
+ else {
+ rateCntrs[counterIdx.get()].increment();
+
+ break;
+ }
+ }
+ else if (i == subInts && lastUpdTime.compareAndSet(lastUpdT, currT))
+ resetAll();
+
+ if (currIdx != counterIdx.get()) {
+ rateCntrs[counterIdx.get()].increment();
+
+ break;
+ }
+ }
+ }
+
+ /**
+ * @param intervalNum Interval number.
+ */
+ private int subInt(int intervalNum) {
+ return (rateTimeInterval * 1000 * intervalNum) / subInts;
+ }
+
+ /**
+ * @param idx Index.
+ * @param rotateStep Rotate step.
+ */
+ private boolean rotateIndex(int idx, int rotateStep) {
+ if (rotateStep == 0)
+ return true;
+
+ int subInts = this.subInts;
+
+ assert rotateStep < subInts;
+
+ int nextIdx = (idx + rotateStep) % subInts;
+
+ return counterIdx.compareAndSet(idx, nextIdx);
+ }
+
+ /**
+ *
+ */
+ private void resetAll() {
+ LongAdder8[] cntrs = allocRateCounters;
+
+ for (LongAdder8 cntr : cntrs)
+ cntr.reset();
+ }
+
+ /**
+ * @param currIdx Current index.
+ * @param resettingCntrs Resetting allocRateCounters.
+ */
+ private void resetCounters(int currIdx, int resettingCntrs) {
+ if (resettingCntrs == 0)
+ return;
+
+ for (int j = 0; j < resettingCntrs; j++) {
+ int cleanIdx = currIdx - j >= 0 ? currIdx - j : currIdx - j + subInts;
+
+ allocRateCounters[cleanIdx].reset();
+ }
+ }
+
+ /**
+ *
+ */
+ public void incrementLargeEntriesPages() {
+ if (metricsEnabled)
+ largeEntriesPages.increment();
+ }
+
+ /**
+ *
+ */
+ public void decrementLargeEntriesPages() {
+ if (metricsEnabled)
+ largeEntriesPages.decrement();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void enableMetrics() {
+ metricsEnabled = true;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void disableMetrics() {
+ metricsEnabled = false;
+ }
+
+ /**
+ * @param rateTimeInterval Time interval used to calculate allocation/eviction rate.
+ */
+ @Override public void rateTimeInterval(int rateTimeInterval) {
+ this.rateTimeInterval = rateTimeInterval;
+ }
+
+ /**
+ * Sets number of subintervals the whole rateTimeInterval will be split into to calculate allocation rate.
+ *
+ * @param subInts Number of subintervals.
+ */
+ @Override public void subIntervals(int subInts) {
+ assert subInts > 0;
+
+ if (this.subInts == subInts)
+ return;
+
+ int rateIntervalMs = rateTimeInterval * 1000;
+
+ if (rateIntervalMs / subInts < 10)
+ subInts = rateIntervalMs / 10;
+
+ LongAdder8[] newCounters = new LongAdder8[subInts];
+
+ for (int i = 0; i < subInts; i++)
+ newCounters[i] = new LongAdder8();
+
+ this.subInts = subInts;
+ allocRateCounters = newCounters;
+ }
+
+ /**
+ * @param freeList Free list.
+ */
+ void freeList(FreeListImpl freeList) {
+ this.freeList = freeList;
+ }
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/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 0978d10..be23b38 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,6 +16,7 @@
*/
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;
@@ -27,13 +28,19 @@ public class MemoryPolicy {
private final PageMemory pageMem;
/** */
+ private final MemoryMetrics memMetrics;
+
+ /** */
private final MemoryPolicyConfiguration cfg;
/**
- * @param pageMem Page mem.
+ * @param pageMem PageMemory instance.
+ * @param memMetrics MemoryMetrics instance.
+ * @param cfg Configuration of given MemoryPolicy.
*/
- public MemoryPolicy(PageMemory pageMem, MemoryPolicyConfiguration cfg) {
+ public MemoryPolicy(PageMemory pageMem, MemoryMetrics memMetrics, MemoryPolicyConfiguration cfg) {
this.pageMem = pageMem;
+ this.memMetrics = memMetrics;
this.cfg = cfg;
}
@@ -50,4 +57,11 @@ public class MemoryPolicy {
public MemoryPolicyConfiguration config() {
return cfg;
}
+
+ /**
+ * @return Memory Metrics.
+ */
+ public MemoryMetrics memoryMetrics() {
+ return memMetrics;
+ }
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
index b74c85e..d433172 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/freelist/FreeListImpl.java
@@ -30,6 +30,7 @@ import org.apache.ignite.internal.pagemem.wal.record.delta.DataPageInsertRecord;
import org.apache.ignite.internal.pagemem.wal.record.delta.DataPageRemoveRecord;
import org.apache.ignite.internal.pagemem.wal.record.delta.DataPageUpdateRecord;
import org.apache.ignite.internal.processors.cache.database.CacheDataRow;
+import org.apache.ignite.internal.processors.cache.database.MemoryMetricsImpl;
import org.apache.ignite.internal.processors.cache.database.tree.io.CacheVersionIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.DataPageIO;
import org.apache.ignite.internal.processors.cache.database.tree.io.DataPagePayload;
@@ -72,6 +73,9 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
/** */
private final PageHandler<CacheDataRow, Boolean> updateRow = new UpdateRowHandler();
+ /** */
+ private final MemoryMetricsImpl memMetrics;
+
/**
*
*/
@@ -294,6 +298,7 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
* @param cacheId Cache ID.
* @param name Name (for debug purpose).
* @param pageMem Page memory.
+ * @param memMetrics Memory metrics.
* @param reuseList Reuse list or {@code null} if this free list will be a reuse list for itself.
* @param wal Write ahead log manager.
* @param metaPageId Metadata page ID.
@@ -304,6 +309,7 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
int cacheId,
String name,
PageMemory pageMem,
+ MemoryMetricsImpl memMetrics,
ReuseList reuseList,
IgniteWriteAheadLogManager wal,
long metaPageId,
@@ -329,9 +335,33 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
this.shift = shift;
+ this.memMetrics = memMetrics;
+
init(metaPageId, initNew);
}
+ /**
+ * Calculates average fill factor over FreeListImpl instance.
+ */
+ public float fillFactor() {
+ long pageSize = pageSize();
+
+ long totalSize = 0;
+ long loadSize = 0;
+
+ for (int b = BUCKETS - 2; b > 0; b--) {
+ long bsize = pageSize - ((REUSE_BUCKET - b) << shift);
+
+ long pages = bucketsSize[b].longValue();
+
+ loadSize += pages * (pageSize - bsize);
+
+ totalSize += pages * pageSize;
+ }
+
+ return totalSize == 0 ? -1L : ((float) loadSize / totalSize);
+ }
+
/** {@inheritDoc} */
@Override public void dumpStatistics(IgniteLogger log) {
long dataPages = 0;
@@ -411,6 +441,9 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
int written = 0;
do {
+ if (written != 0)
+ memMetrics.incrementLargeEntriesPages();
+
int freeSpace = Math.min(MIN_SIZE_FOR_DATA_PAGE, rowSize - written);
int bucket = bucket(freeSpace, false);
@@ -472,6 +505,8 @@ public class FreeListImpl extends PagesList implements FreeList, ReuseList {
assert nextLink != FAIL_L; // Can't fail here.
while (nextLink != 0L) {
+ memMetrics.decrementLargeEntriesPages();
+
itemId = PageIdUtils.itemId(nextLink);
pageId = PageIdUtils.pageId(nextLink);
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
index 72f5d62..a60d364 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/PlatformCache.java
@@ -1400,7 +1400,6 @@ public class PlatformCache extends PlatformAbstractTarget {
writer.writeLong(metrics.getCacheTxCommits());
writer.writeLong(metrics.getCacheTxRollbacks());
writer.writeString(metrics.name());
- writer.writeLong(metrics.getOverflowSize());
writer.writeLong(metrics.getOffHeapGets());
writer.writeLong(metrics.getOffHeapPuts());
writer.writeLong(metrics.getOffHeapRemovals());
@@ -1414,15 +1413,6 @@ public class PlatformCache extends PlatformAbstractTarget {
writer.writeLong(metrics.getOffHeapBackupEntriesCount());
writer.writeLong(metrics.getOffHeapAllocatedSize());
writer.writeLong(metrics.getOffHeapMaxSize());
- writer.writeLong(metrics.getSwapGets());
- writer.writeLong(metrics.getSwapPuts());
- writer.writeLong(metrics.getSwapRemovals());
- writer.writeLong(metrics.getSwapHits());
- writer.writeLong(metrics.getSwapMisses());
- writer.writeLong(metrics.getSwapEntriesCount());
- writer.writeLong(metrics.getSwapSize());
- writer.writeFloat(metrics.getSwapHitPercentage());
- writer.writeFloat(metrics.getSwapMissPercentage());
writer.writeInt(metrics.getSize());
writer.writeInt(metrics.getKeySize());
writer.writeBoolean(metrics.isEmpty());
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorMemoryConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorMemoryConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorMemoryConfiguration.java
index 2080105..f380394 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorMemoryConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorMemoryConfiguration.java
@@ -22,7 +22,6 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.ignite.configuration.MemoryConfiguration;
import org.apache.ignite.configuration.MemoryPolicyConfiguration;
-import org.apache.ignite.internal.LessNamingBean;
import org.apache.ignite.internal.util.typedef.F;
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java
index 0b6c8a8..61d2984 100644
--- a/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/CacheMetricsMXBean.java
@@ -96,10 +96,6 @@ public interface CacheMetricsMXBean extends CacheStatisticsMXBean, CacheMXBean,
public String name();
/** {@inheritDoc} */
- @MXBeanDescription("Number of entries that was swapped to disk.")
- public long getOverflowSize();
-
- /** {@inheritDoc} */
@MXBeanDescription("Number of gets from off-heap memory.")
public long getOffHeapGets();
@@ -152,42 +148,6 @@ public interface CacheMetricsMXBean extends CacheStatisticsMXBean, CacheMXBean,
public long getOffHeapMaxSize();
/** {@inheritDoc} */
- @MXBeanDescription("Number of gets from swap.")
- public long getSwapGets();
-
- /** {@inheritDoc} */
- @MXBeanDescription("Number of puts to swap.")
- public long getSwapPuts();
-
- /** {@inheritDoc} */
- @MXBeanDescription("Number of removed entries from swap.")
- public long getSwapRemovals();
-
- /** {@inheritDoc} */
- @MXBeanDescription("Number of hits on swap.")
- public long getSwapHits();
-
- /** {@inheritDoc} */
- @MXBeanDescription("Number of misses on swap.")
- public long getSwapMisses();
-
- /** {@inheritDoc} */
- @MXBeanDescription("Percentage of hits on swap.")
- public float getSwapHitPercentage();
-
- /** {@inheritDoc} */
- @MXBeanDescription("Percentage of misses on swap.")
- public float getSwapMissPercentage();
-
- /** {@inheritDoc} */
- @MXBeanDescription("Number of entries stored in swap.")
- public long getSwapEntriesCount();
-
- /** {@inheritDoc} */
- @MXBeanDescription("Size of swap.")
- public long getSwapSize();
-
- /** {@inheritDoc} */
@MXBeanDescription("Number of non-null values in the cache.")
public int getSize();
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/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
new file mode 100644
index 0000000..db75f57
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/MemoryMetricsMXBean.java
@@ -0,0 +1,89 @@
+/*
+ * 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.mxbean;
+
+import org.apache.ignite.MemoryMetrics;
+
+/**
+ * This interface defines JMX view on {@link MemoryMetrics}.
+ */
+@MXBeanDescription("MBean that provides access to MemoryMetrics of current Ignite node.")
+public interface MemoryMetricsMXBean extends MemoryMetrics {
+ /** {@inheritDoc} */
+ @MXBeanDescription("Name of PageMemory metrics are collected for.")
+ @Override public String getName();
+
+ /** {@inheritDoc} */
+ @MXBeanDescription("Size of PageMemory in MBytes.")
+ @Override public int 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();
+
+ /** {@inheritDoc} */
+ @MXBeanDescription("Allocation rate (pages per second) averaged across rateTimeInternal.")
+ @Override public float getAllocationRate();
+
+ /** {@inheritDoc} */
+ @MXBeanDescription("Eviction rate (pages per second).")
+ @Override public float getEvictionRate();
+
+ /** {@inheritDoc} */
+ @MXBeanDescription("Percentage of pages fully occupied by large entities' fragments.")
+ @Override public float getLargeEntriesPagesPercentage();
+
+ /** {@inheritDoc} */
+ @MXBeanDescription("Pages fill factor: size of all entries in cache over size of all allocated pages.")
+ @Override public float getPagesFillFactor();
+
+ /** {@inheritDoc} */
+ @MXBeanDescription(
+ "Sets time interval average allocation rate (pages per second) is calculated over."
+ )
+ @MXBeanParametersNames(
+ "rateTimeInterval"
+ )
+ @MXBeanParametersDescriptions(
+ "Time interval (in seconds) to set."
+ )
+ @Override public void rateTimeInterval(int rateTimeInterval);
+
+ /** {@inheritDoc} */
+ @MXBeanDescription(
+ "Sets number of subintervals to calculate allocationRate metrics."
+ )
+ @MXBeanParametersNames(
+ "subInts"
+ )
+ @MXBeanParametersDescriptions(
+ "Number of subintervals to set."
+ )
+ @Override public void subIntervals(int subInts);
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/test/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoLoadSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoLoadSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoLoadSelfTest.java
index 8362ace..c1ce8b7 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoLoadSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/pagemem/impl/PageMemoryNoLoadSelfTest.java
@@ -30,6 +30,7 @@ import org.apache.ignite.internal.pagemem.PageIdAllocator;
import org.apache.ignite.internal.pagemem.PageIdUtils;
import org.apache.ignite.internal.pagemem.PageMemory;
import org.apache.ignite.internal.pagemem.PageUtils;
+import org.apache.ignite.internal.processors.cache.database.MemoryMetricsImpl;
import org.apache.ignite.internal.processors.cache.database.tree.io.PageIO;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -286,7 +287,7 @@ public class PageMemoryNoLoadSelfTest extends GridCommonAbstractTest {
DirectMemoryProvider provider = new MappedFileMemoryProvider(log(), memDir, true,
sizes);
- return new PageMemoryNoStoreImpl(log(), provider, null, PAGE_SIZE, true);
+ return new PageMemoryNoStoreImpl(log(), provider, null, PAGE_SIZE, new MemoryMetricsImpl(null), true);
}
/**
http://git-wip-us.apache.org/repos/asf/ignite/blob/3f90a9c0/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationLeakTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationLeakTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationLeakTest.java
index b51932f..5c85d01 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationLeakTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheConfigurationLeakTest.java
@@ -47,9 +47,10 @@ public class CacheConfigurationLeakTest extends GridCommonAbstractTest {
MemoryPolicyConfiguration plc = new MemoryPolicyConfiguration();
- plc.setName("dfltMemPlc");
+ plc.setName("dfltPlc");
plc.setSize(MemoryConfiguration.DFLT_MEMORY_POLICY_SIZE * 10);
+ memCfg.setDefaultMemoryPolicyName("dfltPlc");
memCfg.setMemoryPolicies(plc);
cfg.setMemoryConfiguration(memCfg);