You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2017/09/18 14:02:51 UTC

ignite git commit: IGNITE-6210 Fixed inefficient memory consumption by checkpoint buffer. This closes #2536

Repository: ignite
Updated Branches:
  refs/heads/master 0dd975512 -> 858c1df1c


IGNITE-6210 Fixed inefficient memory consumption by checkpoint buffer. This closes #2536


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

Branch: refs/heads/master
Commit: 858c1df1c5af2e9ba03de61e1e78c990e0283c7c
Parents: 0dd9755
Author: Dmitriy Govorukhin <dm...@gmail.com>
Authored: Mon Sep 18 17:02:14 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Mon Sep 18 17:02:14 2017 +0300

----------------------------------------------------------------------
 .../GridCacheDatabaseSharedManager.java            | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/858c1df1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
index 5e84048..5a772b5 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/GridCacheDatabaseSharedManager.java
@@ -628,7 +628,7 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan
     }
 
     /** */
-    private long[] calculateFragmentSizes(int concLvl, long cacheSize) {
+    private long[] calculateFragmentSizes(int concLvl, long cacheSize, long chpBufSize) {
         if (concLvl < 2)
             concLvl = Runtime.getRuntime().availableProcessors();
 
@@ -642,7 +642,7 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan
         for (int i = 0; i < concLvl; i++)
             sizes[i] = fragmentSize;
 
-        sizes[concLvl] = checkpointPageBufSize;
+        sizes[concLvl] = chpBufSize;
 
         return sizes;
     }
@@ -656,11 +656,22 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan
     ) {
         memMetrics.persistenceEnabled(true);
 
+        long cacheSize = plcCfg.getMaxSize();
+
+        // Checkpoint buffer size can not be greater than cache size, it does not make sense.
+        long chpBufSize = Math.min(checkpointPageBufSize, cacheSize);
+
+        if (checkpointPageBufSize > cacheSize)
+            U.quietAndInfo(log,
+                "Checkpoint page buffer size is too big, setting to an adjusted cache size [size="
+                    + U.readableSize(cacheSize, false) + ",  memPlc=" + plcCfg.getName() + ']');
+
         PageMemoryImpl pageMem = new PageMemoryImpl(
             memProvider,
             calculateFragmentSizes(
                 memCfg.getConcurrencyLevel(),
-                plcCfg.getMaxSize()
+                cacheSize,
+                chpBufSize
             ),
             cctx,
             memCfg.getPageSize(),