[3/3] ignite git commit: IGNITE-7594 Fixed performance drop after WAL optimization for FSYNC mode by reverting the old implementation - Fixes #3521.
IGNITE-7594 Fixed performance drop after WAL optimization for FSYNC mode by reverting the old implementation - Fixes #3521. Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/1c7b4228 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/1c7b4228 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/1c7b4228 Branch: refs/heads/master Commit: 1c7b42285f27dbcb5bcc38fe3d7dee8aac5cb873 Parents: 692e488 Author: Ilya Lantukh Authored: Mon Feb 19 18:06:56 2018 +0300 Committer: Alexey Goncharuk Committed: Mon Feb 19 18:08:56 2018 +0300 -- .../apache/ignite/IgniteSystemProperties.java |6 + .../configuration/DataStorageConfiguration.java | 11 +- .../PersistentStoreConfiguration.java |7 +- .../apache/ignite/configuration/WALMode.java| 15 +- .../internal/pagemem/wal/record/WALRecord.java | 19 +- .../processors/cache/GridCacheProcessor.java| 10 +- .../wal/AbstractWalRecordsIterator.java | 83 +- .../wal/FileWriteAheadLogManager.java | 107 +- .../wal/FsyncModeFileWriteAheadLogManager.java | 3142 ++ .../SingleSegmentLogicalRecordsIterator.java| 12 +- .../reader/StandaloneWalRecordsIterator.java| 13 +- .../db/wal/IgniteWalFlushDefaultSelfTest.java |2 +- .../db/wal/reader/IgniteWalReaderTest.java |4 +- 13 files changed, 3354 insertions(+), 77 deletions(-) -- http://git-wip-us.apache.org/repos/asf/ignite/blob/1c7b4228/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java -- diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java index 8e72099..b1a1542 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java @@ -815,6 +815,12 @@ public final class IgniteSystemProperties { * Because other thread may require exactly the same page to be loaded from store, reads are protected by locking. */ public static final String IGNITE_DELAYED_REPLACED_PAGE_WRITE = "IGNITE_DELAYED_REPLACED_PAGE_WRITE"; +/** + * When set to {@code true}, WAL implementation with dedicated worker will be used even in FSYNC mode. + * Default is {@code false}. + */ +public static final String IGNITE_WAL_FSYNC_WITH_DEDICATED_WORKER = "IGNITE_WAL_FSYNC_WITH_DEDICATED_WORKER"; + /** * Enforces singleton. http://git-wip-us.apache.org/repos/asf/ignite/blob/1c7b4228/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 8d91503..4a3dbbf 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 @@ -120,7 +120,7 @@ public class DataStorageConfiguration implements Serializable { public static final int DFLT_WAL_SEGMENT_SIZE = 64 * 1024 * 1024; /** Default wal mode. */ -public static final WALMode DFLT_WAL_MODE = WALMode.DEFAULT; +public static final WALMode DFLT_WAL_MODE = WALMode.LOG_ONLY; /** Default thread local buffer size. */ public static final int DFLT_TLB_SIZE = 128 * 1024; @@ -686,6 +686,9 @@ public class DataStorageConfiguration implements Serializable { * @param walMode Wal mode. */ public DataStorageConfiguration setWalMode(WALMode walMode) { +if (walMode == WALMode.DEFAULT) +walMode = WALMode.FSYNC; + this.walMode = walMode; return this; @@ -755,7 +758,7 @@ public class DataStorageConfiguration implements Serializable { } /** - * Property that allows to trade latency for throughput in {@link WALMode#DEFAULT} mode. + * Property that allows to trade latency for throughput in {@link WALMode#FSYNC} mode. * It limits minimum time interval between WAL fsyncs. First thread that initiates WAL fsync will wait for * this number of nanoseconds, another threads will just wait fsync of first thread (similar to CyclicBarrier). * Total throughput should increase under load as total WAL fsync rate will be limited. @@ -765,7 +768,7 @@ public class DataStorageConfiguration implements Serializable { } /** - * Sets property that allows to trade latency for throughput in {@link WALMode#DEFAULT} mode. + * S
[3/3] ignite git commit: IGNITE-7594 Fixed performance drop after WAL optimization for FSYNC mode by reverting the old implementation - Fixes #3521.
IGNITE-7594 Fixed performance drop after WAL optimization for FSYNC mode by reverting the old implementation - Fixes #3521. Signed-off-by: Alexey Goncharuk Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/b7cc1d74 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/b7cc1d74 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/b7cc1d74 Branch: refs/heads/ignite-2.4 Commit: b7cc1d745b44f7a0e32333c2716799e2cfac2988 Parents: 2eec607 Author: Ilya Lantukh Authored: Mon Feb 19 18:06:56 2018 +0300 Committer: Alexey Goncharuk Committed: Mon Feb 19 18:06:56 2018 +0300 -- .../apache/ignite/IgniteSystemProperties.java |6 + .../configuration/DataStorageConfiguration.java | 11 +- .../PersistentStoreConfiguration.java |7 +- .../apache/ignite/configuration/WALMode.java| 15 +- .../internal/pagemem/wal/record/WALRecord.java | 19 +- .../processors/cache/GridCacheProcessor.java| 10 +- .../wal/AbstractWalRecordsIterator.java | 83 +- .../wal/FileWriteAheadLogManager.java | 107 +- .../wal/FsyncModeFileWriteAheadLogManager.java | 3142 ++ .../SingleSegmentLogicalRecordsIterator.java| 12 +- .../reader/StandaloneWalRecordsIterator.java| 13 +- .../db/wal/IgniteWalFlushDefaultSelfTest.java |2 +- .../db/wal/reader/IgniteWalReaderTest.java |4 +- 13 files changed, 3354 insertions(+), 77 deletions(-) -- http://git-wip-us.apache.org/repos/asf/ignite/blob/b7cc1d74/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java -- diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java index 43b718b..383d700 100644 --- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java +++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java @@ -792,6 +792,12 @@ public final class IgniteSystemProperties { */ public static final String IGNITE_DIRECT_IO_ENABLED = "IGNITE_DIRECT_IO_ENABLED"; +/** + * When set to {@code true}, WAL implementation with dedicated worker will be used even in FSYNC mode. + * Default is {@code false}. + */ +public static final String IGNITE_WAL_FSYNC_WITH_DEDICATED_WORKER = "IGNITE_WAL_FSYNC_WITH_DEDICATED_WORKER"; + /** * Enforces singleton. http://git-wip-us.apache.org/repos/asf/ignite/blob/b7cc1d74/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 8d91503..4a3dbbf 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 @@ -120,7 +120,7 @@ public class DataStorageConfiguration implements Serializable { public static final int DFLT_WAL_SEGMENT_SIZE = 64 * 1024 * 1024; /** Default wal mode. */ -public static final WALMode DFLT_WAL_MODE = WALMode.DEFAULT; +public static final WALMode DFLT_WAL_MODE = WALMode.LOG_ONLY; /** Default thread local buffer size. */ public static final int DFLT_TLB_SIZE = 128 * 1024; @@ -686,6 +686,9 @@ public class DataStorageConfiguration implements Serializable { * @param walMode Wal mode. */ public DataStorageConfiguration setWalMode(WALMode walMode) { +if (walMode == WALMode.DEFAULT) +walMode = WALMode.FSYNC; + this.walMode = walMode; return this; @@ -755,7 +758,7 @@ public class DataStorageConfiguration implements Serializable { } /** - * Property that allows to trade latency for throughput in {@link WALMode#DEFAULT} mode. + * Property that allows to trade latency for throughput in {@link WALMode#FSYNC} mode. * It limits minimum time interval between WAL fsyncs. First thread that initiates WAL fsync will wait for * this number of nanoseconds, another threads will just wait fsync of first thread (similar to CyclicBarrier). * Total throughput should increase under load as total WAL fsync rate will be limited. @@ -765,7 +768,7 @@ public class DataStorageConfiguration implements Serializable { } /** - * Sets property that allows to trade latency for throughput in {@link WALMode#DEFAULT} mode. + * Sets property that allows to trade latency for throughput in {@link WALMode#FSYNC} mode. * It l