From: | Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com> |
---|---|
To: | david(dot)g(dot)johnston(at)gmail(dot)com |
Cc: | nathandbossart(at)gmail(dot)com, pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | Re: Odd off-by-one dirty buffers and checkpoint buffers written |
Date: | 2022-04-20 08:03:51 |
Message-ID: | 20220420.170351.853955380008032480.horikyota.ntt@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
At Tue, 19 Apr 2022 17:51:24 -0700, "David G. Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> wrote in
> On Tue, Apr 19, 2022 at 4:36 PM Nathan Bossart <nathandbossart(at)gmail(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Kyotaro Horiguchi | 2022-04-20 08:04:21 | Re: Add --{no-,}bypassrls flags to createuser |
Previous Message | Tomas Vondra | 2022-04-20 07:58:07 | Re: Bad estimate with partial index |