Re: PENDING_LIST_CLEANUP_SIZE - maximum size of GIN pending list Re: HEAD seems to generate larger WAL regarding GIN index - Mailing list pgsql-hackers

From Etsuro Fujita
Subject Re: PENDING_LIST_CLEANUP_SIZE - maximum size of GIN pending list Re: HEAD seems to generate larger WAL regarding GIN index
Date
Msg-id 5452135C.5010706@lab.ntt.co.jp
Whole thread Raw
In response to Re: PENDING_LIST_CLEANUP_SIZE - maximum size of GIN pending list Re: HEAD seems to generate larger WAL regarding GIN index  (Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>)
Responses Re: PENDING_LIST_CLEANUP_SIZE - maximum size of GIN pending list Re: HEAD seems to generate larger WAL regarding GIN index
List pgsql-hackers
(2014/10/09 11:49), Etsuro Fujita wrote:
> (2014/10/08 22:51), Fujii Masao wrote:
>> On Wed, Sep 24, 2014 at 11:10 AM, Etsuro Fujita
>> <fujita.etsuro@lab.ntt.co.jp> wrote:
>>>> On Wed, Sep 10, 2014 at 10:37 PM, Alvaro Herrera
>>>> <alvherre@2ndquadrant.com> wrote:
>>>>> Fujii Masao wrote:
>>>>>> On Wed, Sep 10, 2014 at 12:15 PM, Etsuro Fujita
>>>>>> <fujita.etsuro@lab.ntt.co.jp> wrote:

>>>>>>> PENDING_LIST_CLEANUP_SIZE and work_mem, for this setting.
>>>>>>> Wouldn't it be easy-to-use to have only one parameter,
>>>>>>> PENDING_LIST_CLEANUP_SIZE?  How about setting
>>>>>>> PENDING_LIST_CLEANUP_SIZE
>>>>>>> to
>>>>>>> work_mem as the default value when running the CREATE INDEX command?

>>>>>> So what about introduing pending_list_cleanup_size also as GUC?
>>>>>> That is, users can set the threshold by using either the reloption or
>>>>>> GUC.

>>>>> Yes, I think having both a GUC and a reloption makes sense -- the GUC
>>>>> applies to all indexes, and can be tweaked for individual indexes
>>>>> using
>>>>> the reloption.

>>> OK, I'd vote for your idea of having both the GUC and the reloption.
>>> So, I
>>> think the patch needs to be updated.  Fujii-san, what plan do you
>>> have about
>>> the patch?

>> Please see the attached patch. In this patch, I introduced the GUC
>> parameter,
>> pending_list_cleanup_size. I chose 4MB as the default value of the
>> parameter.
>> But do you have any better idea about that default value?

> It seems reasonable to me that the GUC has the same default value as
> work_mem.  So, +1 for the default value of 4MB.

>> BTW, I moved the CommitFest entry of this patch to next CF 2014-10.

> OK, I'll review the patch in the CF.

Thank you for updating the patch!  Here are my review comments.

* The patch applies cleanly and make and make check run successfully.  I 
think that the patch is mostly good.

* In src/backend/utils/misc/guc.c:
+     {
+         {"pending_list_cleanup_size", PGC_USERSET, CLIENT_CONN_STATEMENT,
+             gettext_noop("Sets the maximum size of the pending list for GIN 
index."),
+              NULL,
+             GUC_UNIT_KB
+         },
+         &pending_list_cleanup_size,
+         4096, 0, MAX_KILOBYTES,
+         NULL, NULL, NULL
+     },

ISTM it'd be better to use RESOURCES_MEM, not CLIENT_CONN_STATEMENT. No?  Also why not set min to 64, not to 0, in
accoradancewith that of 
 
work_mem?

* In src/backend/utils/misc/postgresql.conf.sample:
Likewise, why not put this variable in the section of RESOURCE USAGE, 
not in that of CLIENT CONNECTION DEFAULTS.

* In src/backend/access/common/reloptions.c:
+     {
+         {
+             "pending_list_cleanup_size",
+             "Maximum size of the pending list for this GIN index, in kilobytes.",
+             RELOPT_KIND_GIN
+         },
+         -1, 0, MAX_KILOBYTES
+     },

As in guc.c, why not set min to 64, not to 0?

* In src/include/access/gin.h:  /* GUC parameter */  extern PGDLLIMPORT int GinFuzzySearchLimit;
+ extern int pending_list_cleanup_size;

The comment should be "GUC parameters".

* In src/backend/access/gin/ginfast.c:
+ /* GUC parameter */
+ int            pending_list_cleanup_size = 0;

Do we need to substitute 0 for pending_list_cleanup_size?

* In doc/src/sgml/config.sgml:
+      <varlistentry id="guc-pending-list-cleanup-size" 
xreflabel="pending_list_cleanup_size">
+       <term><varname>pending_list_cleanup_size</varname> 
(<type>integer</type>)

As in postgresql.conf.sample, ISTM it'd be better to explain this 
variable in the section of Resource Consumption (maybe in "Memory"), not 
in that of Client Connection Defaults.

* In doc/src/sgml/gin.sgml:
!      <literal>pending_list_cleanup_size</>. To avoid fluctuations in 
observed

ISTM it'd be better to use <varname> for pending_list_cleanup_size, not 
<literal>, here.

* In doc/src/sgml/ref/create_index.sgml:
+     <term><literal>PENDING_LIST_CLEANUP_SIZE</></term>

IMHO, it seems to me better for this variable to be in lowercase in 
accordance with the GUC version.  Also, I think that the words "GIN 
indexes accept a different parameter:" in the section of "Index Storage 
Parameters" in this reference page would be "GIN indexes accept 
different parameters:".

Sorry for the delay in reviewing the patch.

Best regards,
Etsuro Fujita



pgsql-hackers by date:

Previous
From: "Tomas Vondra"
Date:
Subject: Re: WIP: multivariate statistics / proof of concept
Next
From: Andres Freund
Date:
Subject: Re: Lockless StrategyGetBuffer() clock sweep