[ 
https://issues.apache.org/jira/browse/KUDU-1235?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15257980#comment-15257980
 ] 

Binglin Chang commented on KUDU-1235:
-------------------------------------

Just add another optimization, change Connection::ReadHandler to handle 
multiple requests in single epoll loop, doing this will reduce lot of recv and 
epoll calls,
Result on 3.4G 4core machine:

{noformat}
$ threads=4 concurrency=100 KUDU_ALLOW_SLOW_TESTS=true bin/rpc-bench  
--gtest_filter=*Async
I0426 11:06:24.678580  4639 rpc-bench.cc:222] Reqs/sec:         303218
I0426 11:06:24.678624  4639 rpc-bench.cc:223] User CPU per req: 9.3062us
I0426 11:06:24.678632  4639 rpc-bench.cc:224] Sys CPU per req:  13.7199us

$ threads=4 concurrency=100 KUDU_ALLOW_SLOW_TESTS=true bin/rpc-bench  
--gtest_filter=*Async
I0426 13:10:28.735213  6137 rpc-bench.cc:222] Reqs/sec:         397226
I0426 13:10:28.735258  6137 rpc-bench.cc:223] User CPU per req: 6.92273us
I0426 13:10:28.735265  6137 rpc-bench.cc:224] Sys CPU per req:  9.43099us
{noformat} 

> Add Get API
> -----------
>
>                 Key: KUDU-1235
>                 URL: https://issues.apache.org/jira/browse/KUDU-1235
>             Project: Kudu
>          Issue Type: New Feature
>            Reporter: Binglin Chang
>            Assignee: Binglin Chang
>         Attachments: perf-get.svg, perf-scan-opt.svg, perf-scan.svg
>
>
> Get API is more user friendly and efficient if use just want primary key 
> lookup.
> I setup a cluster and test get/scan single row using ycsb, initial test shows 
> better performance for get.
> {noformat}
> kudu_workload:
> recordcount=1000000
> operationcount=1000000
> workload=com.yahoo.ycsb.workloads.CoreWorkload
> readallfields=false
> readproportion=1
> updateproportion=0
> scanproportion=0
> insertproportion=0
> requestdistribution=uniform
> use_get_api=false
> load:
> ./bin/ycsb load kudu -P workloads/kudu_workload -p sync_ops=false -p 
> pre_split_num_tablets=1 -p table_name=ycsb_wiki_example -p 
> masterQuorum='c3-kudu-tst-st01.bj:32600' -threads 100
> read test:
> ./bin/ycsb run kudu -P workloads/kudu_workload -p 
> masterQuorum='c3-kudu-tst-st01.bj:32600' -threads 100
> {noformat}
> Get API:
> [OVERALL], RunTime(ms), 21304.0
> [OVERALL], Throughput(ops/sec), 46939.54187007135
> [CLEANUP], Operations, 100.0
> [CLEANUP], AverageLatency(us), 423.57
> [CLEANUP], MinLatency(us), 24.0
> [CLEANUP], MaxLatency(us), 19327.0
> [CLEANUP], 95thPercentileLatency(us), 52.0
> [CLEANUP], 99thPercentileLatency(us), 18815.0
> [READ], Operations, 1000000.0
> [READ], AverageLatency(us), 2065.185152
> [READ], MinLatency(us), 134.0
> [READ], MaxLatency(us), 92159.0
> [READ], 95thPercentileLatency(us), 2391.0
> [READ], 99thPercentileLatency(us), 6359.0
> [READ], Return=0, 1000000
> Scan API:
> [OVERALL], RunTime(ms), 38259.0
> [OVERALL], Throughput(ops/sec), 26137.6408165399
> [CLEANUP], Operations, 100.0
> [CLEANUP], AverageLatency(us), 47.32
> [CLEANUP], MinLatency(us), 16.0
> [CLEANUP], MaxLatency(us), 1837.0
> [CLEANUP], 95thPercentileLatency(us), 41.0
> [CLEANUP], 99thPercentileLatency(us), 158.0
> [READ], Operations, 1000000.0
> [READ], AverageLatency(us), 3595.825249
> [READ], MinLatency(us), 139.0
> [READ], MaxLatency(us), 3139583.0
> [READ], 95thPercentileLatency(us), 3775.0
> [READ], 99thPercentileLatency(us), 7659.0
> [READ], Return=0, 1000000



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to