You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by GitBox <gi...@apache.org> on 2019/03/27 20:50:24 UTC

[GitHub] [accumulo] keith-turner opened a new pull request #1059: Switch to thrift server with multiple selector threads.

keith-turner opened a new pull request #1059: Switch to thrift server with multiple selector threads.
URL: https://github.com/apache/accumulo/pull/1059
 
 
   Before this change Accumulo's used the THsHaServer thrift server. This
   server has a single select threads that read and writes frames to
   sockets.  The select thread puts the frames on a thread pool for
   processing.  On a machine with a lot of cores, this single thread can
   become a bottleneck.  This commit switches to use the thrift
   TThreadedSelectorServer server which support multiple select threads.
   
   To demonstrate the differernce this change can make, the
   RandomCachedLookupsPT performance test in accumulo-testing was run with
   and without this change.  The test was run on a machine with 16 cores.
   The test loads a table into cache and then does random lookups with
   varying numbers of threads.  It measures the average lookup time for
   each lookup. Below is a table of running this test.
   
   Threads | Single Selector | Multi Selector | Speedup
   --------|-----------------|----------------|---------
         1 | 0.14 ms         | 0.14 ms        | 1.00
         4 | 0.18 ms         | 0.19 ms        | 0.95
         8 | 0.24 ms         | 0.24 ms        | 1.00
        16 | 0.44 ms         | 0.44 ms        | 1.00
        32 | 0.85 ms         | 0.81 ms        | 1.05
        64 | 1.74 ms         | 1.40 ms        | 1.24
       128 | 3.51 ms         | 2.44 ms        | 1.44
       256 | 7.21 ms         | 4.52 ms        | 1.60
   
   This table shows that with 256 client threads doing lookups that each
   lookup took 7.21ms on average with a single selector thread.  With this
   change and four selector threads, each loopup took 4.52ms on average
   with 256 client threads.  During both test there were 256 threads to
   process client request on the tserver.  The selector threads hand frames
   off to these 256 threads.
   
   Watching top+jstack while running these test show the single selector
   thread will eventually reach 100% on a core.  With 4 selector threads
   each used 36% CPU when 256 client threads were doing lookups.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services