Thread: 24.1.5.1. Multixacts And Wraparound

24.1.5.1. Multixacts And Wraparound

From
PG Doc comments form
Date:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/13/routine-vacuuming.html
Description:

In section "24.1.5.1. Multixacts And Wraparound" of
https://www.postgresql.org/docs/current/routine-vacuuming.html we find the
following sentence towards the end of the section:

"...If the amount of used member storage space exceeds the amount 50% of the
addressable storage space."

I am having trouble parsing "...exceeds the amount 50% of the
addressable..." part.

It seems like the sentence is trying to say "...space exceeds 50% of the
addressable storage space" or maybe even "...space exceeds the amount of the
addressable storage space". Which is which?

Many thanks,
Eric Mutta.

Re: 24.1.5.1. Multixacts And Wraparound

From
Laurenz Albe
Date:
On Thu, 2021-06-17 at 18:31 +0000, PG Doc comments form wrote:
> In section "24.1.5.1. Multixacts And Wraparound" of
> https://www.postgresql.org/docs/current/routine-vacuuming.html we find the
> following sentence towards the end of the section:
> 
> "...If the amount of used member storage space exceeds the amount 50% of the
> addressable storage space."
> 
> I am having trouble parsing "...exceeds the amount 50% of the
> addressable..." part.
> 
> It seems like the sentence is trying to say "...space exceeds 50% of the
> addressable storage space" or maybe even "...space exceeds the amount of the
> addressable storage space". Which is which?

+1

I think that the second "the amount" in the sentence should be removed.

Yours,
Laurenz Albe




Re: 24.1.5.1. Multixacts And Wraparound

From
Bruce Momjian
Date:
On Fri, Jun 18, 2021 at 08:51:00AM +0200, Laurenz Albe wrote:
> On Thu, 2021-06-17 at 18:31 +0000, PG Doc comments form wrote:
> > In section "24.1.5.1. Multixacts And Wraparound" of
> > https://www.postgresql.org/docs/current/routine-vacuuming.html we find the
> > following sentence towards the end of the section:
> > 
> > "...If the amount of used member storage space exceeds the amount 50% of the
> > addressable storage space."
> > 
> > I am having trouble parsing "...exceeds the amount 50% of the
> > addressable..." part.
> > 
> > It seems like the sentence is trying to say "...space exceeds 50% of the
> > addressable storage space" or maybe even "...space exceeds the amount of the
> > addressable storage space". Which is which?
> 
> +1
> 
> I think that the second "the amount" in the sentence should be removed.

I think it is worse than that.  Here is the full paragraph:

     As a safety device, an aggressive vacuum scan will occur for any table
     whose multixact-age is greater than
     <xref linkend="guc-autovacuum-multixact-freeze-max-age"/>.  Aggressive
     vacuum scans will also occur progressively for all tables, starting with
     those that have the oldest multixact-age, if the amount of used member
     storage space exceeds the amount 50% of the addressable storage space.
     Both of these kinds of aggressive scans will occur even if autovacuum is
     nominally disabled.

What does "the amount of used member storage space exceeds 50% of the
addressable storage space" mean?

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  If only the physical world exists, free will is an illusion.




Re: 24.1.5.1. Multixacts And Wraparound

From
Laurenz Albe
Date:
On Mon, 2021-06-21 at 22:50 -0400, Bruce Momjian wrote:
> On Fri, Jun 18, 2021 at 08:51:00AM +0200, Laurenz Albe wrote:
> > On Thu, 2021-06-17 at 18:31 +0000, PG Doc comments form wrote:
> > > In section "24.1.5.1. Multixacts And Wraparound" of
> > > https://www.postgresql.org/docs/current/routine-vacuuming.html we find the
> > > following sentence towards the end of the section:
> > > 
> > > "...If the amount of used member storage space exceeds the amount 50% of the
> > > addressable storage space."
> > > 
> > > I am having trouble parsing "...exceeds the amount 50% of the
> > > addressable..." part.
> > 
> > I think that the second "the amount" in the sentence should be removed.
> 
> I think it is worse than that.  Here is the full paragraph:
> 
>      As a safety device, an aggressive vacuum scan will occur for any table
>      whose multixact-age is greater than
>      <xref linkend="guc-autovacuum-multixact-freeze-max-age"/>.  Aggressive
>      vacuum scans will also occur progressively for all tables, starting with
>      those that have the oldest multixact-age, if the amount of used member
>      storage space exceeds the amount 50% of the addressable storage space.
>      Both of these kinds of aggressive scans will occur even if autovacuum is
>      nominally disabled.
> 
> What does "the amount of used member storage space exceeds 50% of the
> addressable storage space" mean?

You are right.  See MultiXactMemberFreezeThreshold for the whole story.

What about:

  As a safety device, an aggressive vacuum scan will occur for any table
  whose multixact-age (see <xref linkend="vacuum-for-multixact-wraparound"/>)
  is greater than <xref linkend="guc-autovacuum-multixact-freeze-max-age"/>.
  Also, if the storage occupied by multixacts exceeds 2GB, aggressive vacuum
  scans will occur more often for all tables, starting with those that have
  the oldest multixact-age.
  Both of these kinds ...

I hope I read the source right concerning the 2GB.

Yours,
Laurenz Albe




Re: 24.1.5.1. Multixacts And Wraparound

From
Bruce Momjian
Date:
On Tue, Jun 22, 2021 at 08:32:18AM +0200, Laurenz Albe wrote:
> > What does "the amount of used member storage space exceeds 50% of the
> > addressable storage space" mean?
> 
> You are right.  See MultiXactMemberFreezeThreshold for the whole story.
> 
> What about:
> 
>   As a safety device, an aggressive vacuum scan will occur for any table
>   whose multixact-age (see <xref linkend="vacuum-for-multixact-wraparound"/>)
>   is greater than <xref linkend="guc-autovacuum-multixact-freeze-max-age"/>.
>   Also, if the storage occupied by multixacts exceeds 2GB, aggressive vacuum
>   scans will occur more often for all tables, starting with those that have
>   the oldest multixact-age.
>   Both of these kinds ...

Yes, very good.   There were three problems with the original paragraph:

*  Had duplicate words
*  Had awkward phrasing
*  Used undefined terms

Your version fixes all three of those.  Patch attached.

> I hope I read the source right concerning the 2GB.

I can confirm the 2GB.  do_vacuum() calls
MultiXactMemberFreezeThreshold() to set its
effective_multixact_freeze_max_age.  MultiXactMemberFreezeThreshold()
compares the number of members to 2^32 (0xFFFFFFFF) / 2 or 2GB:

    #define MaxMultiXactOffset  ((MultiXactOffset) 0xFFFFFFFF)
    #define MULTIXACT_MEMBER_SAFE_THRESHOLD     (MaxMultiXactOffset / 2)
    
    /* If member space utilization is low, no special action is required. */
    if (members <= MULTIXACT_MEMBER_SAFE_THRESHOLD)
        return autovacuum_multixact_freeze_max_age;

If that test fails, autovacuum_multixact_freeze_max_age is set much more
aggressively.

-- 
  Bruce Momjian  <bruce@momjian.us>        https://momjian.us
  EDB                                      https://enterprisedb.com

  If only the physical world exists, free will is an illusion.


Attachment