Return-Path: X-Original-To: apmail-hbase-issues-archive@www.apache.org Delivered-To: apmail-hbase-issues-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 2ECE2198A7 for ; Thu, 24 Mar 2016 04:20:26 +0000 (UTC) Received: (qmail 49482 invoked by uid 500); 24 Mar 2016 04:20:26 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 49389 invoked by uid 500); 24 Mar 2016 04:20:25 -0000 Mailing-List: contact issues-help@hbase.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list issues@hbase.apache.org Received: (qmail 49363 invoked by uid 99); 24 Mar 2016 04:20:25 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 24 Mar 2016 04:20:25 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id 724AA2C14F8 for ; Thu, 24 Mar 2016 04:20:25 +0000 (UTC) Date: Thu, 24 Mar 2016 04:20:25 +0000 (UTC) From: "ramkrishna.s.vasudevan (JIRA)" To: issues@hbase.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (HBASE-15493) Default ArrayList size may not be optimal for Mutation MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ 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 getCellList(byte[] family) { > List list = this.familyMap.get(family); > if (list == null) { > list = new ArrayList(); > } > return list; > } > {code} > Creates list of size 10, this is up to 80 bytes per column family in mutation object. > Suggested: > {code} > List getCellList(byte[] family) { > List list = this.familyMap.get(family); > if (list == null) { > list = new ArrayList(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)