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/10/30 12:26:59 UTC

[05/23] ignite git commit: IGNITE-6748 Moved checkpoint buffer size to DataRegionConfiguration

IGNITE-6748 Moved checkpoint buffer size to DataRegionConfiguration


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

Branch: refs/heads/ignite-6748
Commit: 8266a98127d000fc4ec3ee71c05ed9671e90f70e
Parents: 2d0e91e
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Thu Oct 26 10:16:35 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Thu Oct 26 10:16:35 2017 +0300

----------------------------------------------------------------------
 .../configuration/DataRegionConfiguration.java  | 34 +++++++++-
 .../configuration/DataStorageConfiguration.java | 29 --------
 .../MemoryPolicyConfiguration.java              | 23 -------
 .../org/apache/ignite/internal/IgnitionEx.java  | 13 ++--
 .../discovery/GridDiscoveryManager.java         |  8 ++-
 .../GridCacheDatabaseSharedManager.java         | 71 +++++++-------------
 .../utils/PlatformConfigurationUtils.java       |  6 +-
 .../node/VisorDataRegionConfiguration.java      | 13 ++++
 .../node/VisorDataStorageConfiguration.java     |  3 +-
 .../node/VisorPersistentStoreConfiguration.java |  1 -
 .../persistence/db/wal/IgnitePdsWalTlbTest.java |  7 +-
 .../pagemem/PagesWriteThrottleSandboxTest.java  |  2 +-
 .../pagemem/PagesWriteThrottleSmokeTest.java    |  2 +-
 .../Config/full-config.xml                      |  6 +-
 .../IgniteConfigurationSerializerTest.cs        |  6 +-
 .../IgniteConfigurationTest.cs                  |  6 +-
 .../Configuration/DataRegionConfiguration.cs    |  8 +++
 .../Configuration/DataStorageConfiguration.cs   |  9 ---
 .../IgniteConfigurationSection.xsd              | 15 +++--
 modules/web-console/backend/app/mongo.js        |  6 +-
 .../generator/ConfigurationGenerator.js         |  5 +-
 .../generator/defaults/Cluster.service.js       |  3 +-
 .../configuration/clusters/data-storage.pug     |  6 ++
 23 files changed, 134 insertions(+), 148 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/core/src/main/java/org/apache/ignite/configuration/DataRegionConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/DataRegionConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/DataRegionConfiguration.java
index 50edf5c..4ae87e3 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/DataRegionConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/DataRegionConfiguration.java
@@ -129,6 +129,9 @@ public final class DataRegionConfiguration implements Serializable {
      */
     private boolean persistenceEnabled = false;
 
+    /** Temporary buffer size for checkpoints in bytes. */
+    private long checkpointPageBufSize;
+
     /**
      * Gets data region name.
      *
@@ -212,11 +215,11 @@ public final class DataRegionConfiguration implements Serializable {
     /**
      * Sets a path to the memory-mapped files.
      *
-     * @param swapFilePath A Path to the memory mapped file.
+     * @param swapPath A Path to the memory mapped file.
      * @return {@code this} for chaining.
      */
-    public DataRegionConfiguration setSwapPath(String swapFilePath) {
-        this.swapPath = swapFilePath;
+    public DataRegionConfiguration setSwapPath(String swapPath) {
+        this.swapPath = swapPath;
 
         return this;
     }
@@ -403,4 +406,29 @@ public final class DataRegionConfiguration implements Serializable {
 
         return this;
     }
+
+    /**
+     * Gets amount of memory allocated for a checkpoint temporary buffer.
+     *
+     * @return Checkpoint page buffer size in bytes or {@code 0} for Ignite
+     *      to choose the buffer size automatically.
+     */
+    public long getCheckpointPageBufferSize() {
+        return checkpointPageBufSize;
+    }
+
+    /**
+     * Sets amount of memory allocated for the checkpoint temporary buffer. The buffer is used to create temporary
+     * copies of pages that are being written to disk and being update in parallel while the checkpoint is in
+     * progress.
+     *
+     * @param checkpointPageBufSize Checkpoint page buffer size in bytes or {@code 0} for Ignite to
+     *      choose the buffer size automatically.
+     * @return {@code this} for chaining.
+     */
+    public DataRegionConfiguration setCheckpointPageBufferSize(long checkpointPageBufSize) {
+        this.checkpointPageBufSize = checkpointPageBufSize;
+
+        return this;
+    }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
index bd314ab..8202ef8 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/DataStorageConfiguration.java
@@ -173,9 +173,6 @@ public class DataStorageConfiguration implements Serializable {
     private long lockWaitTime = DFLT_LOCK_WAIT_TIME;
 
     /** */
-    private long checkpointPageBufSize;
-
-    /** */
     private int checkpointThreads = DFLT_CHECKPOINT_THREADS;
 
     /** Checkpoint write order. */
@@ -425,32 +422,6 @@ public class DataStorageConfiguration implements Serializable {
     }
 
     /**
-     * Gets amount of memory allocated for a checkpoint temporary buffer.
-     *
-     * @return Checkpoint page buffer size in bytes or {@code 0} for Ignite
-     *      to choose the buffer size automatically.
-     */
-    public long getCheckpointPageBufferSize() {
-        return checkpointPageBufSize;
-    }
-
-    /**
-     * Sets amount of memory allocated for the checkpoint temporary buffer. The buffer is used to create temporary
-     * copies of pages that are being written to disk and being update in parallel while the checkpoint is in
-     * progress.
-     *
-     * @param checkpointPageBufSize Checkpoint page buffer size in bytes or {@code 0} for Ignite to
-     *      choose the buffer size automatically.
-     * @return {@code this} for chaining.
-     */
-    public DataStorageConfiguration setCheckpointPageBufferSize(long checkpointPageBufSize) {
-        this.checkpointPageBufSize = checkpointPageBufSize;
-
-        return this;
-    }
-
-
-    /**
      * Gets a number of threads to use for the checkpoint purposes.
      *
      * @return Number of checkpoint threads.

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java
index efe7ae2..a1a822f 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/MemoryPolicyConfiguration.java
@@ -124,11 +124,6 @@ public final class MemoryPolicyConfiguration implements Serializable {
     private long rateTimeInterval = DFLT_RATE_TIME_INTERVAL_MILLIS;
 
     /**
-     * Flag to enable Ignite Native Persistence.
-     */
-    private boolean persistenceEnabled = true;
-
-    /**
      * Gets memory policy name.
      *
      * @return Memory policy name.
@@ -320,24 +315,6 @@ public final class MemoryPolicyConfiguration implements Serializable {
     }
 
     /**
-     * Gets whether Ignite Native Persistence is enabled for this memory policy.
-     *
-     * @return Persistence enabled flag.
-     */
-    public boolean isPersistenceEnabled() {
-        return persistenceEnabled;
-    }
-
-    /**
-     * Sets persistence enabled flag.
-     *
-     * @param persistenceEnabled Persistence enabled flag.
-     */
-    public void setPersistenceEnabled(boolean persistenceEnabled) {
-        this.persistenceEnabled = persistenceEnabled;
-    }
-
-    /**
      * Gets time interval for {@link MemoryMetrics#getAllocationRate()}
      * and {@link MemoryMetrics#getEvictionRate()} monitoring purposes.
      * <p>

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
index 36257e2..67c771b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgnitionEx.java
@@ -2779,7 +2779,9 @@ public class IgnitionEx {
      */
     private static void convertLegacyDataStorageConfigurationToNew(
         IgniteConfiguration cfg) throws IgniteCheckedException {
-        boolean persistenceEnabled = cfg.getPersistentStoreConfiguration() != null;
+        PersistentStoreConfiguration psCfg = cfg.getPersistentStoreConfiguration();
+
+        boolean persistenceEnabled = psCfg != null;
 
         DataStorageConfiguration dsCfg = new DataStorageConfiguration();
 
@@ -2814,6 +2816,9 @@ public class IgnitionEx {
                 region.setSwapPath(mpc.getSwapFilePath());
                 region.setMetricsEnabled(mpc.isMetricsEnabled());
 
+                if (persistenceEnabled)
+                    region.setCheckpointPageBufferSize(psCfg.getCheckpointingPageBufferSize());
+
                 if (mpc.getName() == null) {
                     throw new IgniteCheckedException(new IllegalArgumentException(
                         "User-defined MemoryPolicyConfiguration must have non-null and non-empty name."));
@@ -2829,7 +2834,8 @@ public class IgnitionEx {
         }
 
         if (!optionalDataRegions.isEmpty())
-            dsCfg.setDataRegionConfigurations(optionalDataRegions.toArray(new DataRegionConfiguration[optionalDataRegions.size()]));
+            dsCfg.setDataRegionConfigurations(optionalDataRegions.toArray(
+                new DataRegionConfiguration[optionalDataRegions.size()]));
 
         if (!customDfltPlc) {
             if (!DFLT_MEM_PLC_DEFAULT_NAME.equals(memCfg.getDefaultMemoryPolicyName())) {
@@ -2848,10 +2854,7 @@ public class IgnitionEx {
         }
 
         if (persistenceEnabled) {
-            PersistentStoreConfiguration psCfg = cfg.getPersistentStoreConfiguration();
-
             dsCfg.setCheckpointFrequency(psCfg.getCheckpointingFrequency());
-            dsCfg.setCheckpointPageBufferSize(psCfg.getCheckpointingPageBufferSize());
             dsCfg.setCheckpointThreads(psCfg.getCheckpointingThreads());
             dsCfg.setCheckpointWriteOrder(psCfg.getCheckpointWriteOrder());
             dsCfg.setFileIOFactory(psCfg.getFileIOFactory());

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index a3b157d..77b0622 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -1543,14 +1543,16 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
         DataRegionConfiguration[] dataRegions = memCfg.getDataRegionConfigurations();
 
         if (dataRegions != null) {
-            for (DataRegionConfiguration dataReg : dataRegions)
+            for (DataRegionConfiguration dataReg : dataRegions) {
                 res += dataReg.getMaxSize();
+
+                res += GridCacheDatabaseSharedManager.checkpointBufferSize(dataReg);
+            }
         }
 
         res += memCfg.getDefaultDataRegionConfiguration().getMaxSize();
 
-        // Add persistence (if any).
-        res += GridCacheDatabaseSharedManager.checkpointBufferSize(ctx.config());
+        res += GridCacheDatabaseSharedManager.checkpointBufferSize(memCfg.getDefaultDataRegionConfiguration());
 
         return res;
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/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 de3b60a..920af17 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
@@ -156,8 +156,14 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan
     /** */
     public static final String IGNITE_PDS_CHECKPOINT_TEST_SKIP_SYNC = "IGNITE_PDS_CHECKPOINT_TEST_SKIP_SYNC";
 
-    /** Default checkpointing page buffer size (may be adjusted by Ignite). */
-    public static final Long DFLT_CHECKPOINTING_PAGE_BUFFER_SIZE = 256L * 1024 * 1024;
+    /** */
+    private static final long GB = 1024L * 1024 * 1024;
+
+    /** Minimum checkpointing page buffer size (may be adjusted by Ignite). */
+    public static final Long DFLT_MIN_CHECKPOINTING_PAGE_BUFFER_SIZE = GB / 4;
+
+    /** Default minimum checkpointing page buffer size (may be adjusted by Ignite). */
+    public static final Long DFLT_MAX_CHECKPOINTING_PAGE_BUFFER_SIZE = 2 * GB;
 
     /** Skip sync. */
     private final boolean skipSync = IgniteSystemProperties.getBoolean(IGNITE_PDS_CHECKPOINT_TEST_SKIP_SYNC);
@@ -249,9 +255,6 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan
     private long checkpointFreq;
 
     /** */
-    private long checkpointPageBufSize;
-
-    /** */
     private FilePageStoreManager storeMgr;
 
     /** Checkpoint metadata directory ("cp"), contains files with checkpoint start and end */
@@ -408,56 +411,27 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan
                 30_000,
                 new LinkedBlockingQueue<Runnable>()
             );
-
-        checkpointPageBufSize = checkpointBufferSize(cctx.kernalContext().config());
     }
 
     /**
      * Get checkpoint buffer size for the given configuration.
      *
-     * @param cfg Configuration.
+     * @param regCfg Configuration.
      * @return Checkpoint buffer size.
      */
-    public static long checkpointBufferSize(IgniteConfiguration cfg) {
-        DataStorageConfiguration persistenceCfg = cfg.getDataStorageConfiguration();
-
-        if (persistenceCfg == null)
+    public static long checkpointBufferSize(DataRegionConfiguration regCfg) {
+        if (!regCfg.isPersistenceEnabled())
             return 0L;
 
-        long res = persistenceCfg.getCheckpointPageBufferSize();
+        long res = regCfg.getCheckpointPageBufferSize();
 
         if (res == 0L) {
-            res = DFLT_CHECKPOINTING_PAGE_BUFFER_SIZE;
-
-            DataStorageConfiguration memCfg = cfg.getDataStorageConfiguration();
-
-            assert memCfg != null;
-
-            long totalSize = memCfg.getSystemRegionMaxSize();
-
-            if (memCfg.getDataRegionConfigurations() == null)
-                totalSize += DataStorageConfiguration.DFLT_DATA_REGION_MAX_SIZE;
-            else {
-                for (DataRegionConfiguration memPlc : memCfg.getDataRegionConfigurations()) {
-                    if (Long.MAX_VALUE - memPlc.getMaxSize() > totalSize)
-                        totalSize += memPlc.getMaxSize();
-                    else {
-                        totalSize = Long.MAX_VALUE;
-
-                        break;
-                    }
-                }
-
-                assert totalSize > 0;
-            }
-
-            // Limit the checkpoint page buffer size by 2GB.
-            long dfltSize = 2 * 1024L * 1024L * 1024L;
-
-            long adjusted = Math.min(totalSize / 4, dfltSize);
-
-            if (res < adjusted)
-                res = adjusted;
+            if (regCfg.getMaxSize() < GB)
+                res = Math.min(DFLT_MIN_CHECKPOINTING_PAGE_BUFFER_SIZE, regCfg.getMaxSize());
+            else if (regCfg.getMaxSize() < 8 * GB)
+                res = regCfg.getMaxSize() / 4;
+            else
+                res = DFLT_MAX_CHECKPOINTING_PAGE_BUFFER_SIZE;
         }
 
         return res;
@@ -689,13 +663,16 @@ public class GridCacheDatabaseSharedManager extends IgniteCacheDatabaseSharedMan
         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);
+        long chpBufSize = checkpointBufferSize(plcCfg);
 
-        if (checkpointPageBufSize > cacheSize)
+        if (chpBufSize > cacheSize) {
             U.quietAndInfo(log,
-                "Checkpoint page buffer size is too big, setting to an adjusted cache size [size="
+                "Configured checkpoint page buffer size is too big, setting to the max region size [size="
                     + U.readableSize(cacheSize, false) + ",  memPlc=" + plcCfg.getName() + ']');
 
+            chpBufSize = cacheSize;
+        }
+
         boolean writeThrottlingEnabled = persistenceCfg.isWriteThrottlingEnabled();
 
         if (IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_OVERRIDE_WRITE_THROTTLING_ENABLED, false))

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
index 28b6c60..c1a807c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
@@ -1668,7 +1668,6 @@ public class PlatformConfigurationUtils {
         DataStorageConfiguration res = new DataStorageConfiguration()
                 .setStoragePath(in.readString())
                 .setCheckpointFrequency(in.readLong())
-                .setCheckpointPageBufferSize(in.readLong())
                 .setCheckpointThreads(in.readInt())
                 .setLockWaitTime((int) in.readLong())
                 .setWalHistorySize(in.readInt())
@@ -1763,7 +1762,6 @@ public class PlatformConfigurationUtils {
 
             w.writeString(cfg.getStoragePath());
             w.writeLong(cfg.getCheckpointFrequency());
-            w.writeLong(cfg.getCheckpointPageBufferSize());
             w.writeInt(cfg.getCheckpointThreads());
             w.writeLong(cfg.getLockWaitTime());
             w.writeInt(cfg.getWalHistorySize());
@@ -1828,6 +1826,7 @@ public class PlatformConfigurationUtils {
         w.writeBoolean(cfg.isMetricsEnabled());
         w.writeInt(cfg.getMetricsSubIntervalCount());
         w.writeLong(cfg.getMetricsRateTimeInterval());
+        w.writeLong(cfg.getCheckpointPageBufferSize());
     }
 
     /**
@@ -1849,7 +1848,8 @@ public class PlatformConfigurationUtils {
                 .setEmptyPagesPoolSize(r.readInt())
                 .setMetricsEnabled(r.readBoolean())
                 .setMetricsSubIntervalCount(r.readInt())
-                .setMetricsRateTimeInterval(r.readLong());
+                .setMetricsRateTimeInterval(r.readLong())
+                .setCheckpointPageBufferSize(r.readLong());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorDataRegionConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorDataRegionConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorDataRegionConfiguration.java
index 394e294..179e789 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorDataRegionConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorDataRegionConfiguration.java
@@ -68,6 +68,9 @@ public class VisorDataRegionConfiguration extends VisorDataTransferObject {
     /** Enable Ignite Native Persistence. */
     private boolean persistenceEnabled;
 
+    /** Temporary buffer size for checkpoints in bytes. */
+    private long checkpointPageBufSize;
+
     /**
      * Default constructor.
      */
@@ -94,6 +97,7 @@ public class VisorDataRegionConfiguration extends VisorDataTransferObject {
         metricsSubIntervalCount = plc.getMetricsSubIntervalCount();
         metricsRateTimeInterval = plc.getMetricsRateTimeInterval();
         persistenceEnabled = plc.isPersistenceEnabled();
+        checkpointPageBufSize = plc.getCheckpointPageBufferSize();
     }
 
     /**
@@ -188,6 +192,13 @@ public class VisorDataRegionConfiguration extends VisorDataTransferObject {
         return persistenceEnabled;
     }
 
+    /**
+     * @return Amount of memory allocated for a checkpoint temporary buffer in bytes.
+     */
+    public long getCheckpointPageBufferSize() {
+        return checkpointPageBufSize;
+    }
+
     /** {@inheritDoc} */
     @Override protected void writeExternalData(ObjectOutput out) throws IOException {
         U.writeString(out, name);
@@ -201,6 +212,7 @@ public class VisorDataRegionConfiguration extends VisorDataTransferObject {
         out.writeInt(metricsSubIntervalCount);
         out.writeLong(metricsRateTimeInterval);
         out.writeBoolean(persistenceEnabled);
+        out.writeLong(checkpointPageBufSize);
     }
 
     /** {@inheritDoc} */
@@ -216,6 +228,7 @@ public class VisorDataRegionConfiguration extends VisorDataTransferObject {
         metricsSubIntervalCount = in.readInt();
         metricsRateTimeInterval = in.readLong();
         persistenceEnabled = in.readBoolean();
+        checkpointPageBufSize = in.readLong();
     }
 
     /** {@inheritDoc} */

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorDataStorageConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorDataStorageConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorDataStorageConfiguration.java
index 78bf1c5..8470fe1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorDataStorageConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorDataStorageConfiguration.java
@@ -155,7 +155,6 @@ public class VisorDataStorageConfiguration extends VisorDataTransferObject {
         storagePath = cfg.getStoragePath();
         checkpointFreq = cfg.getCheckpointFrequency();
         lockWaitTime = cfg.getLockWaitTime();
-        checkpointPageBufSize = cfg.getCheckpointPageBufferSize();
         checkpointThreads = cfg.getCheckpointThreads();
         checkpointWriteOrder = cfg.getCheckpointWriteOrder();
         walHistSize = cfg.getWalHistorySize();
@@ -391,7 +390,7 @@ public class VisorDataStorageConfiguration extends VisorDataTransferObject {
         U.writeString(out, storagePath);
         out.writeLong(checkpointFreq);
         out.writeLong(lockWaitTime);
-        out.writeLong(checkpointPageBufSize);
+        out.writeLong(0);
         out.writeInt(checkpointThreads);
         U.writeEnum(out, checkpointWriteOrder);
         out.writeInt(walHistSize);

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPersistentStoreConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPersistentStoreConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPersistentStoreConfiguration.java
index f9d7a64..d26ab35 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPersistentStoreConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/node/VisorPersistentStoreConfiguration.java
@@ -103,7 +103,6 @@ public class VisorPersistentStoreConfiguration extends VisorDataTransferObject {
         persistenceStorePath = cfg.getStoragePath();
         checkpointingFreq = cfg.getCheckpointFrequency();
         lockWaitTime = cfg.getLockWaitTime();
-        checkpointingPageBufSize = cfg.getCheckpointPageBufferSize();
         checkpointingThreads = cfg.getCheckpointThreads();
         walHistSize = cfg.getWalHistorySize();
         walSegments = cfg.getWalSegments();

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgnitePdsWalTlbTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgnitePdsWalTlbTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgnitePdsWalTlbTest.java
index 5700eb3..3b76b63 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgnitePdsWalTlbTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgnitePdsWalTlbTest.java
@@ -31,7 +31,7 @@ import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
 import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
 
-import static org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.DFLT_CHECKPOINTING_PAGE_BUFFER_SIZE;
+import static org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.DFLT_MIN_CHECKPOINTING_PAGE_BUFFER_SIZE;
 import static org.apache.ignite.internal.processors.cache.persistence.file.FilePageStoreManager.DFLT_STORE_DIR;
 
 /**
@@ -54,9 +54,10 @@ public class IgnitePdsWalTlbTest extends GridCommonAbstractTest {
 
         DataStorageConfiguration memCfg = new DataStorageConfiguration()
             .setDefaultDataRegionConfiguration(
-                new DataRegionConfiguration().setMaxSize(100 * 1024 * 1024).setPersistenceEnabled(true))
+                new DataRegionConfiguration().setMaxSize(100 * 1024 * 1024)
+                    .setPersistenceEnabled(true)
+                    .setCheckpointPageBufferSize(DFLT_MIN_CHECKPOINTING_PAGE_BUFFER_SIZE + 1))
             .setWalMode(WALMode.LOG_ONLY)
-            .setCheckpointPageBufferSize(DFLT_CHECKPOINTING_PAGE_BUFFER_SIZE + 1)
             .setWalThreadLocalBufferSize(640000000);
 
         cfg.setDataStorageConfiguration(memCfg);

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSandboxTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSandboxTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSandboxTest.java
index 30fb492..9529f59 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSandboxTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSandboxTest.java
@@ -68,12 +68,12 @@ public class PagesWriteThrottleSandboxTest extends GridCommonAbstractTest {
         DataStorageConfiguration dbCfg = new DataStorageConfiguration()
             .setDefaultDataRegionConfiguration(new DataRegionConfiguration()
                 .setMaxSize(4000L * 1024 * 1024)
+                .setCheckpointPageBufferSize(1000L * 1000 * 1000)
                 .setName("dfltDataRegion")
                 .setMetricsEnabled(true)
                 .setPersistenceEnabled(true))
             .setWalMode(WALMode.BACKGROUND)
             .setCheckpointFrequency(20_000)
-            .setCheckpointPageBufferSize(1000L * 1000 * 1000)
             .setWriteThrottlingEnabled(true);
 
         cfg.setDataStorageConfiguration(dbCfg);

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSmokeTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSmokeTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSmokeTest.java
index ab7aab4..1875cfb 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSmokeTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/pagemem/PagesWriteThrottleSmokeTest.java
@@ -78,12 +78,12 @@ public class PagesWriteThrottleSmokeTest extends GridCommonAbstractTest {
         DataStorageConfiguration dbCfg = new DataStorageConfiguration()
             .setDefaultDataRegionConfiguration(new DataRegionConfiguration()
                 .setMaxSize(400 * 1024 * 1024)
+                .setCheckpointPageBufferSize(200 * 1000 * 1000)
                 .setName("dfltDataRegion")
                 .setMetricsEnabled(true)
                 .setPersistenceEnabled(true))
             .setWalMode(WALMode.BACKGROUND)
             .setCheckpointFrequency(20_000)
-            .setCheckpointPageBufferSize(200 * 1000 * 1000)
             .setWriteThrottlingEnabled(true)
             .setCheckpointThreads(1)
             .setFileIOFactory(new SlowCheckpointFileIOFactory());

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/full-config.xml
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/full-config.xml b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/full-config.xml
index 03559bf..b808bbe 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/full-config.xml
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Config/full-config.xml
@@ -136,7 +136,7 @@
             <listener type='Apache.Ignite.Core.Tests.IgniteConfigurationSerializerTest+MyEventListener' />
         </localEventListener>
     </localEventListeners>
-    <dataStorageConfiguration alwaysWriteFullPages="false" checkpointFrequency="00:00:01" checkpointPageBufferSize="2"
+    <dataStorageConfiguration alwaysWriteFullPages="false" checkpointFrequency="00:00:01"
                               checkpointThreads="3" concurrencyLevel="4" lockWaitTime="00:00:05" metricsEnabled="true"
                               pageSize="6" storagePath="cde" metricsRateTimeInterval="00:00:07"
                               metricsSubIntervalCount="8" systemRegionInitialSize="9" systemRegionMaxSize="10" 
@@ -147,11 +147,11 @@
         <dataRegionConfigurations>
             <dataRegionConfiguration emptyPagesPoolSize="1" evictionThreshold="2" initialSize="3" metricsEnabled="true"
                                      maxSize="4" name="reg2" pageEvictionMode="RandomLru" metricsRateTimeInterval="00:00:01"
-                                     metricsSubIntervalCount="5" swapPath="swap" />
+                                     metricsSubIntervalCount="5" swapPath="swap" checkpointPageBufferSize="7" />
         </dataRegionConfigurations>
         <defaultDataRegionConfiguration emptyPagesPoolSize="2" evictionThreshold="3" initialSize="4"
                                         maxSize="5" metricsEnabled="false" name="reg1" pageEvictionMode="Disabled"
                                         metricsRateTimeInterval="00:00:03" metricsSubIntervalCount="6"
-                                        swapPath="swap2" />
+                                        swapPath="swap2" checkpointPageBufferSize="8" />
     </dataStorageConfiguration>
 </igniteConfiguration>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
index b8c1069..4cd3760 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
@@ -287,7 +287,6 @@ namespace Apache.Ignite.Core.Tests
             var ds = cfg.DataStorageConfiguration;
             Assert.IsFalse(ds.AlwaysWriteFullPages);
             Assert.AreEqual(TimeSpan.FromSeconds(1), ds.CheckpointFrequency);
-            Assert.AreEqual(2, ds.CheckpointPageBufferSize);
             Assert.AreEqual(3, ds.CheckpointThreads);
             Assert.AreEqual(4, ds.ConcurrencyLevel);
             Assert.AreEqual(TimeSpan.FromSeconds(5), ds.LockWaitTime);
@@ -321,6 +320,7 @@ namespace Apache.Ignite.Core.Tests
             Assert.AreEqual(5, dr.MetricsSubIntervalCount);
             Assert.AreEqual("swap", dr.SwapPath);
             Assert.IsTrue(dr.MetricsEnabled);
+            Assert.AreEqual(7, dr.CheckpointPageBufferSize);
 
             dr = ds.DefaultDataRegionConfiguration;
             Assert.AreEqual(2, dr.EmptyPagesPoolSize);
@@ -927,7 +927,6 @@ namespace Apache.Ignite.Core.Tests
                 {
                     AlwaysWriteFullPages = true,
                     CheckpointFrequency = TimeSpan.FromSeconds(25),
-                    CheckpointPageBufferSize = 28 * 1024 * 1024,
                     CheckpointThreads = 2,
                     LockWaitTime = TimeSpan.FromSeconds(5),
                     StoragePath = Path.GetTempPath(),
@@ -962,7 +961,8 @@ namespace Apache.Ignite.Core.Tests
                         PersistenceEnabled = false,
                         MetricsRateTimeInterval = TimeSpan.FromMinutes(2),
                         MetricsSubIntervalCount = 6,
-                        SwapPath = Path.GetTempPath()
+                        SwapPath = Path.GetTempPath(),
+                        CheckpointPageBufferSize = 7
                     },
                     DataRegionConfigurations = new[]
                     {

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
index c8c06b2..f68371a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
@@ -543,7 +543,6 @@ namespace Apache.Ignite.Core.Tests
             Assert.AreEqual(DataStorageConfiguration.DefaultTlbSize, cfg.WalThreadLocalBufferSize);
             Assert.AreEqual(DataStorageConfiguration.DefaultCheckpointFrequency, cfg.CheckpointFrequency);
             Assert.AreEqual(DataStorageConfiguration.DefaultCheckpointThreads, cfg.CheckpointThreads);
-            Assert.AreEqual(default(long), cfg.CheckpointPageBufferSize);
             Assert.AreEqual(DataStorageConfiguration.DefaultLockWaitTime, cfg.LockWaitTime);
             Assert.AreEqual(DataStorageConfiguration.DefaultWalFlushFrequency, cfg.WalFlushFrequency);
             Assert.AreEqual(DataStorageConfiguration.DefaultWalFsyncDelayNanos, cfg.WalFsyncDelayNanos);
@@ -580,6 +579,7 @@ namespace Apache.Ignite.Core.Tests
             Assert.AreEqual(DataRegionConfiguration.DefaultPersistenceEnabled, cfg.PersistenceEnabled);
             Assert.AreEqual(DataRegionConfiguration.DefaultMetricsRateTimeInterval, cfg.MetricsRateTimeInterval);
             Assert.AreEqual(DataRegionConfiguration.DefaultMetricsSubIntervalCount, cfg.MetricsSubIntervalCount);
+            Assert.AreEqual(default(long), cfg.CheckpointPageBufferSize);
         }
 
         /// <summary>
@@ -769,7 +769,6 @@ namespace Apache.Ignite.Core.Tests
                 {
                     AlwaysWriteFullPages = true,
                     CheckpointFrequency = TimeSpan.FromSeconds(25),
-                    CheckpointPageBufferSize = 28 * 1024 * 1024,
                     CheckpointThreads = 2,
                     LockWaitTime = TimeSpan.FromSeconds(5),
                     StoragePath = Path.GetTempPath(),
@@ -804,7 +803,8 @@ namespace Apache.Ignite.Core.Tests
                         PersistenceEnabled = false,
                         MetricsRateTimeInterval = TimeSpan.FromMinutes(2),
                         MetricsSubIntervalCount = 6,
-                        SwapPath = IgniteUtils.GetTempDirectoryName()
+                        SwapPath = IgniteUtils.GetTempDirectoryName(),
+                        CheckpointPageBufferSize = 28 * 1024 * 1024
                     },
                     DataRegionConfigurations = new[]
                     {

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/platforms/dotnet/Apache.Ignite.Core/Configuration/DataRegionConfiguration.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Configuration/DataRegionConfiguration.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Configuration/DataRegionConfiguration.cs
index 5c4240e..d20ce49 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Configuration/DataRegionConfiguration.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Configuration/DataRegionConfiguration.cs
@@ -104,6 +104,7 @@ namespace Apache.Ignite.Core.Configuration
             MetricsEnabled = reader.ReadBoolean();
             MetricsSubIntervalCount = reader.ReadInt();
             MetricsRateTimeInterval = reader.ReadLongAsTimespan();
+            CheckpointPageBufferSize = reader.ReadLong();
         }
 
         /// <summary>
@@ -122,6 +123,7 @@ namespace Apache.Ignite.Core.Configuration
             writer.WriteBoolean(MetricsEnabled);
             writer.WriteInt(MetricsSubIntervalCount);
             writer.WriteTimeSpanAsLong(MetricsRateTimeInterval);
+            writer.WriteLong(CheckpointPageBufferSize);
         }
 
         /// <summary>
@@ -209,5 +211,11 @@ namespace Apache.Ignite.Core.Configuration
             Justification = "Consistency with Java config")]
         public int MetricsSubIntervalCount { get; set; }
 
+        /// <summary>
+        /// Gets or sets the size of the checkpointing page buffer.
+        /// <para />
+        /// Default is <c>0</c>: Ignite will choose buffer size automatically.
+        /// </summary>
+        public long CheckpointPageBufferSize { get; set; }
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/platforms/dotnet/Apache.Ignite.Core/Configuration/DataStorageConfiguration.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Configuration/DataStorageConfiguration.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Configuration/DataStorageConfiguration.cs
index 17b4ada..09b3fe4 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Configuration/DataStorageConfiguration.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Configuration/DataStorageConfiguration.cs
@@ -189,7 +189,6 @@ namespace Apache.Ignite.Core.Configuration
 
             StoragePath = reader.ReadString();
             CheckpointFrequency = reader.ReadLongAsTimespan();
-            CheckpointPageBufferSize = reader.ReadLong();
             CheckpointThreads = reader.ReadInt();
             LockWaitTime = reader.ReadLongAsTimespan();
             WalHistorySize = reader.ReadInt();
@@ -239,7 +238,6 @@ namespace Apache.Ignite.Core.Configuration
 
             writer.WriteString(StoragePath);
             writer.WriteTimeSpanAsLong(CheckpointFrequency);
-            writer.WriteLong(CheckpointPageBufferSize);
             writer.WriteInt(CheckpointThreads);
             writer.WriteTimeSpanAsLong(LockWaitTime);
             writer.WriteInt(WalHistorySize);
@@ -308,13 +306,6 @@ namespace Apache.Ignite.Core.Configuration
         public TimeSpan CheckpointFrequency { get; set; }
 
         /// <summary>
-        /// Gets or sets the size of the checkpointing page buffer.
-        /// <para />
-        /// Default is <c>0</c>: Ignite will choose buffer size automatically.
-        /// </summary>
-        public long CheckpointPageBufferSize { get; set; }
-
-        /// <summary>
         /// Gets or sets the number of threads for checkpointing.
         /// </summary>
         [DefaultValue(DefaultCheckpointThreads)]

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
index 70b1fc4..5050806 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfigurationSection.xsd
@@ -1622,6 +1622,11 @@
                                             <xs:documentation>Enable disk persistence for this region.</xs:documentation>
                                         </xs:annotation>
                                     </xs:attribute>
+                                    <xs:attribute name="checkpointPageBufferSize" type="xs:long">
+                                        <xs:annotation>
+                                            <xs:documentation>Size of the checkpointing page buffer.</xs:documentation>
+                                        </xs:annotation>
+                                    </xs:attribute>
                                 </xs:complexType>
                             </xs:element>
                             <xs:element name="dataRegionConfigurations">
@@ -1690,6 +1695,11 @@
                                                         <xs:documentation>Enable disk persistence for this region.</xs:documentation>
                                                     </xs:annotation>
                                                 </xs:attribute>
+                                                <xs:attribute name="checkpointPageBufferSize" type="xs:long">
+                                                    <xs:annotation>
+                                                        <xs:documentation>Size of the checkpointing page buffer.</xs:documentation>
+                                                    </xs:annotation>
+                                                </xs:attribute>
                                             </xs:complexType>                                            
                                         </xs:element>
                                     </xs:sequence>
@@ -1706,11 +1716,6 @@
                                 <xs:documentation>Checkpointing frequency which is a minimal interval when the dirty pages will be written to the Persistent Store.</xs:documentation>
                             </xs:annotation>
                         </xs:attribute>
-                        <xs:attribute name="checkpointPageBufferSize" type="xs:long">
-                            <xs:annotation>
-                                <xs:documentation>Size of the checkpointing page buffer.</xs:documentation>
-                            </xs:annotation>
-                        </xs:attribute>
                         <xs:attribute name="checkpointThreads" type="xs:int">
                             <xs:annotation>
                                 <xs:documentation>Number of threads for checkpointing.</xs:documentation>

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/web-console/backend/app/mongo.js
----------------------------------------------------------------------
diff --git a/modules/web-console/backend/app/mongo.js b/modules/web-console/backend/app/mongo.js
index b4bc9fc..5b02a72 100644
--- a/modules/web-console/backend/app/mongo.js
+++ b/modules/web-console/backend/app/mongo.js
@@ -977,7 +977,8 @@ module.exports.factory = function(passportMongo, settings, pluginMongo, mongoose
                 metricsEnabled: Boolean,
                 metricsSubIntervalCount: Number,
                 metricsRateTimeInterval: Number,
-                persistenceEnabled: Boolean
+                persistenceEnabled: Boolean,
+                checkpointPageBufferSize: Number
             },
             dataRegionConfigurations: [{
                 name: String,
@@ -990,7 +991,8 @@ module.exports.factory = function(passportMongo, settings, pluginMongo, mongoose
                 metricsEnabled: Boolean,
                 metricsSubIntervalCount: Number,
                 metricsRateTimeInterval: Number,
-                persistenceEnabled: Boolean
+                persistenceEnabled: Boolean,
+                checkpointPageBufferSize: Number
             }],
             storagePath: String,
             metricsEnabled: Boolean,

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js b/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
index d9342e7..1b12d52 100644
--- a/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
+++ b/modules/web-console/frontend/app/modules/configuration/generator/ConfigurationGenerator.js
@@ -1345,7 +1345,7 @@ export default class IgniteConfigurationGenerator {
     static dataRegionConfiguration(dataRegionCfg) {
         const plcBean = new Bean('org.apache.ignite.configuration.DataRegionConfiguration', 'dataRegionCfg', dataRegionCfg, clusterDflts.dataStorageConfiguration.dataRegionConfigurations);
 
-        return plcBean.stringProperty('name')
+        plcBean.stringProperty('name')
             .longProperty('initialSize')
             .longProperty('maxSize')
             .stringProperty('swapPath')
@@ -1354,8 +1354,11 @@ export default class IgniteConfigurationGenerator {
             .intProperty('emptyPagesPoolSize')
             .intProperty('metricsSubIntervalCount')
             .longProperty('metricsRateTimeInterval')
+            .longProperty('checkpointPageBufferSize')
             .boolProperty('metricsEnabled')
             .boolProperty('persistenceEnabled');
+
+        return plcBean;
     }
 
     // Generate data storage configuration.

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cluster.service.js
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cluster.service.js b/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cluster.service.js
index bafb202..f636869 100644
--- a/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cluster.service.js
+++ b/modules/web-console/frontend/app/modules/configuration/generator/defaults/Cluster.service.js
@@ -327,7 +327,8 @@ const DFLT_CLUSTER = {
             emptyPagesPoolSize: 100,
             metricsEnabled: false,
             metricsSubIntervalCount: 5,
-            metricsRateTimeInterval: 60000
+            metricsRateTimeInterval: 60000,
+            checkpointPageBufferSize: 0
         },
         metricsEnabled: false,
         alwaysWriteFullPages: false,

http://git-wip-us.apache.org/repos/asf/ignite/blob/8266a981/modules/web-console/frontend/app/modules/states/configuration/clusters/data-storage.pug
----------------------------------------------------------------------
diff --git a/modules/web-console/frontend/app/modules/states/configuration/clusters/data-storage.pug b/modules/web-console/frontend/app/modules/states/configuration/clusters/data-storage.pug
index a635739..82c6dbe 100644
--- a/modules/web-console/frontend/app/modules/states/configuration/clusters/data-storage.pug
+++ b/modules/web-console/frontend/app/modules/states/configuration/clusters/data-storage.pug
@@ -102,6 +102,9 @@ include /app/helpers/jade/mixins
                                             +number('Metrics rate time interval:', dfltRegionModel + '.metricsRateTimeInterval', '"DfltRegionRateTimeInterval" + $index',
                                             'true', '60000', '1000', 'Time interval for allocation rate and eviction rate monitoring purposes')
                                         .details-row
+                                            +number('Checkpoint page buffer:', dfltRegionModel + '.checkpointPageBufferSize', '"DfltCheckpointPageBufferSize" + $index',
+                                                'true', '0', '0', 'Amount of memory allocated for a checkpoint temporary buffer in bytes')
+                                        .details-row
                                             +checkbox('Metrics enabled', dfltRegionModel + '.metricsEnabled', '"DfltRegionMetricsEnabled" + $index',
                                             'Whether memory metrics are enabled by default on node startup')
                                         .details-row
@@ -156,6 +159,9 @@ include /app/helpers/jade/mixins
                                         .settings-row
                                             +number('Metrics rate time interval:', 'model.metricsRateTimeInterval', '"DataRegionRateTimeInterval" + $index',
                                                 'true', '60000', '1000', 'Time interval for allocation rate and eviction rate monitoring purposes')
+                                        .details-row
+                                            +number('Checkpoint page buffer:', 'model.checkpointPageBufferSize', '"DataRegionCheckpointPageBufferSize" + $index',
+                                                'true', '0', '0', 'Amount of memory allocated for a checkpoint temporary buffer in bytes')
                                         .settings-row
                                             +checkbox('Metrics enabled', 'model.metricsEnabled', '"DataRegionMetricsEnabled" + $index',
                                             'Whether memory metrics are enabled by default on node startup')