Skip site navigation (1) Skip section navigation (2)

CLOG Patch

From: "Jignesh K(dot) Shah" <J(dot)K(dot)Shah(at)Sun(dot)COM>
To: Simon Riggs <simon(at)2ndquadrant(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Josh Berkus <josh(at)agliodbs(dot)com>, pgsql-performance(at)postgresql(dot)org, Alvaro Herrera <alvherre(at)commandprompt(dot)com>
Subject: CLOG Patch
Date: 2007-08-03 20:09:39
Message-ID: 46B38B83.1000906@sun.com (view raw or flat)
Thread:
Lists: pgsql-performance
Hi Simon,

This patch seems to work well (both with 32 and 64 value but not with 16 
and the default 8). Is there a way we can integrate this in 8.3?

This will improve out of box performance quite a bit for high number of 
users (atleat 30% in my OLTP test)

Regards,
Jignesh


Simon Riggs wrote:
> On Thu, 2007-07-26 at 11:27 -0400, Jignesh K. Shah wrote:
>
>   
>> However at 900 Users where the big drop in throughput occurs:
>> It gives a different top "consumer" of time:
>>     
>
>
>                 postgres`LWLockAcquire+0x1c8
>   
>>               postgres`SimpleLruReadPage+0x1ac
>>               postgres`TransactionIdGetStatus+0x14
>>               postgres`TransactionLogFetch+0x58
>>     
>
> TransactionIdGetStatus doesn't directly call SimpleLruReadPage().
> Presumably the compiler has been rearranging things??
>
> Looks like you're out of clog buffers. It seems like the clog buffers
> aren't big enough to hold clog pages for long enough and the SELECT FOR
> SHARE processing is leaving lots of additional read locks that are
> increasing the number of clog requests for older xids.
>
> Try the enclosed patch.
>  
>   
> ------------------------------------------------------------------------
>
> Index: src/include/access/clog.h
> ===================================================================
> RCS file: /projects/cvsroot/pgsql/src/include/access/clog.h,v
> retrieving revision 1.19
> diff -c -r1.19 clog.h
> *** src/include/access/clog.h	5 Jan 2007 22:19:50 -0000	1.19
> --- src/include/access/clog.h	26 Jul 2007 15:44:58 -0000
> ***************
> *** 29,35 ****
>   
>   
>   /* Number of SLRU buffers to use for clog */
> ! #define NUM_CLOG_BUFFERS	8
>   
>   
>   extern void TransactionIdSetStatus(TransactionId xid, XidStatus status);
> --- 29,35 ----
>   
>   
>   /* Number of SLRU buffers to use for clog */
> ! #define NUM_CLOG_BUFFERS	64	
>   
>   
>   extern void TransactionIdSetStatus(TransactionId xid, XidStatus status);
>   
> ------------------------------------------------------------------------
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: don't forget to increase your free space map settings
>   

In response to

Responses

pgsql-performance by date

Next:From: Simon RiggsDate: 2007-08-03 20:29:47
Subject: Re: CLOG Patch
Previous:From: Mark LewisDate: 2007-08-03 18:28:33
Subject: Re: Postgres optimizer

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group