Re: pg_stat_bgwriter.buffers_backend is pretty meaningless (and more?)
Kyotaro Horiguchi <horikyota.ntt@gmail.com>
At Tue, 12 Jul 2022 12:19:06 -0400, Melanie Plageman <melanieplageman@gmail.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
Commits
-
Stabilize pg_stat_io writes test
- ef719e7b32fc 16.0 landed
-
Fix flakey pg_stat_io test
- 1be0fdb9de55 16.0 landed
-
Suppress more compiler warnings in new pgstats code.
- b1b86820d84e 16.0 landed
-
Suppress compiler warnings in new pgstats code.
- 728560db7d86 16.0 landed
-
Add tests for pg_stat_io
- 10a082bf7215 16.0 landed
-
Create regress_tblspc in test_setup
- 9c83bbcf7ef6 16.0 landed
-
Add pg_stat_io view, providing more detailed IO statistics
- a9c70b46dbe1 16.0 landed
-
pgstat: Track more detailed relation IO statistics
- f30d62c2fc60 16.0 landed
-
pgstat: Infrastructure for more detailed IO statistics
- 28e626bde00e 16.0 landed
-
doc: Fix some issues in logical replication section
- 4f74f5641d53 16.0 cited
-
Manual cleanup and pgindent of pgstat and bufmgr related code
- 250c8ee07ede 16.0 landed
-
Have the planner consider Incremental Sort for DISTINCT
- 3c6fc58209f2 16.0 cited
-
Use actual backend IDs in pg_stat_get_backend_idset() and friends.
- d7e39d72ca1c 16.0 cited
-
Remove redundant call to pgstat_report_wal()
- 1bdd54e662d5 16.0 landed
-
Add BackendType for standalone backends
- 0c679464a837 16.0 landed
-
Initialize backend status reporting during bootstrap.
- 3b34645678d1 15.0 landed