It's probably not the response that you were hoping to see but I'd avoid
testing for performance using loopback interface.
There are whole parts of the network stack omitted by the Linux kernel in
such scenarios.
Not mentioning that open HFT may employ socket mechanics different from
what's available in jdk.

On Sat, 12 May 2018, 19:03 John Hening, <[email protected]> wrote:

> Hello,
> I am trying to examine a throughput of OpenHFT networking in version
> 1.12.2 to compare it with my toy.
>
> My test works in the following way:
>
> I have few concurrent clients that send (by loopback) to the server
> (written with OpenHFT networking) 131`072 messages of size 4KB and
> blocking-wait for a (1-byte) response that confirms that message was
> processed by the server.
>
> I've run a test with -DServerThreadingStrategy=CONCURRENT,
> MULTI_THREADED_BUSY_WAITING  and SINGLE_THREADED.
>
>
>
>     number of clients                                    OpenHFT: avg.
> Messages per second:             my toy
> (run on different threads)    CONCURRENT  SINGLE_THREADED
> MULTI_THREADED_BUSY_WAITING             CONCURRENT (no single threaded
> strategy)
>           1                   52.47         50.4                     49.95
> 41.4
>           2                   40.21         48.57                    39.54
>                           44.65
>           4                   21.92         23.68                    21.51
>                          32.04
>           8                   10.78         12.83                    10.91
>                          23.06
>          16                   5.53          6.02                     5.57
>                            11.77
>          32                   2.68          2.79                     2.76
>                            6.46
>
>
>
> ________________________________________________________________________________________________________________________________________________________________
>
>
>
> I suppose that the problem is with my usage of that library, but I cannot
> figure out what is wrong- it is not so easy to write a test because of
> lack/obsolete documentation/examples.
>
> The server is run as follows: (I skipped not important details to make it
> shorter)
>
>     private static EventLoop eg;
>
>     public static void starServer() {
>         eg = new EventGroup(true);
>         eg.start();
>         TCPRegistry.createServerSocketChannelFor(desc);
>         AcceptorEventHandler eah = new AcceptorEventHandler(desc,
> LegacyHanderFactory.legacyTcpEventHandlerFactory(nc -> new Confirmer()), V
> anillaNetworkContext::new);
>
>                                                // Confirmer send one-byte
> message to a client to confirm processing of message
>         eg.addHandler(eah);
>     }
>
>     class Confirmer implements TcpHandler<NetworkContext> {
>         @Override
>         public void process(@NotNull final Bytes in, @NotNull final Bytes
> out, NetworkContext nc) {
>             if (in.readRemaining() == 0){
>                 return;
>             }
>             out.write(in, in.readPosition(), 1); // send a confirmation
>             in.readSkip(Math.min(in.readRemaining(), out.writeRemaining
> ()));
>         }
>     }
> }
>
>
>
> A client code (run on different threads):
>
> private void sender(long numberOfMessage, int sizeOfMessage) {
>     SocketChannel sc = TCPRegistry.createSocketChannel(desc);
>     sc.configureBlocking(true);
>     ByteBuffer buffer = ByteBuffer.allocateDirect(sizeOfMessage);
>     ByteBuffer recv = ByteBuffer.allocateDirect(1);
>     buffer.putInt(64); // required bytes. To be frankly, I don't
> understand exactly why 64.
>     buffer.put(bytes.getBytes()); // nearly 4KB-text-message
>
>     long start = System.nanoTime();
>     for(int i = 0; i < numberOfMessage; i++){
>         buffer.clear();
>         recv.clear();
>         sc.write(buffer);
>         sc.read(recv);
>     }
>     times.add(System.nanoTime() - start); // use it to compute an average
> after
>     sc.close();
> }
>
>
>
> And I use times to get an average throughput.
>
> P.S. I see that system is loaded (in the sense of threads and kernel
> network stack) but results seems to be low though. I don't have an
> experience and I cannot decide whether that results are normal.
> P.S.2 I also know that my test is primitive
>
> --
> You received this message because you are subscribed to the Google Groups
> "mechanical-sympathy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to