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

Andrew Purtell commented on HBASE-13291:
----------------------------------------

bq.  it fingers the HBB#_get again.
HBB is generated from something called Heap-X-Buffer.java.template when the JDK 
is built. However, looks like _get for HBB is:
{code}
    byte _get(int i) {                          // package-private
        return hb[i];
    }
{code}
... a simple array access. You'd expect this along with a lot of comparator 
work if we're scanning or skipping through a lot of cells in memory. I think 
the way to optimize this is keep an index to cells in the blockcache, to 
eliminate the need to read a length, skip, read a length, skip, read a 
length... 

> Lift the scan ceiling
> ---------------------
>
>                 Key: HBASE-13291
>                 URL: https://issues.apache.org/jira/browse/HBASE-13291
>             Project: HBase
>          Issue Type: Improvement
>          Components: Scanners
>    Affects Versions: 1.0.0
>            Reporter: stack
>            Assignee: stack
>         Attachments: 13291.inlining.txt, Screen Shot 2015-03-26 at 12.12.13 
> PM.png, q (1).png, traces.7.svg, traces.filterall.svg, traces.nofilter.svg, 
> traces.small2.svg, traces.smaller.svg
>
>
> Scanning medium sized rows with multiple concurrent scanners exhibits 
> interesting 'ceiling' properties. A server runs at about 6.7k ops a second 
> using 450% of possible 1600% of CPUs  when 4 clients each with 10 threads 
> doing scan 1000 rows.  If I add '--filterAll' argument (do not return 
> results), then we run at 1450% of possible 1600% possible but we do 8k ops a 
> second.
> Let me attach flame graphs for two cases. Unfortunately, there is some 
> frustrating dark art going on. Let me try figure it... Filing issue in 
> meantime to keep score in.



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

Reply via email to