Return-Path: Delivered-To: apmail-hbase-issues-archive@www.apache.org Received: (qmail 23088 invoked from network); 26 Mar 2011 21:18:43 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 26 Mar 2011 21:18:43 -0000 Received: (qmail 29784 invoked by uid 500); 26 Mar 2011 21:18:43 -0000 Delivered-To: apmail-hbase-issues-archive@hbase.apache.org Received: (qmail 29678 invoked by uid 500); 26 Mar 2011 21:18:43 -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 29670 invoked by uid 99); 26 Mar 2011 21:18:43 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 26 Mar 2011 21:18:43 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED,T_RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 26 Mar 2011 21:18:42 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id E07C256BFD for ; Sat, 26 Mar 2011 21:18:05 +0000 (UTC) Date: Sat, 26 Mar 2011 21:18:05 +0000 (UTC) From: "stack (JIRA)" To: issues@hbase.apache.org Message-ID: <1666233652.14282.1301174285916.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <2064286721.6855.1300907765759.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (HBASE-3694) high multiput latency due to checking global mem store size in a synchronized function 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-3694?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13011686#comment-13011686 ] stack commented on HBASE-3694: ------------------------------ bq. But Cliff Click Counter is not thread safe. I thought whole point of the CC Counters was that they were (lockless) threadsafe > high multiput latency due to checking global mem store size in a synchronized function > -------------------------------------------------------------------------------------- > > Key: HBASE-3694 > URL: https://issues.apache.org/jira/browse/HBASE-3694 > Project: HBase > Issue Type: Improvement > Reporter: Liyin Tang > Assignee: Liyin Tang > Attachments: 3694-cliffs-counter.txt, Hbase-3694[r1085306], Hbase-3694[r1085306]_2.patch, Hbase-3694[r1085306]_3.patch, Hbase-3694[r1085508]_4.patch, Hbase-3694[r1085592]_7.patch, Hbase-3694[r1085593]_5.patch, Hbase-3694[r1085593]_6.patch > > > The problem is we found the multiput latency is very high. > In our case, we have almost 22 Regions in each RS and there are no flush happened during these puts. > After investigation, we believe that the root cause is the function getGlobalMemStoreSize, which is to check the high water mark of mem store. > This function takes almost 40% of total execution time of multiput when instrumenting some metrics in the code. > The actual percentage may be more higher. The execution time is spent on synchronize contention. > One solution is to keep a static var in HRegion to keep the global MemStore size instead of calculating them every time. > Why using static variable? > Since all the HRegion objects in the same JVM share the same memory heap, they need to share fate as well. > The static variable, globalMemStroeSize, naturally shows the total mem usage in this shared memory heap for this JVM. > If multiple RS need to run in the same JVM, they still need only one globalMemStroeSize. > If multiple RS run on different JVMs, everything is fine. > After changing, in our cases, the avg multiput latency decrease from 60ms to 10ms. > I will submit a patch based on the current trunk. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira