hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ramkrishna.s.vasudevan (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-15493) Default ArrayList size may not be optimal for Mutation
Date Thu, 24 Mar 2016 04:20:25 GMT

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

ramkrishna.s.vasudevan commented on HBASE-15493:
------------------------------------------------

IMHO this operation of finding the exact size is useful in the SErver side too. Because with
large cells per mutations I could see this list#add() taking more time. I thought of creating
some thing like ServerMutation extending Mutations (and it is private) but the problem is
that it becomes complicated when we have Cells backed by Offheap buffer.
May be this new API we can add only on server side something like that? I have not worked
on end to end to take that patch to completion.

> Default ArrayList size may not be optimal for Mutation
> ------------------------------------------------------
>
>                 Key: HBASE-15493
>                 URL: https://issues.apache.org/jira/browse/HBASE-15493
>             Project: HBase
>          Issue Type: Improvement
>          Components: Client, regionserver
>    Affects Versions: 2.0.0
>            Reporter: Vladimir Rodionov
>            Assignee: Vladimir Rodionov
>             Fix For: 2.0.0
>
>         Attachments: HBASE-15493-v1.patch, HBASE-15493-v2.patch
>
>
> {code}
>   List<Cell> getCellList(byte[] family) {
>     List<Cell> list = this.familyMap.get(family);
>     if (list == null) {
>       list = new ArrayList<Cell>();
>     }
>     return list;
>   }
> {code}
> Creates list of size 10, this is up to 80 bytes per column family in mutation object.

> Suggested:
> {code}
>   List<Cell> getCellList(byte[] family) {
>     List<Cell> list = this.familyMap.get(family);
>     if (list == null) {
>       list = new ArrayList<Cell>(CELL_LIST_INITIAL_CAPACITY);
>     }
>     return list;
>   }
> {code}
> CELL_LIST_INITIAL_CAPACITY = 2 in the patch, this is debatable. For mutation where every
CF has 1 cell, this gives decent reduction in memory allocation rate in both client and server
during write workload. ~2%, not a big number, but as I said, already, memory optimization
will include many small steps.



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

Mime
View raw message