Re: pg_stat_bgwriter.buffers_backend is pretty meaningless (and more?)

From: Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>
To: melanieplageman(at)gmail(dot)com
Cc: andres(at)anarazel(dot)de, pryzby(at)telsasoft(dot)com, alvherre(at)alvh(dot)no-ip(dot)org, magnus(at)hagander(dot)net, pgsql-hackers(at)postgresql(dot)org, lukas(at)fittl(dot)com, thomas(dot)munro(at)gmail(dot)com
Subject: Re: pg_stat_bgwriter.buffers_backend is pretty meaningless (and more?)
Date: 2022-07-13 02:00:07
Message-ID: 20220713.110007.1500596558876122350.horikyota.ntt@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

At Tue, 12 Jul 2022 12:19:06 -0400, Melanie Plageman <melanieplageman(at)gmail(dot)com> wrote in
> > +
> > &pgStatLocal.shmem->io_ops.stats[backend_type_get_idx(MyBackendType)];
> >
> > backend_type_get_idx(x) is actually (x - 1) plus assertion on the
> > value range. And the only use-case is here. There's an reverse
> > function and also used only at one place.
> >
> > + Datum backend_type_desc =
> > +
> > CStringGetTextDatum(GetBackendTypeDesc(idx_get_backend_type(i)));
> >
> > In this usage GetBackendTypeDesc() gracefully treats out-of-domain
> > values but idx_get_backend_type keenly kills the process for the
> > same. This is inconsistent.
> >
> > My humbel opinion on this is we don't define the two functions and
> > replace the calls to them with (x +/- 1). Addition to that, I think
> > we should not abort() by invalid backend types. In that sense, I
> > wonder if we could use B_INVALIDth element for this purpose.
> >
>
> I think that GetBackendTypeDesc() should probably also error out for an
> unknown value.
>
> I would be open to not using the helper functions. I thought it would be
> less error-prone, but since it is limited to the code in
> pgstat_io_ops.c, it is probably okay. Let me think a bit more.
>
> Could you explain more about what you mean about using B_INVALID
> BackendType?

I imagined to use B_INVALID as a kind of "default" partition, which
accepts all unknown backend types. We can just ignore that values but
then we lose the clue for malfunction of stats machinery. I thought
that that backend-type as the sentinel for malfunctions. Thus we can
emit logs instead.

I feel that the stats machinery shouldn't stop the server as possible,
or I think it is overreaction to abort for invalid values that can be
easily coped with.

regards.

--
Kyotaro Horiguchi
NTT Open Source Software Center

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2022-07-13 02:18:22 Re: pg_stat_bgwriter.buffers_backend is pretty meaningless (and more?)
Previous Message Kyotaro Horiguchi 2022-07-13 01:35:24 Re: DropRelFileLocatorBuffers