Received: from localhost (maia-3.hub.org [200.46.204.184]) by postgresql.org (Postfix) with ESMTP id 38C739FB25D for ; Fri, 27 Jul 2007 09:45:07 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.184]) (amavisd-maia, port 10024) with ESMTP id 02595-02 for ; Fri, 27 Jul 2007 09:44:56 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey-1.7.5 Received: from brmea-mail-3.sun.com (brmea-mail-3.Sun.COM [192.18.98.34]) by postgresql.org (Postfix) with ESMTP id 9025D9FB24D for ; Fri, 27 Jul 2007 09:45:03 -0300 (ADT) Received: from fe-amer-03.sun.com ([192.18.108.177]) by brmea-mail-3.sun.com (8.13.6+Sun/8.12.9) with ESMTP id l6RCj22Y015955 for ; Fri, 27 Jul 2007 12:45:02 GMT Received: from conversion-daemon.mail-amer.sun.com by mail-amer.sun.com (Sun Java System Messaging Server 6.2-6.01 (built Apr 3 2006)) id <0JLU001018EDJT00@mail-amer.sun.com> (original mail from J.K.Shah@Sun.COM) for pgsql-performance@postgresql.org; Fri, 27 Jul 2007 06:45:02 -0600 (MDT) Received: from [192.168.1.4] ([76.24.247.188]) by mail-amer.sun.com (Sun Java System Messaging Server 6.2-6.01 (built Apr 3 2006)) with ESMTPSA id <0JLU00IJS8R0C9O4@mail-amer.sun.com>; Fri, 27 Jul 2007 06:45:01 -0600 (MDT) Date: Fri, 27 Jul 2007 08:49:57 -0400 From: "Jignesh K. Shah" Subject: Re: User concurrency thresholding: where do I look? In-reply-to: <1185527727.4191.22.camel@ebony.site> To: Simon Riggs Cc: Tom Lane , Josh Berkus , pgsql-performance@postgresql.org, Alvaro Herrera Message-id: <46A9E9F5.3020901@sun.com> MIME-version: 1.0 Content-type: text/plain; format=flowed; charset=UTF-8 Content-transfer-encoding: 7BIT References: <200707190828.59088.josh@agliodbs.com> <200707191819.13899.josh@agliodbs.com> <15685.1184895926@sss.pgh.pa.us> <200707192138.39679.josh@agliodbs.com> <46A0FA31.2080208@sun.com> <12002.1184955831@sss.pgh.pa.us> <46A1055F.9010304@sun.com> <12445.1184958793@sss.pgh.pa.us> <46A11116.5030905@sun.com> <14909.1184962561@sss.pgh.pa.us> <46A1205B.8010205@sun.com> <15343.1184965054@sss.pgh.pa.us> <1185180668.4284.149.camel@ebony.site> <23848.1185199901@sss.pgh.pa.us> <1185201556.4284.243.camel@ebony.site> <25095.1185202498@sss.pgh.pa.us> <1185205663.4284.249.camel@ebony.site> <1185212261.4284.270.camel@ebony.site> <1545.1185214760@sss.pgh.pa.us> <46A7D5AD.9000706@sun.com> <13162.1185405865@sss.pgh.pa.us> <46A8AFDF.3050804@sun.com> <26825.1185460816@sss.pgh.pa.us> <46A8BD62.2080904@sun.com> <1185465076.4190.87.camel@ebony.site> <46A8F9AA.4040507@sun.com> <1185480291.5510.22.camel@ebony.site> <46A90F83.8050401@sun.com> <1185527727.4191.22.camel@ebony.site> User-Agent: Thunderbird 2.0.0.5 (Windows/20070716) X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200707/385 X-Sequence-Number: 26069 Yes I can try to breakup the Shared and exclusive time.. Also yes I use commit delays =10, it helps out a lot in reducing IO load.. I will try out the patch soon. -Jignesh Simon Riggs wrote: > On Thu, 2007-07-26 at 17:17 -0400, Jignesh K. Shah wrote: > >> Lock Id Combined Time (ns) >> XidGenLock 194966200 >> WALInsertLock 517955000 >> CLogControlLock 679665100 >> WALWriteLock 2838716200 >> ProcArrayLock 44181002600 >> > > Is this the time the lock is held for or the time that we wait for that > lock? It would be good to see the break down of time separately for > shared and exclusive. > > Can we have a table like this: > LockId,LockMode,SumTimeLockHeld,SumTimeLockWait > > >> Top Wait time seems to come from the following code path for >> ProcArrayLock: >> >> Lock Id Mode Count >> ProcArrayLock Exclusive 21 >> >> Lock Id Combined Time (ns) >> ProcArrayLock 5255937500 >> >> Lock Id Combined Time (ns) >> >> >> postgres`LWLockAcquire+0x1f0 >> postgres`CommitTransaction+0x104 >> postgres`CommitTransactionCommand+0xbc >> postgres`finish_xact_command+0x78 >> > > Well thats pretty weird. That code path clearly only happens once per > transaction and ought to be fast. The other code paths that take > ProcArrayLock like TransactionIdIsInProgress() and GetSnapshotData() > ought to spend more time holding the lock. Presumably you are running > with a fair number of SERIALIZABLE transactions? > > Are you running with commit_delay > 0? Its possible that the call to > CountActiveBackends() is causing pinging of the procarray by other > backends while we're trying to read it during CommitTransaction(). If > so, try the attached patch. > >