[ 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)