Repository: ignite
Updated Branches:
  refs/heads/ignite-5375 [created] f027c00b1


IGNITE-5375 new metrics added to MemoryMetrics interface, new 
PersistentStoreMetrics introduced


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/80d77c4a
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/80d77c4a
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/80d77c4a

Branch: refs/heads/ignite-5375
Commit: 80d77c4a902e14696589cf933171bd46854a53a4
Parents: 281d105
Author: Sergey Chugunov <[email protected]>
Authored: Fri Jun 2 14:15:41 2017 +0300
Committer: Sergey Chugunov <[email protected]>
Committed: Fri Jun 2 19:01:23 2017 +0300

----------------------------------------------------------------------
 .../src/main/java/org/apache/ignite/Ignite.java |   6 +
 .../java/org/apache/ignite/MemoryMetrics.java   |  18 ++
 .../apache/ignite/PersistentStoreMetrics.java   |  62 ++++++
 .../apache/ignite/internal/IgniteKernal.java    |  13 ++
 .../IgniteCacheDatabaseSharedManager.java       |  10 +
 .../cache/database/MemoryMetricsImpl.java       | 203 ++++++++-----------
 .../cache/database/MemoryMetricsMXBeanImpl.java |  15 ++
 .../cache/database/MemoryMetricsSnapshot.java   |  27 +++
 .../database/PersistentStoreMetricsImpl.java    |  94 +++++++++
 .../PersistentStoreMetricsSnapshot.java         | 118 +++++++++++
 .../ignite/mxbean/MemoryMetricsMXBean.java      |  12 ++
 .../database/MemoryMetricsSelfTest.java         |  10 +-
 .../processors/igfs/IgfsIgniteMock.java         |   8 +
 .../ignite/testframework/junits/IgniteMock.java |   6 +
 .../junits/multijvm/IgniteProcessProxy.java     |   6 +
 .../GridCacheDatabaseSharedManager.java         |  31 ++-
 .../cache/database/pagemem/PageMemoryImpl.java  |  29 ++-
 .../database/wal/FileWriteAheadLogManager.java  |   1 -
 ...PlusTreeReuseListPageMemoryImplSelfTest.java |   6 +-
 ...BPlusTreeSelfTestPageMemoryImplSelfTest.java |   5 +-
 .../MetadataStoragePageMemoryImplSelfTest.java  |   5 +-
 .../pagemem/PageMemoryImplNoLoadSelfTest.java   |   5 +-
 .../database/pagemem/PageMemoryImplTest.java    |   5 +-
 23 files changed, 560 insertions(+), 135 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/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 8d5e967..ffccd5a 100644
--- a/modules/core/src/main/java/org/apache/ignite/Ignite.java
+++ b/modules/core/src/main/java/org/apache/ignite/Ignite.java
@@ -638,4 +638,10 @@ public interface Ignite extends AutoCloseable {
      * @return {@link MemoryMetrics} snapshot or {@code null} if no memory 
region is configured under specified name.
      */
     @Nullable public MemoryMetrics memoryMetrics(String memPlcName);
+
+    /**
+     *
+     * @return {@link PersistentStoreMetrics} snapshot.
+     */
+    public PersistentStoreMetrics persistentStoreMetrics();
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/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 81f8309..b12da46 100644
--- a/modules/core/src/main/java/org/apache/ignite/MemoryMetrics.java
+++ b/modules/core/src/main/java/org/apache/ignite/MemoryMetrics.java
@@ -89,4 +89,22 @@ public interface MemoryMetrics {
      * @return The percentage of space that is still free and can be filled in.
      */
     public float getPagesFillFactor();
+
+    /**
+     *
+     * @return
+     */
+    public long getDirtyPages();
+
+    /**
+     *
+     * @return
+     */
+    public float getPagesReplaceRate();
+
+    /**
+     *
+     * @return
+     */
+    public long getPhysicalMemoryPages();
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/core/src/main/java/org/apache/ignite/PersistentStoreMetrics.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/PersistentStoreMetrics.java 
b/modules/core/src/main/java/org/apache/ignite/PersistentStoreMetrics.java
new file mode 100644
index 0000000..43e44ce
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/PersistentStoreMetrics.java
@@ -0,0 +1,62 @@
+/*
+ * 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;
+
+/**
+ *
+ */
+public interface PersistentStoreMetrics {
+    /**
+     *
+     */
+    public float getWalLoggingRate();
+
+    /**
+     *
+     */
+    public int getWalArchiveSegments();
+
+    /**
+     *
+     */
+    public float getWalFsyncTime();
+
+    /**
+     *
+     */
+    public float getCheckpointingTime();
+
+    /**
+     *
+     */
+    public float getCheckpointingFsyncTime();
+
+    /**
+     *
+     */
+    public long getCheckpointingTotalPagesNumber();
+
+    /**
+     *
+     */
+    public long[] getCheckpointingPagesByTypeNumber();
+
+    /**
+     *
+     */
+    public long getCheckpointingCopiedOnWritePagesNumber();
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/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 b04a969..b6ec041 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
@@ -75,6 +75,7 @@ import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.IgniteTransactions;
 import org.apache.ignite.Ignition;
 import org.apache.ignite.MemoryMetrics;
+import org.apache.ignite.PersistentStoreMetrics;
 import org.apache.ignite.cache.affinity.Affinity;
 import org.apache.ignite.cluster.ClusterGroup;
 import org.apache.ignite.cluster.ClusterMetrics;
@@ -3441,6 +3442,18 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
     }
 
     /** {@inheritDoc} */
+    @Override public PersistentStoreMetrics persistentStoreMetrics() {
+        guard();
+
+        try {
+            return ctx.cache().context().database().persistentStoreMetrics();
+        }
+        finally {
+            unguard();
+        }
+    }
+
+    /** {@inheritDoc} */
     @Nullable @Override public IgniteAtomicSequence atomicSequence(String 
name, long initVal, boolean create) {
         guard();
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/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 fd5e2a2..ccaf6d1 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
@@ -28,6 +28,7 @@ import javax.management.JMException;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.MemoryMetrics;
+import org.apache.ignite.PersistentStoreMetrics;
 import org.apache.ignite.configuration.DataPageEvictionMode;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.configuration.MemoryConfiguration;
@@ -582,6 +583,13 @@ public class IgniteCacheDatabaseSharedManager extends 
GridCacheSharedManagerAdap
     }
 
     /**
+     * @return PersistenceMetrics if persistence is enabled or {@code null} 
otherwise.
+     */
+    public PersistentStoreMetrics persistentStoreMetrics() {
+        return null;
+    }
+
+    /**
      * @param memPlcName Name of {@link MemoryPolicy} to obtain {@link 
MemoryMetrics} for.
      * @return {@link MemoryMetrics} snapshot for specified {@link 
MemoryPolicy} or {@code null} if
      * no {@link MemoryPolicy} is configured for specified name.
@@ -903,6 +911,8 @@ public class IgniteCacheDatabaseSharedManager extends 
GridCacheSharedManagerAdap
         MemoryPolicyConfiguration memPlcCfg,
         MemoryMetricsImpl memMetrics
     ) {
+        memMetrics.persistenceEnabled(false);
+
         return new PageMemoryNoStoreImpl(
             log,
             memProvider,

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/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 2bd96e7..2e5a78c 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
@@ -16,12 +16,11 @@
  */
 package org.apache.ignite.internal.processors.cache.database;
 
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicLong;
 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.freelist.FreeListImpl;
-import org.apache.ignite.internal.util.IgniteUtils;
+import org.apache.ignite.internal.processors.cache.ratemetrics.HitRateMetrics;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.jsr166.LongAdder8;
 
@@ -40,24 +39,30 @@ public class MemoryMetricsImpl implements MemoryMetrics {
      */
     private final LongAdder8 largeEntriesPages = new LongAdder8();
 
+    /** Counter for number of dirty pages. */
+    private LongAdder8 dirtyPages = new LongAdder8();
+
     /** */
     private volatile boolean metricsEnabled;
 
     /** */
-    private volatile int subInts;
+    private boolean persistenceEnabled;
 
     /** */
-    private volatile LongAdder8[] allocRateCounters;
+    private volatile int subInts;
 
-    /** */
-    private final AtomicInteger counterIdx = new AtomicInteger(0);
+    /** Allocation rate calculator. */
+    private volatile HitRateMetrics allocRate = new HitRateMetrics(60_000, 5);
 
     /** */
-    private final AtomicLong lastUpdTime = new AtomicLong(0);
+    private volatile HitRateMetrics pageReplaceRate = new 
HitRateMetrics(60_000, 5);
 
     /** */
     private final MemoryPolicyConfiguration memPlcCfg;
 
+    /** */
+    private PageMemory pageMem;
+
     /** Time interval (in milliseconds) when allocations/evictions are counted 
to calculate rate. */
     private volatile long rateTimeInterval;
 
@@ -72,11 +77,6 @@ public class MemoryMetricsImpl implements MemoryMetrics {
         rateTimeInterval = memPlcCfg.getRateTimeInterval();
 
         subInts = memPlcCfg.getSubIntervals();
-
-        allocRateCounters = new LongAdder8[subInts];
-
-        for (int i = 0; i < subInts; i++)
-            allocRateCounters[i] = new LongAdder8();
     }
 
     /** {@inheritDoc} */
@@ -94,12 +94,7 @@ public class MemoryMetricsImpl implements MemoryMetrics {
         if (!metricsEnabled)
             return 0;
 
-        float res = 0;
-
-        for (int i = 0; i < subInts; i++)
-            res += allocRateCounters[i].floatValue();
-
-        return res * 1000 / rateTimeInterval;
+        return ((float) allocRate.getRate()) / rateTimeInterval;
     }
 
     /** {@inheritDoc} */
@@ -125,125 +120,87 @@ public class MemoryMetricsImpl implements MemoryMetrics {
         return freeList.fillFactor();
     }
 
-    /**
-     * Increments totalAllocatedPages counter.
-     */
-    public void incrementTotalAllocatedPages() {
-        if (metricsEnabled) {
-            totalAllocatedPages.increment();
+    /** {@inheritDoc} */
+    @Override public long getDirtyPages() {
+        if (!metricsEnabled || !persistenceEnabled)
+            return 0;
 
-            try {
-                updateAllocationRateMetrics();
-            }
-            catch (ArrayIndexOutOfBoundsException | NullPointerException 
ignored) {
-                // No-op.
-            }
-        }
+        return dirtyPages.longValue();
     }
 
-    /**
-     *
-     */
-    private void updateAllocationRateMetrics() {
-        long lastUpdT = lastUpdTime.get();
-        long currT = IgniteUtils.currentTimeMillis();
-
-        int currIdx = counterIdx.get();
-
-        long deltaT = currT - lastUpdT;
-
-        int subInts = this.subInts;
-
-        LongAdder8[] rateCntrs = allocRateCounters;
-
-        if (subInts != rateCntrs.length)
-            return;
-
-        int cntrIdx = counterIdx.get();
-
-        for (int i = 1; i <= subInts; i++) {
-            if (deltaT < subInt(i)) {
-                if (i > 1) {
-                    if (!lastUpdTime.compareAndSet(lastUpdT, currT)) {
-                        rateCntrs[cntrIdx].increment();
-
-                        break;
-                    }
-                }
-
-                if (rotateIndex(currIdx, i - 1)) {
-                    currIdx = counterIdx.get();
-
-                    resetCounters(currIdx, i - 1);
-
-                    rateCntrs[currIdx].increment();
+    /** {@inheritDoc} */
+    @Override public float getPagesReplaceRate() {
+        if (!metricsEnabled || !persistenceEnabled)
+            return 0;
 
-                    break;
-                }
-                else {
-                    rateCntrs[cntrIdx].increment();
+        return ((float) pageReplaceRate.getRate()) / rateTimeInterval;
+    }
 
-                    break;
-                }
-            }
-            else if (i == subInts && lastUpdTime.compareAndSet(lastUpdT, 
currT))
-                resetAll();
+    /** {@inheritDoc} */
+    @Override public long getPhysicalMemoryPages() {
+        if (!metricsEnabled || !persistenceEnabled)
+            return 0;
 
-            if (currIdx != cntrIdx) {
-                rateCntrs[cntrIdx].increment();
+        assert pageMem != null;
 
-                break;
-            }
-        }
+        return pageMem.loadedPages();
     }
 
     /**
-     * @param intervalNum Interval number.
+     * Updates pageReplaceRate metric.
      */
-    private long subInt(int intervalNum) {
-        return (rateTimeInterval * intervalNum) / subInts;
+    public void updatePageReplaceRate() {
+        if (metricsEnabled)
+            pageReplaceRate.onHit();
     }
 
     /**
-     * @param idx Index.
-     * @param rotateStep Rotate step.
+     * Increments dirtyPages counter.
      */
-    private boolean rotateIndex(int idx, int rotateStep) {
-        if (rotateStep == 0)
-            return true;
+    public void incrementDirtyPages() {
+        if (metricsEnabled)
+            dirtyPages.increment();
+    }
 
-        int subInts = this.subInts;
+    /**
+     * Decrements dirtyPages counter.
+     */
+    public void decrementDirtyPages() {
+        if (metricsEnabled)
+            dirtyPages.decrement();
+    }
 
-        assert rotateStep < subInts;
+    /**
+     * Resets dirtyPages counter to zero.
+     */
+    public void resetDirtyPages() {
+        if (metricsEnabled)
+            dirtyPages.reset();
+    }
 
-        int nextIdx = (idx + rotateStep) % subInts;
+    /**
+     * Increments totalAllocatedPages counter.
+     */
+    public void incrementTotalAllocatedPages() {
+        if (metricsEnabled) {
+            totalAllocatedPages.increment();
 
-        return counterIdx.compareAndSet(idx, nextIdx);
+            updateAllocationRateMetrics();
+        }
     }
 
     /**
      *
      */
-    private void resetAll() {
-        LongAdder8[] cntrs = allocRateCounters;
-
-        for (LongAdder8 cntr : cntrs)
-            cntr.reset();
+    private void updateAllocationRateMetrics() {
+        allocRate.onHit();
     }
 
     /**
-     * @param currIdx Current index.
-     * @param resettingCntrs Resetting allocRateCounters.
+     * @param intervalNum Interval number.
      */
-    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();
-        }
+    private long subInt(int intervalNum) {
+        return (rateTimeInterval * intervalNum) / subInts;
     }
 
     /**
@@ -277,10 +234,27 @@ public class MemoryMetricsImpl implements MemoryMetrics {
     }
 
     /**
+     * @param persistenceEnabled Persistence enabled.
+     */
+    public void persistenceEnabled(boolean persistenceEnabled) {
+        this.persistenceEnabled = persistenceEnabled;
+    }
+
+    /**
+     * @param pageMem Page mem.
+     */
+    public void pageMemory(PageMemory pageMem) {
+        this.pageMem = pageMem;
+    }
+
+    /**
      * @param rateTimeInterval Time interval (in milliseconds) used to 
calculate allocation/eviction rate.
      */
     public void rateTimeInterval(long rateTimeInterval) {
         this.rateTimeInterval = rateTimeInterval;
+
+        allocRate = new HitRateMetrics((int) rateTimeInterval, subInts);
+        pageReplaceRate = new HitRateMetrics((int) rateTimeInterval, subInts);
     }
 
     /**
@@ -297,13 +271,8 @@ public class MemoryMetricsImpl implements MemoryMetrics {
         if (rateTimeInterval / subInts < 10)
             subInts = (int) rateTimeInterval / 10;
 
-        LongAdder8[] newCounters = new LongAdder8[subInts];
-
-        for (int i = 0; i < subInts; i++)
-            newCounters[i] = new LongAdder8();
-
-        this.subInts = subInts;
-        allocRateCounters = newCounters;
+        allocRate = new HitRateMetrics((int) rateTimeInterval, subInts);
+        pageReplaceRate = new HitRateMetrics((int) rateTimeInterval, subInts);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsMXBeanImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsMXBeanImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsMXBeanImpl.java
index d3ae378..b53db4b 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsMXBeanImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/MemoryMetricsMXBeanImpl.java
@@ -67,6 +67,21 @@ class MemoryMetricsMXBeanImpl implements MemoryMetricsMXBean 
{
     }
 
     /** {@inheritDoc} */
+    @Override public long getDirtyPages() {
+        return memMetrics.getDirtyPages();
+    }
+
+    /** {@inheritDoc} */
+    @Override public float getPagesReplaceRate() {
+        return memMetrics.getPagesReplaceRate();
+    }
+
+    /** {@inheritDoc} */
+    @Override public long getPhysicalMemoryPages() {
+        return memMetrics.getPhysicalMemoryPages();
+    }
+
+    /** {@inheritDoc} */
     @Override public void rateTimeInterval(long rateTimeInterval) {
         if (rateTimeInterval < 1000)
             throw new IllegalArgumentException("rateTimeInterval property must 
be positive " +

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/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
index 5f337bd..f4874eb 100644
--- 
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
@@ -41,6 +41,15 @@ public class MemoryMetricsSnapshot implements MemoryMetrics {
     /** */
     private float pagesFillFactor;
 
+    /** */
+    private long dirtyPages;
+
+    /** */
+    private float pageReplaceRate;
+
+    /** */
+    private long physicalMemoryPages;
+
     /**
      * @param metrics Metrics instance to take a copy.
      */
@@ -51,6 +60,9 @@ public class MemoryMetricsSnapshot implements MemoryMetrics {
         evictionRate = metrics.getEvictionRate();
         largeEntriesPagesPercentage = metrics.getLargeEntriesPagesPercentage();
         pagesFillFactor = metrics.getPagesFillFactor();
+        dirtyPages = metrics.getDirtyPages();
+        pageReplaceRate = metrics.getPagesReplaceRate();
+        physicalMemoryPages = metrics.getPhysicalMemoryPages();
     }
 
     /** {@inheritDoc} */
@@ -82,4 +94,19 @@ public class MemoryMetricsSnapshot implements MemoryMetrics {
     @Override public float getPagesFillFactor() {
         return pagesFillFactor;
     }
+
+    /** {@inheritDoc} */
+    @Override public long getDirtyPages() {
+        return dirtyPages;
+    }
+
+    /** {@inheritDoc} */
+    @Override public float getPagesReplaceRate() {
+        return pageReplaceRate;
+    }
+
+    /** {@inheritDoc} */
+    @Override public long getPhysicalMemoryPages() {
+        return physicalMemoryPages;
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/PersistentStoreMetricsImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/PersistentStoreMetricsImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/PersistentStoreMetricsImpl.java
new file mode 100644
index 0000000..dc1a1ba
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/PersistentStoreMetricsImpl.java
@@ -0,0 +1,94 @@
+/*
+ * 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.PersistentStoreMetrics;
+import org.apache.ignite.internal.processors.cache.ratemetrics.HitRateMetrics;
+
+/**
+ *
+ */
+public class PersistentStoreMetricsImpl implements PersistentStoreMetrics {
+    /** */
+    private volatile long lastWalFsyncTime;
+
+    /** */
+    private volatile HitRateMetrics walLoggingRate = new 
HitRateMetrics(60_000, 5);
+
+    private volatile long rateTimeInterval;
+
+    /** */
+    private volatile boolean metricsEnabled;
+
+    /** {@inheritDoc} */
+    @Override public float getWalLoggingRate() {
+        if (!metricsEnabled)
+            return 0;
+
+        return ((float) walLoggingRate.getRate()) / rateTimeInterval;
+    }
+
+    /** {@inheritDoc} */
+    @Override public int getWalArchiveSegments() {
+        return 0;
+    }
+
+    /** {@inheritDoc} */
+    @Override public float getWalFsyncTime() {
+        if (!metricsEnabled)
+            return 0;
+
+        return lastWalFsyncTime;
+    }
+
+    public void setLastWalFsyncTime(long lastWalFsyncTime) {
+        if (metricsEnabled)
+            this.lastWalFsyncTime = lastWalFsyncTime;
+    }
+
+    /** {@inheritDoc} */
+    @Override public float getCheckpointingTime() {
+        return 0;
+    }
+
+    /** {@inheritDoc} */
+    @Override public float getCheckpointingFsyncTime() {
+        return 0;
+    }
+
+    /** {@inheritDoc} */
+    @Override public long getCheckpointingTotalPagesNumber() {
+        return 0;
+    }
+
+    /** {@inheritDoc} */
+    @Override public long[] getCheckpointingPagesByTypeNumber() {
+        return new long[0];
+    }
+
+    /** {@inheritDoc} */
+    @Override public long getCheckpointingCopiedOnWritePagesNumber() {
+        return 0;
+    }
+
+    /**
+     * @return {@code true} if collecting metrics is enabled.
+     */
+    public boolean metricsEnabled() {
+        return metricsEnabled;
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/PersistentStoreMetricsSnapshot.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/PersistentStoreMetricsSnapshot.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/PersistentStoreMetricsSnapshot.java
new file mode 100644
index 0000000..2e60da0
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/PersistentStoreMetricsSnapshot.java
@@ -0,0 +1,118 @@
+/*
+ * 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.PersistentStoreMetrics;
+
+/**
+ *
+ */
+public class PersistentStoreMetricsSnapshot implements PersistentStoreMetrics {
+    /** */
+    private float walLoggingRate;
+
+    /** */
+    private int walArchiveSegments;
+
+    /** */
+    private float walFsyncTime;
+
+    /** */
+    private float checkpointingTime;
+
+    /** */
+    private float checkpointingFsyncTime;
+
+    /** */
+    private long checkpoiningTotalPagesNum;
+
+    /** */
+    private long[] checkpointingPagesByTypeNum;
+
+    /** */
+    private long checkpointingCopiedOnWritePagesNum;
+
+    /**
+     * @param metrics Metrics.
+     */
+    public PersistentStoreMetricsSnapshot(PersistentStoreMetrics metrics) {
+        walLoggingRate = metrics.getWalLoggingRate();
+        walArchiveSegments = metrics.getWalArchiveSegments();
+        walFsyncTime = metrics.getWalFsyncTime();
+        checkpointingTime = metrics.getCheckpointingTime();
+        checkpointingFsyncTime = metrics.getCheckpointingFsyncTime();
+        checkpoiningTotalPagesNum = metrics.getCheckpointingTotalPagesNumber();
+        checkpointingPagesByTypeNum = 
metrics.getCheckpointingPagesByTypeNumber();
+        checkpointingCopiedOnWritePagesNum = 
metrics.getCheckpointingCopiedOnWritePagesNumber();
+    }
+
+    /**
+     *
+     */
+    public float getWalLoggingRate() {
+        return walLoggingRate;
+    }
+
+    /**
+     *
+     */
+    public int getWalArchiveSegments() {
+        return walArchiveSegments;
+    }
+
+    /**
+     *
+     */
+    public float getWalFsyncTime() {
+        return walFsyncTime;
+    }
+
+    /**
+     *
+     */
+    public float getCheckpointingTime() {
+        return checkpointingTime;
+    }
+
+    /**
+     *
+     */
+    public float getCheckpointingFsyncTime() {
+        return checkpointingFsyncTime;
+    }
+
+    /**
+     *
+     */
+    public long getCheckpointingTotalPagesNumber() {
+        return checkpoiningTotalPagesNum;
+    }
+
+    /**
+     *
+     */
+    public long[] getCheckpointingPagesByTypeNumber() {
+        return checkpointingPagesByTypeNum;
+    }
+
+    /**
+     *
+     */
+    public long getCheckpointingCopiedOnWritePagesNumber() {
+        return checkpointingCopiedOnWritePagesNum;
+    }
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/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 d0900f6..4d6c96a 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
@@ -73,6 +73,18 @@ public interface MemoryMetricsMXBean extends MemoryMetrics {
     @MXBeanDescription("Percentage of space that is still free and can be 
filled in.")
     @Override public float getPagesFillFactor();
 
+    /** {@inheritDoc} */
+    @MXBeanDescription("Number of pages in memory not yet synchronized with 
persistent storage.")
+    @Override public long getDirtyPages();
+
+    /** {@inheritDoc} */
+    @MXBeanDescription("Rate at which pages in memory are replaced with pages 
from persistent storage (pages per second).")
+    @Override public float getPagesReplaceRate();
+
+    /** {@inheritDoc} */
+    @MXBeanDescription("Number of pages residing in physical RAM.")
+    @Override public long getPhysicalMemoryPages();
+
     /**
      * Enables memory metrics collection on an Apache Ignite node.
      */

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MemoryMetricsSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MemoryMetricsSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MemoryMetricsSelfTest.java
index 706e717..3a99cb2 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MemoryMetricsSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/MemoryMetricsSelfTest.java
@@ -66,7 +66,9 @@ public class MemoryMetricsSelfTest extends 
GridCommonAbstractTest {
 
         joinAllThreads();
 
-        assertEquals(4, watcher.rateDropsCntr);
+        assertTrue(watcher.rateDropsCntr > 3);
+
+        assertTrue(watcher.rateDropsCntr < 6);
     }
 
     /**
@@ -87,7 +89,9 @@ public class MemoryMetricsSelfTest extends 
GridCommonAbstractTest {
 
         joinAllocationThreads();
 
-        assertEquals(4, watcher.rateDropsCntr);
+        assertTrue(watcher.rateDropsCntr > 3);
+
+        assertTrue(watcher.rateDropsCntr < 6);
 
         sleep(3);
 
@@ -150,7 +154,7 @@ public class MemoryMetricsSelfTest extends 
GridCommonAbstractTest {
         for (int i = 0; i < 10; i++) {
             Thread.sleep(25);
 
-            memMetrics.subIntervals((2 + i * 5) % 3 + 1);
+            memMetrics.subIntervals((2 + i * 5) % 3 + 2);
         }
 
         joinAllThreads();

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsIgniteMock.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsIgniteMock.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsIgniteMock.java
index b4fcc70..b0e5c26 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsIgniteMock.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/processors/igfs/IgfsIgniteMock.java
@@ -39,6 +39,7 @@ import org.apache.ignite.IgniteServices;
 import org.apache.ignite.IgniteSet;
 import org.apache.ignite.IgniteTransactions;
 import org.apache.ignite.MemoryMetrics;
+import org.apache.ignite.PersistentStoreMetrics;
 import org.apache.ignite.cache.affinity.Affinity;
 import org.apache.ignite.cluster.ClusterGroup;
 import org.apache.ignite.cluster.ClusterNode;
@@ -553,6 +554,13 @@ public class IgfsIgniteMock implements IgniteEx {
         return null;
     }
 
+    /** {@inheritDoc} */
+    @Override public PersistentStoreMetrics persistentStoreMetrics() {
+        throwUnsupported();
+
+        return null;
+    }
+
     /**
      * Throw {@link UnsupportedOperationException}.
      */

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
index 1f95dd9..59ebeb0 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
@@ -46,6 +46,7 @@ import org.apache.ignite.IgniteServices;
 import org.apache.ignite.IgniteSet;
 import org.apache.ignite.IgniteTransactions;
 import org.apache.ignite.MemoryMetrics;
+import org.apache.ignite.PersistentStoreMetrics;
 import org.apache.ignite.binary.BinaryObjectBuilder;
 import org.apache.ignite.binary.BinaryObjectException;
 import org.apache.ignite.cache.affinity.Affinity;
@@ -451,6 +452,11 @@ public class IgniteMock implements Ignite {
         return null;
     }
 
+    /** {@inheritDoc} */
+    @Override public PersistentStoreMetrics persistentStoreMetrics() {
+        return null;
+    }
+
     /**
      * @param staticCfg Configuration.
      */

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java
index f4dc491..9d42282 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/multijvm/IgniteProcessProxy.java
@@ -50,6 +50,7 @@ import org.apache.ignite.IgniteServices;
 import org.apache.ignite.IgniteSet;
 import org.apache.ignite.IgniteTransactions;
 import org.apache.ignite.MemoryMetrics;
+import org.apache.ignite.PersistentStoreMetrics;
 import org.apache.ignite.cache.affinity.Affinity;
 import org.apache.ignite.cluster.ClusterGroup;
 import org.apache.ignite.cluster.ClusterNode;
@@ -670,6 +671,11 @@ public class IgniteProcessProxy implements IgniteEx {
     }
 
     /** {@inheritDoc} */
+    @Override public PersistentStoreMetrics persistentStoreMetrics() {
+        throw new UnsupportedOperationException("Operation isn't supported 
yet.");
+    }
+
+    /** {@inheritDoc} */
     @Override public void close() throws IgniteException {
         if (locJvmGrid != null) {
             final CountDownLatch rmtNodeStoppedLatch = new CountDownLatch(1);

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/GridCacheDatabaseSharedManager.java
----------------------------------------------------------------------
diff --git 
a/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/GridCacheDatabaseSharedManager.java
 
b/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/GridCacheDatabaseSharedManager.java
index 0f75b0d..ed752e6 100755
--- 
a/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/GridCacheDatabaseSharedManager.java
+++ 
b/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/GridCacheDatabaseSharedManager.java
@@ -61,6 +61,7 @@ import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteLogger;
 import org.apache.ignite.IgniteSystemProperties;
+import org.apache.ignite.PersistentStoreMetrics;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.DataPageEvictionMode;
 import org.apache.ignite.configuration.IgniteConfiguration;
@@ -267,6 +268,9 @@ public class GridCacheDatabaseSharedManager extends 
IgniteCacheDatabaseSharedMan
     /** Snapshot manager. */
     private IgniteCacheSnapshotManager snapshotMgr;
 
+    /** */
+    private PersistentStoreMetricsImpl persStoreMetrics = new 
PersistentStoreMetricsImpl();
+
     /**
      * @param ctx Kernal context.
      */
@@ -574,7 +578,9 @@ public class GridCacheDatabaseSharedManager extends 
IgniteCacheDatabaseSharedMan
         MemoryPolicyConfiguration plcCfg,
         MemoryMetricsImpl memMetrics
     ) {
-        return new PageMemoryImpl(
+        memMetrics.persistenceEnabled(true);
+
+        PageMemoryImpl pageMem = new PageMemoryImpl(
             memProvider,
             calculateFragmentSizes(
                 memCfg.getConcurrencyLevel(),
@@ -593,17 +599,22 @@ public class GridCacheDatabaseSharedManager extends 
IgniteCacheDatabaseSharedMan
                     snapshotMgr.flushDirtyPageHandler(fullId, pageBuf, tag);
                 }
             },
-            new GridInClosure3X<Long,FullPageId, PageMemoryEx>() {
+            new GridInClosure3X<Long, FullPageId, PageMemoryEx>() {
                 @Override public void applyx(
                     Long page,
                     FullPageId fullId,
                     PageMemoryEx pageMem
                 ) throws IgniteCheckedException {
-                  snapshotMgr.onChangeTrackerPage(page,fullId,pageMem);
+                    snapshotMgr.onChangeTrackerPage(page, fullId, pageMem);
                 }
             },
-            this
+            this,
+            memMetrics
         );
+
+        memMetrics.pageMemory(pageMem);
+
+        return pageMem;
     }
 
     /** {@inheritDoc} */
@@ -3180,4 +3191,16 @@ public class GridCacheDatabaseSharedManager extends 
IgniteCacheDatabaseSharedMan
             return file.getAbsolutePath();
         }
     }
+
+    /** {@inheritDoc} */
+    @Override public PersistentStoreMetrics persistentStoreMetrics() {
+        return new PersistentStoreMetricsSnapshot(persStoreMetrics);
+    }
+
+    /**
+     *
+     */
+    public PersistentStoreMetricsImpl persistentStoreMetricsImpl() {
+        return persStoreMetrics;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/pagemem/PageMemoryImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/pagemem/PageMemoryImpl.java
 
b/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/pagemem/PageMemoryImpl.java
index c05af57..2c21bff 100755
--- 
a/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/pagemem/PageMemoryImpl.java
+++ 
b/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/pagemem/PageMemoryImpl.java
@@ -55,6 +55,7 @@ import 
org.apache.ignite.internal.pagemem.wal.record.delta.InitNewPageRecord;
 import org.apache.ignite.internal.pagemem.wal.record.delta.PageDeltaRecord;
 import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import 
org.apache.ignite.internal.processors.cache.database.CheckpointLockStateChecker;
+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.processors.cache.database.tree.io.TrackingPageIO;
 import 
org.apache.ignite.internal.processors.cache.database.wal.crc.IgniteDataIntegrityViolationException;
@@ -221,6 +222,9 @@ public class PageMemoryImpl implements PageMemoryEx {
     /** */
     private long[] sizes;
 
+    /** */
+    private MemoryMetricsImpl memMetrics;
+
     /**
      * @param directMemoryProvider Memory allocator to use.
      * @param sharedCtx Cache shared context.
@@ -235,7 +239,8 @@ public class PageMemoryImpl implements PageMemoryEx {
         int pageSize,
         GridInClosure3X<FullPageId, ByteBuffer, Integer> flushDirtyPage,
         GridInClosure3X<Long, FullPageId, PageMemoryEx> changeTracker,
-        CheckpointLockStateChecker stateChecker
+        CheckpointLockStateChecker stateChecker,
+        MemoryMetricsImpl memMetrics
     ) {
         assert sharedCtx != null;
 
@@ -257,6 +262,8 @@ public class PageMemoryImpl implements PageMemoryEx {
         sysPageSize = pageSize + PAGE_OVERHEAD;
 
         rwLock = new OffheapReadWriteLock(128);
+
+        this.memMetrics = memMetrics;
     }
 
     /** {@inheritDoc} */
@@ -555,6 +562,8 @@ public class PageMemoryImpl implements PageMemoryEx {
                     try {
                         ByteBuffer buf = wrapPointer(pageAddr, pageSize());
 
+                        memMetrics.updatePageReplaceRate();
+
                         storeMgr.read(cacheId, pageId, buf);
                     }
                     catch (IgniteDataIntegrityViolationException ignore) {
@@ -769,6 +778,8 @@ public class PageMemoryImpl implements PageMemoryEx {
             seg.dirtyPages = new GridConcurrentHashSet<>();
         }
 
+        memMetrics.resetDirtyPages();
+
         return new GridMultiCollectionWrapper<>(collections);
     }
 
@@ -1264,11 +1275,19 @@ public class PageMemoryImpl implements PageMemoryEx {
         boolean wasDirty = PageHeader.dirty(absPtr, dirty);
 
         if (dirty) {
-            if (!wasDirty || forceAdd)
-                segment(pageId.cacheId(), 
pageId.pageId()).dirtyPages.add(pageId);
+            if (!wasDirty || forceAdd) {
+                boolean added = segment(pageId.cacheId(), 
pageId.pageId()).dirtyPages.add(pageId);
+
+                if (added)
+                    memMetrics.incrementDirtyPages();
+            }
+        }
+        else {
+            boolean rmv = segment(pageId.cacheId(), 
pageId.pageId()).dirtyPages.remove(pageId);
+
+            if (rmv)
+                memMetrics.decrementDirtyPages();
         }
-        else
-            segment(pageId.cacheId(), 
pageId.pageId()).dirtyPages.remove(pageId);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/wal/FileWriteAheadLogManager.java
----------------------------------------------------------------------
diff --git 
a/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/wal/FileWriteAheadLogManager.java
 
b/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/wal/FileWriteAheadLogManager.java
index f8b18ef..a342eb7 100644
--- 
a/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/wal/FileWriteAheadLogManager.java
+++ 
b/modules/pds/src/main/java/org/apache/ignite/internal/processors/cache/database/wal/FileWriteAheadLogManager.java
@@ -192,7 +192,6 @@ public class FileWriteAheadLogManager extends 
GridCacheSharedManagerAdapter impl
         assert dbCfg != null : "WAL should not be created if persistence is 
disabled.";
 
         this.dbCfg = dbCfg;
-        this.igCfg = igCfg;
 
         maxWalSegmentSize = dbCfg.getWalSegmentSize();
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/BPlusTreeReuseListPageMemoryImplSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/BPlusTreeReuseListPageMemoryImplSelfTest.java
 
b/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/BPlusTreeReuseListPageMemoryImplSelfTest.java
index 4cfc14f..b533ed1 100644
--- 
a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/BPlusTreeReuseListPageMemoryImplSelfTest.java
+++ 
b/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/BPlusTreeReuseListPageMemoryImplSelfTest.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.cache.database.pagemem;
 
 import java.nio.ByteBuffer;
+import org.apache.ignite.configuration.MemoryPolicyConfiguration;
 import org.apache.ignite.internal.mem.DirectMemoryProvider;
 import org.apache.ignite.internal.mem.unsafe.UnsafeMemoryProvider;
 import org.apache.ignite.internal.pagemem.FullPageId;
@@ -25,6 +26,7 @@ import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import 
org.apache.ignite.internal.processors.cache.database.CheckpointLockStateChecker;
 import 
org.apache.ignite.internal.processors.cache.database.IgniteCacheDatabaseSharedManager;
+import org.apache.ignite.internal.processors.cache.database.MemoryMetricsImpl;
 import 
org.apache.ignite.internal.processors.cache.database.pagemem.PageMemoryEx;
 import 
org.apache.ignite.internal.processors.cache.database.pagemem.PageMemoryImpl;
 import 
org.apache.ignite.internal.processors.cache.database.wal.FileWriteAheadLogManager;
@@ -96,7 +98,9 @@ public class BPlusTreeReuseListPageMemoryImplSelfTest extends 
BPlusTreeReuseSelf
                 @Override public boolean checkpointLockIsHeldByThread() {
                     return true;
                 }
-            });
+            },
+            new MemoryMetricsImpl(new MemoryPolicyConfiguration())
+        );
 
         mem.start();
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/BPlusTreeSelfTestPageMemoryImplSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/BPlusTreeSelfTestPageMemoryImplSelfTest.java
 
b/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/BPlusTreeSelfTestPageMemoryImplSelfTest.java
index 82b2de4..1eab1f8 100644
--- 
a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/BPlusTreeSelfTestPageMemoryImplSelfTest.java
+++ 
b/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/BPlusTreeSelfTestPageMemoryImplSelfTest.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.cache.database.pagemem;
 
 import java.nio.ByteBuffer;
+import org.apache.ignite.configuration.MemoryPolicyConfiguration;
 import org.apache.ignite.internal.mem.DirectMemoryProvider;
 import org.apache.ignite.internal.mem.unsafe.UnsafeMemoryProvider;
 import org.apache.ignite.internal.pagemem.FullPageId;
@@ -25,6 +26,7 @@ import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import 
org.apache.ignite.internal.processors.cache.database.CheckpointLockStateChecker;
 import 
org.apache.ignite.internal.processors.cache.database.IgniteCacheDatabaseSharedManager;
+import org.apache.ignite.internal.processors.cache.database.MemoryMetricsImpl;
 import 
org.apache.ignite.internal.processors.cache.database.pagemem.PageMemoryEx;
 import 
org.apache.ignite.internal.processors.cache.database.pagemem.PageMemoryImpl;
 import 
org.apache.ignite.internal.processors.cache.database.wal.FileWriteAheadLogManager;
@@ -96,7 +98,8 @@ public class BPlusTreeSelfTestPageMemoryImplSelfTest extends 
BPlusTreeSelfTest {
                 @Override public boolean checkpointLockIsHeldByThread() {
                     return true;
                 }
-            });
+            },
+            new MemoryMetricsImpl(new MemoryPolicyConfiguration()));
 
         mem.start();
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/MetadataStoragePageMemoryImplSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/MetadataStoragePageMemoryImplSelfTest.java
 
b/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/MetadataStoragePageMemoryImplSelfTest.java
index 11e0386..c9c6c18 100644
--- 
a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/MetadataStoragePageMemoryImplSelfTest.java
+++ 
b/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/MetadataStoragePageMemoryImplSelfTest.java
@@ -19,6 +19,7 @@ package org.apache.ignite.cache.database.pagemem;
 
 import java.io.File;
 import java.nio.ByteBuffer;
+import org.apache.ignite.configuration.MemoryPolicyConfiguration;
 import org.apache.ignite.internal.mem.DirectMemoryProvider;
 import org.apache.ignite.internal.mem.file.MappedFileMemoryProvider;
 import org.apache.ignite.internal.pagemem.FullPageId;
@@ -26,6 +27,7 @@ import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import 
org.apache.ignite.internal.processors.cache.database.CheckpointLockStateChecker;
 import 
org.apache.ignite.internal.processors.cache.database.IgniteCacheDatabaseSharedManager;
+import org.apache.ignite.internal.processors.cache.database.MemoryMetricsImpl;
 import 
org.apache.ignite.internal.processors.cache.database.pagemem.PageMemoryEx;
 import 
org.apache.ignite.internal.processors.cache.database.pagemem.PageMemoryImpl;
 import org.apache.ignite.internal.processors.database.MetadataStorageSelfTest;
@@ -96,6 +98,7 @@ public class MetadataStoragePageMemoryImplSelfTest extends 
MetadataStorageSelfTe
                 @Override public boolean checkpointLockIsHeldByThread() {
                     return true;
                 }
-            });
+            },
+            new MemoryMetricsImpl(new MemoryPolicyConfiguration()));
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/PageMemoryImplNoLoadSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/PageMemoryImplNoLoadSelfTest.java
 
b/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/PageMemoryImplNoLoadSelfTest.java
index 141ce82..8ff5345 100644
--- 
a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/PageMemoryImplNoLoadSelfTest.java
+++ 
b/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/PageMemoryImplNoLoadSelfTest.java
@@ -19,6 +19,7 @@ package org.apache.ignite.cache.database.pagemem;
 
 import java.io.File;
 import java.nio.ByteBuffer;
+import org.apache.ignite.configuration.MemoryPolicyConfiguration;
 import org.apache.ignite.internal.mem.DirectMemoryProvider;
 import org.apache.ignite.internal.mem.file.MappedFileMemoryProvider;
 import org.apache.ignite.internal.pagemem.FullPageId;
@@ -26,6 +27,7 @@ import org.apache.ignite.internal.pagemem.PageMemory;
 import org.apache.ignite.internal.pagemem.impl.PageMemoryNoLoadSelfTest;
 import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import 
org.apache.ignite.internal.processors.cache.database.CheckpointLockStateChecker;
+import org.apache.ignite.internal.processors.cache.database.MemoryMetricsImpl;
 import 
org.apache.ignite.internal.processors.cache.database.pagemem.PageMemoryEx;
 import 
org.apache.ignite.internal.processors.cache.database.pagemem.PageMemoryImpl;
 import org.apache.ignite.internal.util.lang.GridInClosure3X;
@@ -87,7 +89,8 @@ public class PageMemoryImplNoLoadSelfTest extends 
PageMemoryNoLoadSelfTest {
                 @Override public boolean checkpointLockIsHeldByThread() {
                     return true;
                 }
-            });
+            },
+            new MemoryMetricsImpl(new MemoryPolicyConfiguration()));
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/80d77c4a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/PageMemoryImplTest.java
----------------------------------------------------------------------
diff --git 
a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/PageMemoryImplTest.java
 
b/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/PageMemoryImplTest.java
index bbcd383..b5e4549 100644
--- 
a/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/PageMemoryImplTest.java
+++ 
b/modules/pds/src/test/java/org/apache/ignite/cache/database/pagemem/PageMemoryImplTest.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.cache.database.pagemem;
 
 import java.nio.ByteBuffer;
+import org.apache.ignite.configuration.MemoryPolicyConfiguration;
 import org.apache.ignite.internal.mem.DirectMemoryProvider;
 import org.apache.ignite.internal.mem.IgniteOutOfMemoryException;
 import org.apache.ignite.internal.mem.unsafe.UnsafeMemoryProvider;
@@ -26,6 +27,7 @@ import org.apache.ignite.internal.pagemem.PageIdAllocator;
 import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
 import 
org.apache.ignite.internal.processors.cache.database.CheckpointLockStateChecker;
 import 
org.apache.ignite.internal.processors.cache.database.IgniteCacheDatabaseSharedManager;
+import org.apache.ignite.internal.processors.cache.database.MemoryMetricsImpl;
 import 
org.apache.ignite.internal.processors.cache.database.pagemem.PageMemoryEx;
 import 
org.apache.ignite.internal.processors.cache.database.pagemem.PageMemoryImpl;
 import org.apache.ignite.internal.util.lang.GridInClosure3X;
@@ -109,7 +111,8 @@ public class PageMemoryImplTest extends 
GridCommonAbstractTest {
                 @Override public boolean checkpointLockIsHeldByThread() {
                     return true;
                 }
-            });
+            },
+            new MemoryMetricsImpl(new MemoryPolicyConfiguration()));
 
         mem.start();
 

Reply via email to