/** {@inheritDoc} */ @Override public long getPhysicalMemoryPages() { if (!persistenceEnabled) return getTotalAllocatedPages(); if (!metricsEnabled) return 0; assert pageMem != null; return pageMem.loadedPages(); }
/** {@inheritDoc} */ @Override public long getOffheapUsedSize() { if (!metricsEnabled) return 0; return pageMem.loadedPages() * pageMem.systemPageSize(); }
long pagesCnt = region.pageMemory().loadedPages();
/** * See {@link GridCacheMapEntry#ensureFreeSpace()} * * @param memPlc data region. */ public void ensureFreeSpace(DataRegion memPlc) throws IgniteCheckedException { if (memPlc == null) return; DataRegionConfiguration plcCfg = memPlc.config(); if (plcCfg.getPageEvictionMode() == DataPageEvictionMode.DISABLED || plcCfg.isPersistenceEnabled()) return; long memorySize = plcCfg.getMaxSize(); PageMemory pageMem = memPlc.pageMemory(); int sysPageSize = pageMem.systemPageSize(); CacheFreeListImpl freeListImpl = freeListMap.get(plcCfg.getName()); for (;;) { long allocatedPagesCnt = pageMem.loadedPages(); int emptyDataPagesCnt = freeListImpl.emptyDataPages(); boolean shouldEvict = allocatedPagesCnt > (memorySize / sysPageSize * plcCfg.getEvictionThreshold()) && emptyDataPagesCnt < plcCfg.getEmptyPagesPoolSize(); if (shouldEvict) { warnFirstEvict(plcCfg); memPlc.evictionTracker().evictDataPage(); memPlc.memoryMetrics().updateEvictionRate(); } else break; } }
/** * Callback to check the current state. * * @param cache Cache instance. * @throws Exception If failed. */ protected final void check(IgniteCache cache) throws Exception { long pagesActual = ((IgniteCacheProxy)cache).context().dataRegion().pageMemory().loadedPages(); if (loadedPages > 0) { delta += pagesActual - loadedPages; int allowedDelta = pagesDelta(); if (probeCnt++ > 12) { // We need some statistic first. Minimal statistic is taken for a minute. long actualDelta = delta / probeCnt; assertTrue( "Average growth pages in the number is more than expected [allowed=" + allowedDelta + ", actual=" + actualDelta + "]", actualDelta <= allowedDelta); } } long pagesAllowed = pagesMax(); assertTrue("Allocated pages count is more than expected [allowed=" + pagesAllowed + ", actual=" + pagesActual + "]", pagesActual < pagesAllowed); loadedPages = pagesActual; }
/** * @throws Exception If failed. */ @Test public void testLoadedPagesCount() throws Exception { PageMemory mem = memory(); mem.start(); int expPages = MAX_MEMORY_SIZE / mem.systemPageSize(); try { for (int i = 0; i < expPages * 2; i++) allocatePage(mem); } catch (IgniteOutOfMemoryException e) { e.printStackTrace(); // Expected. assertEquals(mem.loadedPages(), expPages); } finally { mem.stop(true); } }
/** * @throws Exception If failed. */ @Test public void testAllocatedMemory() throws Exception { IgniteEx ignite = grid(); final IgniteCache cache = ignite.getOrCreateCache(CACHE_NAME); DataRegion dataRegion = getDefaultDataRegion(ignite); DataRegionMetricsImpl memMetrics = dataRegion.memoryMetrics(); memMetrics.enableMetrics(); int pageSize = getPageSize(ignite); assertEquals(dataRegion.pageMemory().loadedPages(), memMetrics.getTotalAllocatedPages()); fillCache(cache); assertTrue(memMetrics.getTotalAllocatedPages() * pageSize > MAX_VALS_AMOUNT * VAL_SIZE); }
/** {@inheritDoc} */ @Override public long getOffheapUsedSize() { if (!metricsEnabled) return 0; return pageMem.loadedPages() * pageMem.systemPageSize(); }
/** {@inheritDoc} */ @Override public long getPhysicalMemoryPages() { if (!persistenceEnabled) return getTotalAllocatedPages(); if (!metricsEnabled) return 0; assert pageMem != null; return pageMem.loadedPages(); }
long pagesCnt = region.pageMemory().loadedPages();
/** * See {@link GridCacheMapEntry#ensureFreeSpace()} * * @param memPlc data region. */ public void ensureFreeSpace(DataRegion memPlc) throws IgniteCheckedException { if (memPlc == null) return; DataRegionConfiguration plcCfg = memPlc.config(); if (plcCfg.getPageEvictionMode() == DataPageEvictionMode.DISABLED || plcCfg.isPersistenceEnabled()) return; long memorySize = plcCfg.getMaxSize(); PageMemory pageMem = memPlc.pageMemory(); int sysPageSize = pageMem.systemPageSize(); CacheFreeListImpl freeListImpl = freeListMap.get(plcCfg.getName()); for (;;) { long allocatedPagesCnt = pageMem.loadedPages(); int emptyDataPagesCnt = freeListImpl.emptyDataPages(); boolean shouldEvict = allocatedPagesCnt > (memorySize / sysPageSize * plcCfg.getEvictionThreshold()) && emptyDataPagesCnt < plcCfg.getEmptyPagesPoolSize(); if (shouldEvict) { warnFirstEvict(plcCfg); memPlc.evictionTracker().evictDataPage(); memPlc.memoryMetrics().updateEvictionRate(); } else break; } }