Jason Brown created CASSANDRA-6995:
--------------------------------------

             Summary: Execute local ONE/LOCAL_ONE reads on request thread 
instead of dispatching to read stage
                 Key: CASSANDRA-6995
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-6995
             Project: Cassandra
          Issue Type: Improvement
          Components: Core
            Reporter: Jason Brown
            Assignee: Jason Brown
            Priority: Minor
             Fix For: 2.0.7
         Attachments: syncread-stress.txt

When performing a read local to a coordinator node, AbstractReadExecutor will 
create a new SP.LocalReadRunnable and drop it into the read stage for 
asynchronous execution. If you are using a client that intelligently routes  
read requests to a node holding the data for a given request, and are using 
CL.ONE/LOCAL_ONE, the enqueuing SP.LocalReadRunnable and waiting for the 
context switches (and possible NUMA misses) adds unneccesary latency. We can 
reduce that latency and improve throughput by avoiding the queueing and thread 
context switching by simply executing the SP.LocalReadRunnable synchronously in 
the request thread. Testing on a three node cluster (each with 32 cpus, 132 GB 
ram) yields ~10% improvement in throughput and ~20% speedup on avg/95/99 
percentiles (99.9% was about 5-10% improvement).





--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to