This is an automated email from the ASF dual-hosted git repository.

zstan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new ec58a0ea8b9 IGNITE-28802 Fix benchmarks for JDK 17 (#13255)
ec58a0ea8b9 is described below

commit ec58a0ea8b90ea3ee44eec1b8745a5c3f1815e27
Author: Dmitry Werner <[email protected]>
AuthorDate: Mon Jun 22 13:06:12 2026 +0500

    IGNITE-28802 Fix benchmarks for JDK 17 (#13255)
---
 .../jmh/binary/JmhMapSerdesBenchmark.java          |  5 +-
 .../jmh/cache/JmhCacheAsyncListenBenchmark.java    | 27 ++++----
 .../benchmarks/jmh/cache/JmhCacheBenchmark.java    |  3 +-
 .../jmh/cache/JmhCacheExpireBenchmark.java         | 12 ++--
 .../jmh/cache/JmhCacheLocksBenchmark.java          | 15 ++---
 .../SmallHashSetsVsReadOnlyViewBenchmark.java      |  1 +
 .../JmhPageLockTrackerBenchmark.java               | 12 ++--
 .../JmhKeystoreEncryptionSpiBenchmark.java         | 12 ++--
 .../GridDhtPartitionsStateValidatorBenchmark.java  | 14 ++--
 .../misc/JmhPartitionUpdateCounterBenchmark.java   | 12 ++--
 .../jmh/misc/JmhSegmentedLruListBenchmark.java     | 12 ++--
 .../jmh/misc/JmhTracingContextBenchmark.java       | 12 ++--
 .../jmh/notify/JmhWaitStategyBenchmark.java        | 19 ++----
 .../jmh/runner/JmhIdeBenchmarkRunner.java          | 75 ++++++++++++++++++----
 .../jmh/sql/JmhCacheWithInterceptorBenchmark.java  | 12 ++--
 .../benchmarks/jmh/sql/JmhSqlAggBenchmark.java     | 12 ++--
 .../jmh/sql/JmhSqlCorrelateBenchmark.java          | 12 ++--
 .../benchmarks/jmh/sql/JmhSqlDmlBenchmark.java     | 12 ++--
 .../jmh/sql/JmhSqlDmlReplicatedBenchmark.java      | 12 ++--
 .../benchmarks/jmh/sql/JmhSqlInsertBenchmark.java  | 12 ++--
 .../benchmarks/jmh/sql/JmhSqlJoinBenchmark.java    | 12 ++--
 .../benchmarks/jmh/sql/JmhSqlScanBenchmark.java    | 12 ++--
 .../jmh/sql/JmhSqlScanReplicatedBenchmark.java     | 12 ++--
 .../benchmarks/jmh/sql/JmhSqlSetOpBenchmark.java   | 14 ++--
 .../benchmarks/jmh/sql/JmhSqlSortBenchmark.java    | 12 ++--
 .../benchmarks/jmh/sql/JmhSqlUdfBenchmark.java     | 12 ++--
 .../benchmarks/jmh/sql/tpch/TpchBenchmark.java     | 23 +++----
 .../jmh/streamer/JmhStreamerAddDataBenchmark.java  | 18 ++----
 .../jmh/thin/JmhThinClientCacheBenchmark.java      | 20 +++---
 .../benchmarks/jmh/tree/IndexFindBenchmark.java    | 12 ++--
 .../ignite/internal/util/FeatureChecker.java       | 47 +++++++-------
 31 files changed, 227 insertions(+), 270 deletions(-)

diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/binary/JmhMapSerdesBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/binary/JmhMapSerdesBenchmark.java
index 4744f7e125b..9c29d247866 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/binary/JmhMapSerdesBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/binary/JmhMapSerdesBenchmark.java
@@ -24,6 +24,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import org.apache.ignite.Ignition;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.apache.ignite.internal.binary.BinaryContext;
 import org.apache.ignite.internal.binary.BinaryUtils;
 import org.apache.ignite.internal.binary.BinaryWriterEx;
@@ -71,7 +72,9 @@ public class JmhMapSerdesBenchmark {
 
     /** */
     public static void main(String[] args) throws Exception {
-        org.openjdk.jmh.Main.main(new 
String[]{JmhMapSerdesBenchmark.class.getName()});
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhMapSerdesBenchmark.class.getName())
+            .run();
     }
 
     /** */
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheAsyncListenBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheAsyncListenBenchmark.java
index dea077222d1..1368b3a86c1 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheAsyncListenBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheAsyncListenBenchmark.java
@@ -28,8 +28,6 @@ import org.apache.ignite.internal.benchmarks.model.IntValue;
 import org.apache.ignite.lang.IgniteFuture;
 import org.apache.ignite.lang.IgniteInClosure;
 import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.annotations.Mode;
-
 
 /**
  * Cache async listen benchmark.
@@ -147,17 +145,18 @@ public class JmhCacheAsyncListenBenchmark extends 
JmhCacheAbstractBenchmark {
         CacheWriteSynchronizationMode writeSyncMode) throws Exception {
 
         JmhIdeBenchmarkRunner.create()
-                .forks(1)
-                .threads(threads)
-                .benchmarks(JmhCacheAsyncListenBenchmark.class.getSimpleName())
-                .jvmArguments(
-                    "-Xms4g",
-                    "-Xmx4g",
-                    JmhIdeBenchmarkRunner.createProperty(PROP_ATOMICITY_MODE, 
atomicityMode),
-                    JmhIdeBenchmarkRunner.createProperty(PROP_WRITE_SYNC_MODE, 
writeSyncMode),
-                    JmhIdeBenchmarkRunner.createProperty(PROP_DATA_NODES, 2),
-                    JmhIdeBenchmarkRunner.createProperty(PROP_CLIENT_MODE, 
client))
-                .benchmarkModes(Mode.Throughput)
-                .run();
+            .forks(1)
+            .threads(threads)
+            .benchmarks(JmhCacheAsyncListenBenchmark.class.getSimpleName())
+            .jvmArguments(
+                "-Xms4g",
+                "-Xmx4g",
+                JmhIdeBenchmarkRunner.createProperty(PROP_ATOMICITY_MODE, 
atomicityMode),
+                JmhIdeBenchmarkRunner.createProperty(PROP_WRITE_SYNC_MODE, 
writeSyncMode),
+                JmhIdeBenchmarkRunner.createProperty(PROP_DATA_NODES, 2),
+                JmhIdeBenchmarkRunner.createProperty(PROP_CLIENT_MODE, client))
+            .warmupIterations(10)
+            .measurementIterations(10)
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheBenchmark.java
index 5e9ac60b3f2..ffb5e7b7498 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheBenchmark.java
@@ -127,9 +127,8 @@ public class JmhCacheBenchmark extends 
JmhCacheAbstractBenchmark {
             .jvmArguments(
                 "-Xms4g",
                 "-Xmx4g",
-                "-XX:+UnlockCommercialFeatures",
                 "-XX:+FlightRecorder",
-                
"-XX:StartFlightRecording=delay=30s,dumponexit=true,settings=alloc,filename=" + 
output + ".jfr",
+                
"-XX:StartFlightRecording=delay=30s,dumponexit=true,settings=profile,filename=" 
+ output + ".jfr",
                 JmhIdeBenchmarkRunner.createProperty(PROP_ATOMICITY_MODE, 
atomicityMode),
                 JmhIdeBenchmarkRunner.createProperty(PROP_WRITE_SYNC_MODE, 
writeSyncMode),
                 JmhIdeBenchmarkRunner.createProperty(PROP_DATA_NODES, 2),
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheExpireBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheExpireBenchmark.java
index 79b9bf12a78..14f521d1277 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheExpireBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheExpireBenchmark.java
@@ -29,6 +29,7 @@ import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.DataRegionConfiguration;
 import org.apache.ignite.configuration.DataStorageConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
 import org.openjdk.jmh.annotations.Fork;
@@ -43,9 +44,6 @@ import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.TearDown;
 import org.openjdk.jmh.annotations.Threads;
 import org.openjdk.jmh.annotations.Warmup;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Compare put with expiry policy and without expiry policy.
@@ -135,10 +133,8 @@ public class JmhCacheExpireBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhCacheExpireBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhCacheExpireBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheLocksBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheLocksBenchmark.java
index 677e7674345..2f1af3dbd9e 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheLocksBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/cache/JmhCacheLocksBenchmark.java
@@ -28,9 +28,6 @@ import org.openjdk.jmh.annotations.Level;
 import org.openjdk.jmh.annotations.Measurement;
 import org.openjdk.jmh.annotations.Setup;
 import org.openjdk.jmh.annotations.Warmup;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * IgniteCache.lock() vs Ignite.reentrantLock().
@@ -101,19 +98,17 @@ public class JmhCacheLocksBenchmark extends 
JmhCacheAbstractBenchmark {
             "-" + atomicityMode +
             "-" + writeSyncMode;
 
-        final Options opt = new OptionsBuilder()
+        JmhIdeBenchmarkRunner.create()
             .threads(threads)
-            .include(simpleClsName)
+            .benchmarks(simpleClsName)
             .output(output + ".jmh.log")
-            .jvmArgs(
+            .jvmArguments(
                 "-Xms1g",
                 "-Xmx1g",
-                "-XX:+UnlockCommercialFeatures",
                 JmhIdeBenchmarkRunner.createProperty(PROP_ATOMICITY_MODE, 
atomicityMode),
                 JmhIdeBenchmarkRunner.createProperty(PROP_WRITE_SYNC_MODE, 
writeSyncMode),
                 JmhIdeBenchmarkRunner.createProperty(PROP_DATA_NODES, 4),
-                JmhIdeBenchmarkRunner.createProperty(PROP_CLIENT_MODE, 
client)).build();
-
-        new Runner(opt).run();
+                JmhIdeBenchmarkRunner.createProperty(PROP_CLIENT_MODE, client))
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/collections/SmallHashSetsVsReadOnlyViewBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/collections/SmallHashSetsVsReadOnlyViewBenchmark.java
index 13d1c916910..8b4a272e9ac 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/collections/SmallHashSetsVsReadOnlyViewBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/collections/SmallHashSetsVsReadOnlyViewBenchmark.java
@@ -62,6 +62,7 @@ public class SmallHashSetsVsReadOnlyViewBenchmark extends 
JmhAbstractBenchmark {
             .threads(1)
             .measurementIterations(20)
             
.benchmarks(SmallHashSetsVsReadOnlyViewBenchmark.class.getSimpleName())
+            .warmupIterations(10)
             .run();
     }
 
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/diagnostic/pagelocktracker/JmhPageLockTrackerBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/diagnostic/pagelocktracker/JmhPageLockTrackerBenchmark.java
index 90226089c37..d4131806c22 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/diagnostic/pagelocktracker/JmhPageLockTrackerBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/diagnostic/pagelocktracker/JmhPageLockTrackerBenchmark.java
@@ -17,6 +17,7 @@
 package org.apache.ignite.internal.benchmarks.jmh.diagnostic.pagelocktracker;
 
 import 
org.apache.ignite.internal.benchmarks.jmh.diagnostic.pagelocktracker.stack.LockTrackerNoBarrier;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import 
org.apache.ignite.internal.processors.cache.persistence.diagnostic.pagelocktracker.PageLockTracker;
 import 
org.apache.ignite.internal.processors.cache.persistence.diagnostic.pagelocktracker.PageLockTrackerFactory;
 import 
org.apache.ignite.internal.processors.cache.persistence.tree.util.PageLockListener;
@@ -30,9 +31,6 @@ import org.openjdk.jmh.annotations.Scope;
 import org.openjdk.jmh.annotations.Setup;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.Warmup;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 import static 
org.apache.ignite.internal.processors.cache.persistence.diagnostic.pagelocktracker.PageLockTrackerFactory.HEAP_LOG;
 import static 
org.apache.ignite.internal.processors.cache.persistence.diagnostic.pagelocktracker.PageLockTrackerFactory.HEAP_STACK;
@@ -47,11 +45,9 @@ public class JmhPageLockTrackerBenchmark {
      * @param args Params.
      */
     public static void main(String[] args) throws Exception {
-        Options opt = new OptionsBuilder()
-            .include(JmhPageLockTrackerBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(opt).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhPageLockTrackerBenchmark.class.getSimpleName())
+            .run();
     }
 
     /** */
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/encryption/JmhKeystoreEncryptionSpiBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/encryption/JmhKeystoreEncryptionSpiBenchmark.java
index 4f5391f5b8d..a18647bcfa8 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/encryption/JmhKeystoreEncryptionSpiBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/encryption/JmhKeystoreEncryptionSpiBenchmark.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.benchmarks.jmh.encryption;
 import java.nio.ByteBuffer;
 import java.util.concurrent.ThreadLocalRandom;
 import org.apache.ignite.internal.benchmarks.jmh.JmhAbstractBenchmark;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.apache.ignite.spi.encryption.keystore.KeystoreEncryptionKey;
 import org.apache.ignite.spi.encryption.keystore.KeystoreEncryptionSpi;
 import org.openjdk.jmh.annotations.Benchmark;
@@ -29,9 +30,6 @@ import org.openjdk.jmh.annotations.Setup;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.TearDown;
 import org.openjdk.jmh.infra.Blackhole;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 import static org.apache.ignite.internal.util.IgniteUtils.resolveIgnitePath;
 
@@ -114,14 +112,12 @@ public class JmhKeystoreEncryptionSpiBenchmark extends 
JmhAbstractBenchmark {
 
     /** */
     public static void main(String[] args) throws Exception {
-        Options opt = new OptionsBuilder()
-            .include(JmhKeystoreEncryptionSpiBenchmark.class.getSimpleName())
+        JmhIdeBenchmarkRunner.create()
+            
.benchmarks(JmhKeystoreEncryptionSpiBenchmark.class.getSimpleName())
             .threads(1)
             .forks(1)
             .warmupIterations(10)
             .measurementIterations(20)
-            .build();
-
-        new Runner(opt).run();
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/GridDhtPartitionsStateValidatorBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/GridDhtPartitionsStateValidatorBenchmark.java
index f34430ea036..cd8d217d5de 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/GridDhtPartitionsStateValidatorBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/GridDhtPartitionsStateValidatorBenchmark.java
@@ -179,12 +179,12 @@ public class GridDhtPartitionsStateValidatorBenchmark 
extends JmhAbstractBenchma
      */
     private static void run(int threads) throws Exception {
         JmhIdeBenchmarkRunner.create()
-                .forks(1)
-                .threads(threads)
-                .warmupIterations(5)
-                .measurementIterations(10)
-                
.benchmarks(GridDhtPartitionsStateValidatorBenchmark.class.getSimpleName())
-                .jvmArguments("-XX:+UseG1GC", "-Xms4g", "-Xmx4g")
-                .run();
+            .forks(1)
+            .threads(threads)
+            .warmupIterations(5)
+            .measurementIterations(10)
+            
.benchmarks(GridDhtPartitionsStateValidatorBenchmark.class.getSimpleName())
+            .jvmArguments("-XX:+UseG1GC", "-Xms4g", "-Xmx4g")
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/JmhPartitionUpdateCounterBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/JmhPartitionUpdateCounterBenchmark.java
index ff45c9fe73e..f75d17e4529 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/JmhPartitionUpdateCounterBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/JmhPartitionUpdateCounterBenchmark.java
@@ -20,6 +20,7 @@ package org.apache.ignite.internal.benchmarks.jmh.misc;
 import java.util.Random;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import 
org.apache.ignite.internal.processors.cache.PartitionUpdateCounterTrackingImpl;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
@@ -33,9 +34,6 @@ import org.openjdk.jmh.annotations.Setup;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.Threads;
 import org.openjdk.jmh.annotations.Warmup;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmarks {@link PartitionUpdateCounterTrackingImpl} class.
@@ -102,10 +100,8 @@ public class JmhPartitionUpdateCounterBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhPartitionUpdateCounterBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            
.benchmarks(JmhPartitionUpdateCounterBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/JmhSegmentedLruListBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/JmhSegmentedLruListBenchmark.java
index fa418dd4a12..26a769da1e9 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/JmhSegmentedLruListBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/JmhSegmentedLruListBenchmark.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.benchmarks.jmh.misc;
 
 import java.util.Random;
 import java.util.concurrent.TimeUnit;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.apache.ignite.internal.mem.DirectMemoryProvider;
 import org.apache.ignite.internal.mem.DirectMemoryRegion;
 import org.apache.ignite.internal.mem.unsafe.UnsafeMemoryProvider;
@@ -36,9 +37,6 @@ import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.TearDown;
 import org.openjdk.jmh.annotations.Threads;
 import org.openjdk.jmh.annotations.Warmup;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmarks {@link SegmentedLruPageList} class.
@@ -113,10 +111,8 @@ public class JmhSegmentedLruListBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhSegmentedLruListBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhSegmentedLruListBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/JmhTracingContextBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/JmhTracingContextBenchmark.java
index 0a650568b1b..22874d528fe 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/JmhTracingContextBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/misc/JmhTracingContextBenchmark.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.internal.benchmarks.jmh.misc;
 
 import java.util.concurrent.TimeUnit;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.apache.ignite.internal.processors.tracing.MTC;
 import org.apache.ignite.internal.processors.tracing.NoopTracing;
 import org.apache.ignite.internal.processors.tracing.Span;
@@ -36,9 +37,6 @@ import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.Threads;
 import org.openjdk.jmh.annotations.Warmup;
 import org.openjdk.jmh.infra.Blackhole;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmarks {@link MTC} class.
@@ -103,10 +101,8 @@ public class JmhTracingContextBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhTracingContextBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhTracingContextBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/notify/JmhWaitStategyBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/notify/JmhWaitStategyBenchmark.java
index 8d615aaf544..1c6a641b8e3 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/notify/JmhWaitStategyBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/notify/JmhWaitStategyBenchmark.java
@@ -32,6 +32,7 @@ import org.apache.ignite.Ignition;
 import org.apache.ignite.cache.CacheAtomicityMode;
 import org.apache.ignite.configuration.CacheConfiguration;
 import 
org.apache.ignite.internal.benchmarks.jmh.cache.JmhCacheAbstractBenchmark;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.apache.ignite.internal.benchmarks.model.IntValue;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
@@ -47,10 +48,6 @@ import org.openjdk.jmh.annotations.TearDown;
 import org.openjdk.jmh.annotations.Warmup;
 import org.openjdk.jmh.infra.BenchmarkParams;
 import org.openjdk.jmh.results.RunResult;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.RunnerException;
-import org.openjdk.jmh.runner.options.ChainedOptionsBuilder;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 import org.openjdk.jmh.runner.options.TimeValue;
 
 /**
@@ -218,7 +215,7 @@ public class JmhWaitStategyBenchmark extends 
JmhCacheAbstractBenchmark {
     /**
      * Benchmark runner
      */
-    public static void main(String[] args) throws RunnerException {
+    public static void main(String[] args) throws Exception {
         List<String> policies = Arrays.asList("inc", "dec", "r25", "r50", 
"r75");
         int[] threads = {2, 4, 8, 16, 32};
 
@@ -226,20 +223,18 @@ public class JmhWaitStategyBenchmark extends 
JmhCacheAbstractBenchmark {
 
         for (String plc : policies) {
             for (int thread : threads) {
-                ChainedOptionsBuilder builder = new OptionsBuilder()
-                    .jvmArgs()
-                    .timeUnit(TimeUnit.MILLISECONDS)
+                JmhIdeBenchmarkRunner runner = JmhIdeBenchmarkRunner.create()
+                    .outputTimeUnit(TimeUnit.MILLISECONDS)
                     .measurementIterations(10)
                     .measurementTime(TimeValue.seconds(20))
                     .warmupIterations(5)
                     .warmupTime(TimeValue.seconds(10))
-                    .jvmArgs("-Dbench.exp.policy=" + plc)
+                    .jvmArguments("-Dbench.exp.policy=" + plc)
                     .forks(1)
                     .threads(thread)
-                    .mode(Mode.Throughput)
-                    .include(JmhWaitStategyBenchmark.class.getSimpleName());
+                    .benchmarks(JmhWaitStategyBenchmark.class.getSimpleName());
 
-                results.addAll(new Runner(builder.build()).run());
+                results.addAll(runner.run());
             }
         }
 
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/runner/JmhIdeBenchmarkRunner.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/runner/JmhIdeBenchmarkRunner.java
index f7d9282c874..a0266513bcc 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/runner/JmhIdeBenchmarkRunner.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/runner/JmhIdeBenchmarkRunner.java
@@ -17,29 +17,44 @@
 
 package org.apache.ignite.internal.benchmarks.jmh.runner;
 
+import java.util.Collection;
 import java.util.concurrent.TimeUnit;
+import org.apache.ignite.internal.util.typedef.F;
 import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.results.RunResult;
 import org.openjdk.jmh.runner.Runner;
 import org.openjdk.jmh.runner.options.OptionsBuilder;
+import org.openjdk.jmh.runner.options.TimeValue;
+
+import static org.apache.ignite.internal.util.FeatureChecker.JAVA_17_OPTIONS;
 
 /**
  * JMH IDE benchmark runner configuration.
  */
 public class JmhIdeBenchmarkRunner {
+    /** Default JVM arguments. */
+    private static final String[] DFLT_JVM_ARGS = JAVA_17_OPTIONS.split("\n");
+
     /** Benchmark modes. */
-    private Mode[] benchmarkModes = new Mode[] { Mode.Throughput };
+    private Mode[] benchmarkModes;
 
     /** Amount of forks */
     private int forks = 1;
 
     /** Warmup iterations. */
-    private int warmupIterations = 10;
+    private int warmupIterations = -1;
+
+    /** Warmup time. */
+    private TimeValue warmupTime;
 
     /** Measurement operations. */
-    private int measurementIterations = 10;
+    private int measurementIterations;
+
+    /** Measurement time. */
+    private TimeValue measurementTime;
 
     /** Output time unit. */
-    private TimeUnit outputTimeUnit = TimeUnit.SECONDS;
+    private TimeUnit outputTimeUnit;
 
     /** Benchmarks to run. */
     private Object[] benchmarks;
@@ -102,6 +117,16 @@ public class JmhIdeBenchmarkRunner {
         return this;
     }
 
+    /**
+     * @param warmupTime Warmup time.
+     * @return This instance.
+     */
+    public JmhIdeBenchmarkRunner warmupTime(TimeValue warmupTime) {
+        this.warmupTime = warmupTime;
+
+        return this;
+    }
+
     /**
      * @param measurementIterations Measurement iterations.
      * @return This instance.
@@ -112,6 +137,16 @@ public class JmhIdeBenchmarkRunner {
         return this;
     }
 
+    /**
+     * @param measurementTime Measurement time.
+     * @return This instance.
+     */
+    public JmhIdeBenchmarkRunner measurementTime(TimeValue measurementTime) {
+        this.measurementTime = measurementTime;
+
+        return this;
+    }
+
     /**
      * @param outputTimeUnit Output time unit.
      * @return This instance.
@@ -181,10 +216,24 @@ public class JmhIdeBenchmarkRunner {
         OptionsBuilder builder = new OptionsBuilder();
 
         builder.forks(forks);
-        builder.warmupIterations(warmupIterations);
-        builder.measurementIterations(measurementIterations);
-        builder.timeUnit(outputTimeUnit);
-        builder.threads(threads);
+
+        if (warmupIterations >= 0)
+            builder.warmupIterations(warmupIterations);
+
+        if (warmupTime != null)
+            builder.warmupTime(warmupTime);
+
+        if (measurementIterations > 0)
+            builder.measurementIterations(measurementIterations);
+
+        if (measurementTime != null)
+            builder.measurementTime(measurementTime);
+
+        if (outputTimeUnit != null)
+            builder.timeUnit(outputTimeUnit);
+
+        if (threads > 0)
+            builder.threads(threads);
 
         if (benchmarkModes != null) {
             for (Mode benchmarkMode : benchmarkModes)
@@ -200,8 +249,7 @@ public class JmhIdeBenchmarkRunner {
             }
         }
 
-        if (jvmArgs != null)
-            builder.jvmArgs(jvmArgs);
+        builder.jvmArgs(jvmArgs != null ? F.concat(DFLT_JVM_ARGS, jvmArgs) : 
DFLT_JVM_ARGS);
 
         if (output != null)
             builder.output(output);
@@ -215,12 +263,13 @@ public class JmhIdeBenchmarkRunner {
     }
 
     /**
-     * Run benchmarks.
+     * Run benchmarks and return results.
      *
+     * @return Results.
      * @throws Exception If failed.
      */
-    public void run() throws Exception {
-        new Runner(optionsBuilder().build()).run();
+    public Collection<RunResult> run() throws Exception {
+        return new Runner(optionsBuilder().build()).run();
     }
 
     /**
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhCacheWithInterceptorBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhCacheWithInterceptorBenchmark.java
index e2cb09afd99..37b867c370a 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhCacheWithInterceptorBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhCacheWithInterceptorBenchmark.java
@@ -21,6 +21,7 @@ import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.TimeUnit;
 import org.apache.ignite.cache.CacheInterceptorAdapter;
 import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
 import org.openjdk.jmh.annotations.Fork;
@@ -31,9 +32,6 @@ import org.openjdk.jmh.annotations.Param;
 import org.openjdk.jmh.annotations.Scope;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.Warmup;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmark cache with interceptor queries.
@@ -73,10 +71,8 @@ public class JmhCacheWithInterceptorBenchmark extends 
JmhSqlAbstractBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhCacheWithInterceptorBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhCacheWithInterceptorBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlAggBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlAggBenchmark.java
index e767c1936de..fe924589dd2 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlAggBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlAggBenchmark.java
@@ -18,10 +18,8 @@
 package org.apache.ignite.internal.benchmarks.jmh.sql;
 
 import java.util.List;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmark aggregate SQL queries.
@@ -69,10 +67,8 @@ public class JmhSqlAggBenchmark extends 
JmhSqlAbstractBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhSqlAggBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhSqlAggBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlCorrelateBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlCorrelateBenchmark.java
index 07004ae63ee..8d14421f06b 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlCorrelateBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlCorrelateBenchmark.java
@@ -19,10 +19,8 @@ package org.apache.ignite.internal.benchmarks.jmh.sql;
 
 import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmark correlated SQL queries.
@@ -52,10 +50,8 @@ public class JmhSqlCorrelateBenchmark extends 
JmhSqlAbstractBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhSqlCorrelateBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhSqlCorrelateBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlDmlBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlDmlBenchmark.java
index 6cdb00ff48e..5bbc0a7d48d 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlDmlBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlDmlBenchmark.java
@@ -20,10 +20,8 @@ package org.apache.ignite.internal.benchmarks.jmh.sql;
 import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
 import org.apache.ignite.IgniteDataStreamer;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmark DML queries.
@@ -119,10 +117,8 @@ public class JmhSqlDmlBenchmark extends 
JmhSqlAbstractBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhSqlDmlBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhSqlDmlBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlDmlReplicatedBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlDmlReplicatedBenchmark.java
index eb0407d2ee4..016e89734e2 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlDmlReplicatedBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlDmlReplicatedBenchmark.java
@@ -20,9 +20,7 @@ package org.apache.ignite.internal.benchmarks.jmh.sql;
 import org.apache.ignite.cache.CacheMode;
 import org.apache.ignite.cache.CacheWriteSynchronizationMode;
 import org.apache.ignite.configuration.CacheConfiguration;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 
 /**
  * Benchmark DML queries on replicated cache.
@@ -41,10 +39,8 @@ public class JmhSqlDmlReplicatedBenchmark extends 
JmhSqlDmlBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhSqlDmlReplicatedBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhSqlDmlReplicatedBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlInsertBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlInsertBenchmark.java
index fa291430c59..d6f3c105f9b 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlInsertBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlInsertBenchmark.java
@@ -19,6 +19,7 @@ package org.apache.ignite.internal.benchmarks.jmh.sql;
 
 import java.util.concurrent.TimeUnit;
 import java.util.stream.IntStream;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.annotations.BenchmarkMode;
 import org.openjdk.jmh.annotations.Fork;
@@ -29,9 +30,6 @@ import org.openjdk.jmh.annotations.Scope;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.Threads;
 import org.openjdk.jmh.annotations.Warmup;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 import static java.lang.String.format;
 import static java.util.stream.Collectors.joining;
@@ -111,11 +109,9 @@ public class JmhSqlInsertBenchmark extends 
JmhSqlAbstractBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhSqlInsertBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhSqlInsertBenchmark.class.getSimpleName())
+            .run();
     }
 
     /** */
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlJoinBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlJoinBenchmark.java
index 611e6ff2947..1293420d1ed 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlJoinBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlJoinBenchmark.java
@@ -19,10 +19,8 @@ package org.apache.ignite.internal.benchmarks.jmh.sql;
 
 import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmark JOIN queries.
@@ -76,10 +74,8 @@ public class JmhSqlJoinBenchmark extends 
JmhSqlAbstractBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhSqlJoinBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhSqlJoinBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlScanBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlScanBenchmark.java
index 42080465b80..05e06e60d81 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlScanBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlScanBenchmark.java
@@ -19,10 +19,8 @@ package org.apache.ignite.internal.benchmarks.jmh.sql;
 
 import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmark scan SQL queries.
@@ -87,10 +85,8 @@ public class JmhSqlScanBenchmark extends 
JmhSqlAbstractBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhSqlScanBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhSqlScanBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlScanReplicatedBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlScanReplicatedBenchmark.java
index 9832bbe6dc6..28e27dca391 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlScanReplicatedBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlScanReplicatedBenchmark.java
@@ -20,9 +20,7 @@ package org.apache.ignite.internal.benchmarks.jmh.sql;
 import org.apache.ignite.cache.CacheMode;
 import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
 import org.apache.ignite.configuration.CacheConfiguration;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 
 /**
  * Benchmark replicated scan SQL queries.
@@ -41,10 +39,8 @@ public class JmhSqlScanReplicatedBenchmark extends 
JmhSqlScanBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhSqlScanReplicatedBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhSqlScanReplicatedBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlSetOpBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlSetOpBenchmark.java
index 09f8891218b..50be4f53a9c 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlSetOpBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlSetOpBenchmark.java
@@ -19,11 +19,9 @@ package org.apache.ignite.internal.benchmarks.jmh.sql;
 
 import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.openjdk.jmh.annotations.Benchmark;
 import org.openjdk.jmh.profile.GCProfiler;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmark set op SQL queries.
@@ -70,11 +68,9 @@ public class JmhSqlSetOpBenchmark extends 
JmhSqlAbstractBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhSqlSetOpBenchmark.class.getSimpleName())
-            .addProfiler(GCProfiler.class)
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhSqlSetOpBenchmark.class.getSimpleName())
+            .profilers(GCProfiler.class)
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlSortBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlSortBenchmark.java
index 8493a2a9138..888a40931c8 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlSortBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlSortBenchmark.java
@@ -19,10 +19,8 @@ package org.apache.ignite.internal.benchmarks.jmh.sql;
 
 import java.util.List;
 import java.util.concurrent.ThreadLocalRandom;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmark sort SQL queries.
@@ -70,10 +68,8 @@ public class JmhSqlSortBenchmark extends 
JmhSqlAbstractBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhSqlSortBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhSqlSortBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlUdfBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlUdfBenchmark.java
index c3d24ca055b..820b8e3972f 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlUdfBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/JmhSqlUdfBenchmark.java
@@ -20,10 +20,8 @@ package org.apache.ignite.internal.benchmarks.jmh.sql;
 import java.util.List;
 import org.apache.ignite.cache.query.annotations.QuerySqlFunction;
 import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.openjdk.jmh.annotations.Benchmark;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmark user defined functions in SQL queries.
@@ -72,10 +70,8 @@ public class JmhSqlUdfBenchmark extends 
JmhSqlAbstractBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(JmhSqlUdfBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhSqlUdfBenchmark.class.getSimpleName())
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/tpch/TpchBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/tpch/TpchBenchmark.java
index 8784b0d8f5f..e6471176bf7 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/tpch/TpchBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/sql/tpch/TpchBenchmark.java
@@ -39,6 +39,7 @@ import 
org.apache.ignite.configuration.TransactionConfiguration;
 import org.apache.ignite.indexing.IndexingQueryEngineConfiguration;
 import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.IgniteInterruptedCheckedException;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import 
org.apache.ignite.internal.processors.query.calcite.integration.tpch.TpchHelper;
 import org.apache.ignite.internal.util.typedef.internal.U;
 import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
@@ -58,20 +59,13 @@ import org.openjdk.jmh.annotations.TearDown;
 import org.openjdk.jmh.annotations.Threads;
 import org.openjdk.jmh.annotations.Warmup;
 import org.openjdk.jmh.infra.Blackhole;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Benchmark TPC-H SQL queries.
  */
 @State(Scope.Benchmark)
-// Use @Fork(value = 0) to debug or attach profiler.
-@Fork(value = 1, jvmArgs = {
-    "-Xms4g", "-Xmx4g",
-    "-Dcalcite.volcano.dump.graphviz=false",
-    "-Dcalcite.volcano.dump.sets=false"
-})
+// Use @Fork(0) to debug or attach profiler.
+@Fork(1)
 @Threads(1)
 @OutputTimeUnit(TimeUnit.MILLISECONDS)
 @SuppressWarnings({"unused"})
@@ -327,10 +321,11 @@ public class TpchBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(TpchBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(TpchBenchmark.class.getSimpleName())
+            .jvmArguments("-Xms4g", "-Xmx4g",
+                "-Dcalcite.volcano.dump.graphviz=false",
+                "-Dcalcite.volcano.dump.sets=false")
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/streamer/JmhStreamerAddDataBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/streamer/JmhStreamerAddDataBenchmark.java
index 417860bd302..c362fc7a648 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/streamer/JmhStreamerAddDataBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/streamer/JmhStreamerAddDataBenchmark.java
@@ -29,6 +29,7 @@ import org.apache.ignite.Ignition;
 import org.apache.ignite.cache.CacheWriteSynchronizationMode;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.apache.ignite.logger.NullLogger;
 import org.jetbrains.annotations.NotNull;
 import org.openjdk.jmh.annotations.Benchmark;
@@ -44,10 +45,6 @@ import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.TearDown;
 import org.openjdk.jmh.annotations.Threads;
 import org.openjdk.jmh.annotations.Warmup;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.RunnerException;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
 
@@ -55,7 +52,7 @@ import static 
org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_SYNC;
  * DataStreamerImpl.addData(Collection) vs DataStreamerImpl.addData(Key, 
Value).
  */
 @BenchmarkMode(Mode.AverageTime)
-@Fork(value = 1, jvmArgsAppend = {"-Xms1g", "-Xmx3g", "-server", 
"-XX:+AggressiveOpts", "-XX:MaxMetaspaceSize=256m"})
+@Fork(1)
 @Measurement(iterations = 11)
 @OutputTimeUnit(TimeUnit.MILLISECONDS)
 @State(Scope.Benchmark)
@@ -209,11 +206,10 @@ public class JmhStreamerAddDataBenchmark {
      *
      * @param args Args.
      */
-    public static void main(String[] args) throws RunnerException {
-        final Options options = new OptionsBuilder()
-            .include(JmhStreamerAddDataBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+    public static void main(String[] args) throws Exception {
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(JmhStreamerAddDataBenchmark.class.getSimpleName())
+            .jvmArguments("-Xms1g", "-Xmx3g", "-server", 
"-XX:MaxMetaspaceSize=256m")
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/thin/JmhThinClientCacheBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/thin/JmhThinClientCacheBenchmark.java
index 88e6a87171d..3398e7e8fda 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/thin/JmhThinClientCacheBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/thin/JmhThinClientCacheBenchmark.java
@@ -64,18 +64,18 @@ public class JmhThinClientCacheBenchmark extends 
JmhThinClientAbstractBenchmark
      */
     public static void main(String[] args) throws Exception {
         JmhIdeBenchmarkRunner runner = JmhIdeBenchmarkRunner.create()
-                .forks(1)
-                .threads(4)
-                .benchmarks(JmhThinClientCacheBenchmark.class.getSimpleName())
-                .jvmArguments("-Xms4g", "-Xmx4g");
+            .forks(1)
+            .threads(4)
+            .benchmarks(JmhThinClientCacheBenchmark.class.getSimpleName())
+            .jvmArguments("-Xms4g", "-Xmx4g")
+            .measurementIterations(10)
+            .warmupIterations(10);
 
-        runner
-                .benchmarkModes(Mode.Throughput)
-                .run();
+        runner.run();
 
         runner
-                .benchmarkModes(Mode.AverageTime)
-                .outputTimeUnit(TimeUnit.MICROSECONDS)
-                .run();
+            .benchmarkModes(Mode.AverageTime)
+            .outputTimeUnit(TimeUnit.MICROSECONDS)
+            .run();
     }
 }
diff --git 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/IndexFindBenchmark.java
 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/IndexFindBenchmark.java
index b63525fbe4c..546504ae60a 100644
--- 
a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/IndexFindBenchmark.java
+++ 
b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/tree/IndexFindBenchmark.java
@@ -26,6 +26,7 @@ import 
org.apache.ignite.cache.query.annotations.QuerySqlField;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
 import org.apache.ignite.internal.cache.query.index.sorted.IndexKeyType;
 import org.apache.ignite.internal.cache.query.index.sorted.IndexPlainRowImpl;
 import org.apache.ignite.internal.cache.query.index.sorted.IndexRow;
@@ -45,9 +46,6 @@ import org.openjdk.jmh.annotations.Setup;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.TearDown;
 import org.openjdk.jmh.annotations.Warmup;
-import org.openjdk.jmh.runner.Runner;
-import org.openjdk.jmh.runner.options.Options;
-import org.openjdk.jmh.runner.options.OptionsBuilder;
 
 /**
  * Index find benchmark.
@@ -178,11 +176,9 @@ public class IndexFindBenchmark {
      * @throws Exception Exception.
      */
     public static void main(String[] args) throws Exception {
-        final Options options = new OptionsBuilder()
-            .include(IndexFindBenchmark.class.getSimpleName())
-            .build();
-
-        new Runner(options).run();
+        JmhIdeBenchmarkRunner.create()
+            .benchmarks(IndexFindBenchmark.class.getSimpleName())
+            .run();
     }
 
     /** */
diff --git 
a/modules/unsafe/src/main/java/org/apache/ignite/internal/util/FeatureChecker.java
 
b/modules/unsafe/src/main/java/org/apache/ignite/internal/util/FeatureChecker.java
index d09bac8a069..0dd82baa826 100644
--- 
a/modules/unsafe/src/main/java/org/apache/ignite/internal/util/FeatureChecker.java
+++ 
b/modules/unsafe/src/main/java/org/apache/ignite/internal/util/FeatureChecker.java
@@ -20,33 +20,34 @@ package org.apache.ignite.internal.util;
  * Class extracted for fields from GridUnsafe to be absolutely independent 
with current and future static block
  * initialization effects.
  */
-class FeatureChecker {
+public class FeatureChecker {
     /** Required Options to Run on Java 17 and higher. */
-    public static final String JAVA_17_OPTIONS =
-        "--add-opens=java.base/jdk.internal.access=ALL-UNNAMED\n" +
-        "--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED\n" +
-        "--add-opens=java.base/sun.nio.ch=ALL-UNNAMED\n" +
-        "--add-opens=java.base/sun.util.calendar=ALL-UNNAMED\n" +
-        "--add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED\n" +
-        "--add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED\n" +
-        
"--add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED\n" +
-        "--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED\n" 
+
-        "--add-opens=java.base/java.io=ALL-UNNAMED\n" +
-        "--add-opens=java.base/java.nio=ALL-UNNAMED\n" +
-        "--add-opens=java.base/java.util=ALL-UNNAMED\n" +
-        "--add-opens=java.base/java.net=ALL-UNNAMED\n" +
-        "--add-opens=java.base/java.util.concurrent=ALL-UNNAMED\n" +
-        "--add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED\n" +
-        "--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED\n" +
-        "--add-opens=java.base/java.lang=ALL-UNNAMED\n" +
-        "--add-opens=java.base/java.lang.invoke=ALL-UNNAMED\n" +
-        "--add-opens=java.base/java.math=ALL-UNNAMED\n" +
-        "--add-opens=java.sql/java.sql=ALL-UNNAMED";
+    public static final String JAVA_17_OPTIONS = """
+        --add-opens=java.base/jdk.internal.access=ALL-UNNAMED
+        --add-opens=java.base/jdk.internal.misc=ALL-UNNAMED
+        --add-opens=java.base/sun.nio.ch=ALL-UNNAMED
+        --add-opens=java.base/sun.util.calendar=ALL-UNNAMED
+        --add-opens=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED
+        --add-opens=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED
+        
--add-opens=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED
+        --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED
+        --add-opens=java.base/java.io=ALL-UNNAMED
+        --add-opens=java.base/java.nio=ALL-UNNAMED
+        --add-opens=java.base/java.util=ALL-UNNAMED
+        --add-opens=java.base/java.net=ALL-UNNAMED
+        --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
+        --add-opens=java.base/java.util.concurrent.locks=ALL-UNNAMED
+        --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
+        --add-opens=java.base/java.lang=ALL-UNNAMED
+        --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
+        --add-opens=java.base/java.math=ALL-UNNAMED
+        --add-opens=java.sql/java.sql=ALL-UNNAMED
+        --add-opens=java.base/java.time=ALL-UNNAMED
+        """;
 
     /** Java version specific warning to be added in case access failed */
     public static final String JAVA_VER_SPECIFIC_WARN =
         "\nPlease add the following parameters to JVM startup settings and 
restart the application: {parameters: " +
-            JAVA_17_OPTIONS +
-            "\n}" +
+            JAVA_17_OPTIONS + "}" +
             "\nSee 
https://ignite.apache.org/docs/latest/quick-start/java#running-ignite-with-java-17-or-later
 for more information.";
 }

Reply via email to