Re: Odd off-by-one dirty buffers and checkpoint buffers written - Mailing list pgsql-hackers

From Kyotaro Horiguchi
Subject Re: Odd off-by-one dirty buffers and checkpoint buffers written
Date
Msg-id 20220420.170351.853955380008032480.horikyota.ntt@gmail.com
Whole thread Raw
In response to Re: Odd off-by-one dirty buffers and checkpoint buffers written  ("David G. Johnston" <david.g.johnston@gmail.com>)
Responses Re: Odd off-by-one dirty buffers and checkpoint buffers written  ("David G. Johnston" <david.g.johnston@gmail.com>)
List pgsql-hackers
At Tue, 19 Apr 2022 17:51:24 -0700, "David G. Johnston" <david.g.johnston@gmail.com> wrote in 
> On Tue, Apr 19, 2022 at 4:36 PM Nathan Bossart <nathandbossart@gmail.com>
> wrote:
> 
> > On Tue, Apr 19, 2022 at 04:21:21PM -0700, David G. Johnston wrote:
> > > I've done this four times in a row and while the number of dirty buffers
> > > shown each time vary (see below) I see that "wrote N buffers" is always
> > > exactly one more than the total count of dirty buffers.  I'm just curious
> > > if anyone has a quick answer for this unusual correspondence.
> >
> > I see that SlruInternalWritePage() increments ckpt_bufs_written, so my
> > first guess would be that it's due to something like CheckPointCLOG().
> >
> >
> I peeked at pg_stat_bgwriter and see an increase in buffers_checkpoint
> matching the dirty buffers number.
> 
> I also looked at pg_stat_slru to try and find the corresponding change
> caused by:
> 
> slru.c:766 (SlruPhysicalWritePage)
> pgstat_count_slru_page_written(shared->slru_stats_idx);
> 
> I do see (Xact) blks_hit change during this process (after the
> update/commit, not the checkpoint, though) but it increases by 2 when dirty
> buffers is 4.  I was expecting 4, thinking that blocks and buffers and
> pages are basically the same things (which [1] seems to affirm).
> 
> https://www.postgresql.org/message-id/13563.1044552279%40sss.pgh.pa.us

If I understand you point correctly..

Xact SLRU is so-called CLOG, on which transaction statuses
(running/committed/aborted) are recorded.  Its pages are separate
objects from table pages, which are out-of-sight of pg_bufferchace.
However, the same relationship between pages, blocks and buffers
applies to the both cases in parallel.

The reason for the 2 hits of Xact SLRU is that once for visibility
(MVCC) check and another for commit.

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center



pgsql-hackers by date:

Previous
From: Tomas Vondra
Date:
Subject: Re: Bad estimate with partial index
Next
From: Kyotaro Horiguchi
Date:
Subject: Re: Add --{no-,}bypassrls flags to createuser