[ https://issues.apache.org/jira/browse/HBASE-13082?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14339802#comment-14339802 ]
Lars Hofhansl commented on HBASE-13082: --------------------------------------- In other tests I find the gain about 41ns per row and per core (you can see how the results drift more with more cores in use above). Above I measured 66ns. So scanning 10m rows, we'd save 0.4-0.6s, 100m rows that'd be 4-6s, and with 1bn rows it'd add up to 40-60s. (Note that in tests above I scanned about 11m rows/s when using all 8 cores/HTs on my box) > Coarsen StoreScanner locks to RegionScanner > ------------------------------------------- > > Key: HBASE-13082 > URL: https://issues.apache.org/jira/browse/HBASE-13082 > Project: HBase > Issue Type: Bug > Reporter: Lars Hofhansl > Attachments: 13082-test.txt, 13082.txt, 13082.txt > > > Continuing where HBASE-10015 left of. > We can avoid locking (and memory fencing) inside StoreScanner by deferring to > the lock already held by the RegionScanner. > In tests this shows quite a scan improvement and reduced CPU (the fences make > the cores wait for memory fetches). > There are some drawbacks too: > * All calls to RegionScanner need to be remain synchronized > * Implementors of coprocessors need to be diligent in following the locking > contract. For example Phoenix does not lock RegionScanner.nextRaw() and > required in the documentation (not picking on Phoenix, this one is my fault > as I told them it's OK) > * possible starving of flushes and compaction with heavy read load. > RegionScanner operations would keep getting the locks and the > flushes/compactions would not be able finalize the set of files. > I'll have a patch soon. -- This message was sent by Atlassian JIRA (v6.3.4#6332)