[ 
https://issues.apache.org/jira/browse/HBASE-12148?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

huaxiang sun updated HBASE-12148:
---------------------------------
    Attachment: HBASE-12148-master-v6.patch

I was going through TimeRangeTracker code and was thinking about making it lock 
free. Discussed with Stack and he pointed me this jira. I looked at Stack's v5 
code and refactored the code a bit. Here is the updated v6 patch. I did 
microbench testing for both lock-free and withlock version. Some of the result 
running from my macpro:

{code}
1writer1reader

Benchmark                                    Mode  Cnt     Score    Error  Units
TrtBenchmark.lockfree                       thrpt   25  1752.510 ± 72.994  ops/s
TrtBenchmark.lockfree:testTrtLockFreeRead   thrpt   25   787.910 ± 35.393  ops/s
TrtBenchmark.lockfree:testTrtLockFreeWrite  thrpt   25   964.600 ± 38.611  ops/s
TrtBenchmark.withlock                       thrpt   25    44.565 ±  6.019  ops/s
TrtBenchmark.withlock:testTrtWithLockRead   thrpt   25    24.941 ±  4.093  ops/s
TrtBenchmark.withlock:testTrtWithLockWrite  thrpt   25    19.624 ±  1.980  ops/s

5 writers 5 readers

Benchmark                                    Mode  Cnt     Score     Error  
Units
TrtBenchmark.lockfree                       thrpt   25  3217.005 ± 445.825  
ops/s
TrtBenchmark.lockfree:testTrtLockFreeRead   thrpt   25  1531.123 ± 249.083  
ops/s
TrtBenchmark.lockfree:testTrtLockFreeWrite  thrpt   25  1685.882 ± 235.832  
ops/s
TrtBenchmark.withlock                       thrpt   25    36.439 ±   5.064  
ops/s
TrtBenchmark.withlock:testTrtWithLockRead   thrpt   25    22.751 ±   3.508  
ops/s
TrtBenchmark.withlock:testTrtWithLockWrite  thrpt   25    13.688 ±   1.822  
ops/s

10 writers 10 readers

Benchmark                                    Mode  Cnt     Score     Error  
Units
TrtBenchmark.lockfree                       thrpt   25  3323.196 ± 287.186  
ops/s
TrtBenchmark.lockfree:testTrtLockFreeRead   thrpt   25  1408.506 ± 111.703  
ops/s
TrtBenchmark.lockfree:testTrtLockFreeWrite  thrpt   25  1914.689 ± 243.069  
ops/s
TrtBenchmark.withlock                       thrpt   25    33.473 ±   2.869  
ops/s
TrtBenchmark.withlock:testTrtWithLockRead   thrpt   25    20.097 ±   1.778  
ops/s
TrtBenchmark.withlock:testTrtWithLockWrite  thrpt   25    13.376 ±   1.820  
ops/s


15 writers 15 readers

Benchmark                                    Mode  Cnt     Score     Error  
Units
TrtBenchmark.lockfree                       thrpt   25  3607.649 ± 403.625  
ops/s
TrtBenchmark.lockfree:testTrtLockFreeRead   thrpt   25  1486.898 ± 252.728  
ops/s
TrtBenchmark.lockfree:testTrtLockFreeWrite  thrpt   25  2120.751 ± 280.179  
ops/s
TrtBenchmark.withlock                       thrpt   25    34.037 ±   1.677  
ops/s
TrtBenchmark.withlock:testTrtWithLockRead   thrpt   25    21.497 ±   1.489  
ops/s
TrtBenchmark.withlock:testTrtWithLockWrite  thrpt   25    12.540 ±   0.713  
ops/s

20 writers  20 readers

Benchmark                                    Mode  Cnt     Score     Error  
Units
TrtBenchmark.lockfree                       thrpt   25  4544.710 ± 614.566  
ops/s
TrtBenchmark.lockfree:testTrtLockFreeRead   thrpt   25  1897.371 ± 295.687  
ops/s
TrtBenchmark.lockfree:testTrtLockFreeWrite  thrpt   25  2647.340 ± 503.446  
ops/s
TrtBenchmark.withlock                       thrpt   25    31.404 ±   2.995  
ops/s
TrtBenchmark.withlock:testTrtWithLockRead   thrpt   25    19.653 ±   1.938  
ops/s
TrtBenchmark.withlock:testTrtWithLockWrite  thrpt   25    11.752 ±   1.643  
ops/s
{code}

The microbenchmark code is at 
https://github.com/qiaoandxiang/trt-benchmark/commits/master


> Remove TimeRangeTracker as point of contention when many threads writing a 
> Store
> --------------------------------------------------------------------------------
>
>                 Key: HBASE-12148
>                 URL: https://issues.apache.org/jira/browse/HBASE-12148
>             Project: HBase
>          Issue Type: Sub-task
>          Components: Performance
>    Affects Versions: 2.0.0, 0.99.1
>            Reporter: stack
>            Assignee: Walter Koetke
>             Fix For: 2.0.0, 1.4.0
>
>         Attachments: 
> 0001-In-AtomicUtils-change-updateMin-and-updateMax-to-ret.patch, 
> 12148.addendum.txt, 12148.min_and_max_run_independent.patch, 12148.txt, 
> 12148.txt, 12148v2.txt, 12148v2.txt, 12148v4.patch, HBASE-12148-V3.patch, 
> HBASE-12148-V3.patch, HBASE-12148-master-v6.patch, 
> HBASE-12148.branch-1.v5.patch, HBASE-12148.branch-1.v5.patch, 
> HBASE-12148.txt, HBASE-12148V2.txt, Screen Shot 2014-10-01 at 3.39.46 PM.png, 
> Screen Shot 2014-10-01 at 3.41.07 PM.png, Screen Shot 2016-04-13 at 1.49.30 
> PM.png, Screen Shot 2016-04-13 at 2.02.22 PM.png, Screen Shot 2016-05-18 at 
> 10.21.53 PM.png, TimeRangeTracker.tiff
>
>




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

Reply via email to