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();
