From: Bossart, Nathan <bossartn@amazon.com>
To: Schneider, Jeremy <schnjere@amazon.com>
To: Thomas Munro <thomas.munro@gmail.com>
Cc: pgsql-bugs@postgresql.org <pgsql-bugs@postgresql.org>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Cc: Nasby, Jim <nasbyj@amazon.com>
Subject: Re: ERROR: multixact X from before cutoff Y found to be still running
Date: Thu, 5 Sep 2019 20:08:11 +0000
Message-ID: <A38A1714-CC19-4EF6-BBE3-B716B4B16607@amazon.com> (raw)
In-Reply-To: <32134d69-1999-6518-e1d6-e268a24cb8aa@amazon.com>
References: <DAFB8AFF-2F05-4E33-AD7F-FF8B0F760C17@amazon.com>
<be665139-6bdc-9535-eaa6-c3c84d3900c7@amazon.com>
<CA+hUKGLXna28c_skfJFtCMc3BDrVbSn+EK_kLgFE=ACPKdGnTA@mail.gmail.com>
<32134d69-1999-6518-e1d6-e268a24cb8aa@amazon.com>
On 9/4/19, 9:03 PM, "Thomas Munro" <thomas.munro@gmail.com> wrote:
> Both patches prevent mxactLimit from being newer than the oldest
> running multixact. The v1 patch uses the most aggressive setting
> possible: the oldest running multi; the v2 uses the least aggressive
> of the 'safe' and oldest running multi. At first glance it seems like
> the second one is better: it only does something different if we're in
> the dangerous scenario you identified, but otherwise it sticks to the
> safe limit, which generates less IO.
Thanks for taking a look!
Right, the v2 patch will effectively ramp-down the freezemin as your
freeze_max_age gets smaller, while the v1 patch will set the effective
freezemin to zero as soon as your multixact age passes the threshold.
I think what is unclear to me is whether this ramp-down behavior is
the intended functionality or we should be doing something similar to
what we do for regular transaction IDs (i.e. force freezemin to zero
right after it hits the "oldest xmin is far in the past" threshold).
The comment above MultiXactMemberFreezeThreshold() explains things
pretty well, but AFAICT it is more geared towards influencing
autovacuum scheduling. I agree that v2 is safer from the standpoint
that it changes as little as possible, though.
Nathan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-bugs@postgresql.org
Cc: bossartn@amazon.com, schnjere@amazon.com, thomas.munro@gmail.com, pgsql-hackers@postgresql.org, nasbyj@amazon.com
Subject: Re: ERROR: multixact X from before cutoff Y found to be still running
In-Reply-To: <A38A1714-CC19-4EF6-BBE3-B716B4B16607@amazon.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox