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

ptupitsyn pushed a commit to branch ignite-13496-nio-selectors
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/ignite-13496-nio-selectors by 
this push:
     new cc1d4b2  Enable 4 selectors, add reproducer without JMH
cc1d4b2 is described below

commit cc1d4b294dccc7bd89710c4cc0d37145fffcd3e0
Author: Pavel Tupitsyn <[email protected]>
AuthorDate: Wed Nov 25 21:01:23 2020 +0300

    Enable 4 selectors, add reproducer without JMH
---
 .../jmh/thin/JmhThinClientCacheBenchmark.java      | 93 +++++++++-------------
 .../GridNioClientConnectionMultiplexer.java        |  2 +-
 2 files changed, 39 insertions(+), 56 deletions(-)

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 acdd0d0..3beeb24 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
@@ -1,8 +1,11 @@
 package org.apache.ignite.internal.benchmarks.jmh.thin;
 
+import java.util.ArrayList;
+import java.util.concurrent.ForkJoinPool;
+import java.util.concurrent.ForkJoinTask;
 import java.util.concurrent.ThreadLocalRandom;
 
-import org.apache.ignite.internal.benchmarks.jmh.runner.JmhIdeBenchmarkRunner;
+import org.apache.ignite.IgniteSystemProperties;
 import org.openjdk.jmh.annotations.Benchmark;
 
 public class JmhThinClientCacheBenchmark extends 
JmhThinClientAbstractBenchmark {
@@ -34,60 +37,40 @@ public class JmhThinClientCacheBenchmark extends 
JmhThinClientAbstractBenchmark
      */
     public static void main(String[] args) throws Exception {
         // TODO: Benchmark hangs when GridNioServer.selectorCount > 1
-        // This goes away with -DIGNITE_IO_BALANCE_PERIOD=0
-        // TODO: File ticket for IGNITE_IO_BALANCE_PERIOD issue
-        // TODO: Exception with multiple selectors - race condition?
-//        class org.apache.ignite.binary.BinaryObjectException: Invalid flag 
value: 0
-//        at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1964)
-//        at 
org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
-//        at 
org.apache.ignite.internal.binary.GridBinaryMarshaller.deserialize(GridBinaryMarshaller.java:319)
-//        at 
org.apache.ignite.internal.client.thin.ClientBinaryMarshaller.deserialize(ClientBinaryMarshaller.java:74)
-//        at 
org.apache.ignite.internal.client.thin.ClientUtils.readObject(ClientUtils.java:579)
-//        at 
org.apache.ignite.internal.client.thin.ClientUtils.readObject(ClientUtils.java:569)
-//        at 
org.apache.ignite.internal.client.thin.TcpClientCache.readObject(TcpClientCache.java:783)
-//        at 
org.apache.ignite.internal.client.thin.TcpClientCache.readObject(TcpClientCache.java:788)
-//        at 
org.apache.ignite.internal.client.thin.TcpClientChannel.receive(TcpClientChannel.java:261)
-//        at 
org.apache.ignite.internal.client.thin.TcpClientChannel.service(TcpClientChannel.java:187)
-//        at 
org.apache.ignite.internal.client.thin.ReliableChannel.lambda$affinityService$5(ReliableChannel.java:321)
-//        at 
org.apache.ignite.internal.client.thin.ReliableChannel.applyOnNodeChannelWithFallback(ReliableChannel.java:820)
-//        at 
org.apache.ignite.internal.client.thin.ReliableChannel.affinityService(ReliableChannel.java:320)
-//        at 
org.apache.ignite.internal.client.thin.TcpClientCache.cacheSingleKeyOperation(TcpClientCache.java:711)
-//        at 
org.apache.ignite.internal.client.thin.TcpClientCache.get(TcpClientCache.java:111)
-//        at 
org.apache.ignite.internal.benchmarks.jmh.thin.JmhThinClientCacheBenchmark.get(JmhThinClientCacheBenchmark.java:26)
-//
-//
-//        JmhThinClientCacheBenchmark b = new JmhThinClientCacheBenchmark();
-//        b.setup();
-//        b.put();
-//        b.get();
-//
-//        ArrayList<ForkJoinTask> tasks = new ArrayList<>();
-//        for (int i =0; i < 4; i++) {
-//            int finalI = i;
-//            ForkJoinTask<?> task = ForkJoinPool.commonPool().submit(() -> {
-//                for (int j = 0; j < 1000; j++) {
-//                    System.out.println(">> " + finalI + " - " + j);
-//                    b.get();
-//                }
-//            });
-//
-//            tasks.add(task);
-//        }
-//
-//        for (ForkJoinTask t: tasks) {
-//            t.join();
-//            System.out.println("JOINED");
-//        }
-//
-//        b.tearDown();
+        System.setProperty(IgniteSystemProperties.IGNITE_IO_BALANCE_PERIOD, 
"0");
 
-        JmhIdeBenchmarkRunner.create()
-                .forks(1)
-                .threads(4)
-                .warmupIterations(5)
-                .measurementIterations(10)
-                .benchmarks(JmhThinClientCacheBenchmark.class.getSimpleName())
-                .jvmArguments("-Xms4g", "-Xmx4g")
-                .run();
+        JmhThinClientCacheBenchmark b = new JmhThinClientCacheBenchmark();
+        b.setup();
+        b.put();
+        b.get();
+
+        ArrayList<ForkJoinTask> tasks = new ArrayList<>();
+        for (int i = 0; i < 4; i++) {
+            int threadIdx = i;
+            ForkJoinTask<?> task = ForkJoinPool.commonPool().submit(() -> {
+                for (int j = 0; j < 1000; j++) {
+                    System.out.println(">> " + threadIdx + " - " + j);
+                    b.get();
+                }
+            });
+
+            tasks.add(task);
+        }
+
+        for (ForkJoinTask t : tasks) {
+            t.join();
+            System.out.println("JOINED");
+        }
+
+        b.tearDown();
+
+//        JmhIdeBenchmarkRunner.create()
+//                .forks(1)
+//                .threads(4)
+//                .warmupIterations(5)
+//                .measurementIterations(10)
+//                
.benchmarks(JmhThinClientCacheBenchmark.class.getSimpleName())
+//                .jvmArguments("-Xms4g", "-Xmx4g")
+//                .run();
     }
 }
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnectionMultiplexer.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnectionMultiplexer.java
index 3519fa8..a0b76ad 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnectionMultiplexer.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnectionMultiplexer.java
@@ -83,7 +83,7 @@ public class GridNioClientConnectionMultiplexer implements 
ClientConnectionMulti
                     .logger(gridLog)
                     // TODO: Review settings below
                     // TODO: Buffer sizes from settings - check them
-                    .selectorCount(1) // TODO: Do we need a setting? Run a 
benchmark.
+                    .selectorCount(4) // TODO: Do we need a setting? Run a 
benchmark.
                     .byteOrder(ByteOrder.nativeOrder())
                     .directBuffer(true)
                     .directMode(false)

Reply via email to