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

Esteban Gutierrez edited comment on HBASE-15180 at 2/1/16 6:22 PM:
-------------------------------------------------------------------

Good stuff [~jingcheng...@intel.com]. Very interesting numbers, I expected 
further tuning to provide a better throughput too, but didn't tried with larger 
chucks (my test was around 24GB). Once I have a chance, I'm going to re-run my 
tests with JDK8 u80 and I let you know to let you know if I'm seeing the same 
behavior.


was (Author: esteban):
Good stuff [~jingcheng...@intel.com]. Very interesting numbers, I expected 
further tuning to provide a throughput, but didn't tried with larger chucks (my 
test was around 24GB). Once I have a chance, I'm going to re-run my tests with 
JDK8 u80 and I let you know to let you know if I'm seeing the same behavior.

> Reduce garbage created while reading Cells from Codec Decoder
> -------------------------------------------------------------
>
>                 Key: HBASE-15180
>                 URL: https://issues.apache.org/jira/browse/HBASE-15180
>             Project: HBase
>          Issue Type: Sub-task
>          Components: regionserver
>            Reporter: Anoop Sam John
>            Assignee: Anoop Sam John
>             Fix For: 2.0.0
>
>         Attachments: HBASE-15180.patch, HBASE-15180_V2.patch
>
>
> In KeyValueDecoder#parseCell (Default Codec decoder) we use 
> KeyValueUtil#iscreate to read cells from the InputStream. Here we 1st create 
> a byte[] of length 4 and read the cell length and then an array of Cell's 
> length and read in cell bytes into it and create a KV.
> Actually in server we read the reqs into a byte[] and CellScanner is created 
> on top of a ByteArrayInputStream on top of this. By default in write path, we 
> have MSLAB usage ON. So while adding Cells to memstore, we will copy the Cell 
> bytes to MSLAB memory chunks (default 2 MB size) and recreate Cells over that 
> bytes.  So there is no issue if we create Cells over the RPC read byte[] 
> directly here in Decoder.  No need for 2 byte[] creation and copy for every 
> Cell in request.
> My plan is to make a Cell aware ByteArrayInputStream which can read Cells 
> directly from it.  
> Same Codec path is used in client side also. There better we can avoid this 
> direct Cell create and continue to do the copy to smaller byte[]s path.  Plan 
> to introduce some thing like a CodecContext associated with every Codec 
> instance which can say the server/client context.



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

Reply via email to