Re: pg_stat_bgwriter.buffers_backend is pretty meaningless (and more?)
Melanie Plageman <melanieplageman@gmail.com>
Attachments
- v33-0002-Aggregate-IO-operation-stats-per-BackendType.patch (text/x-patch) patch v33-0002
- v33-0001-Track-IO-operation-statistics-locally.patch (text/x-patch) patch v33-0001
- v33-0003-Add-system-view-tracking-IO-ops-per-backend-type.patch (text/x-patch) patch v33-0003
I've gone ahead and implemented option 1 (commented below). On Thu, Oct 6, 2022 at 6:23 PM Melanie Plageman <melanieplageman@gmail.com> wrote: > > v31 failed in CI, so > I've attached v32 which has a few issues fixed: > - addressed some compiler warnings I hadn't noticed locally > - autovac launcher and worker do indeed use bulkread strategy if they > end up starting before critical indexes have loaded and end up doing a > sequential scan of some catalog tables, so I have changed the > restrictions on BackendTypes allowed to track IO Operations in > IOCONTEXT_BULKREAD > - changed the name of the column "fsynced" to "files_synced" to make it > more clear what unit it is in (and that the unit differs from that of > the "unit" column) > > In an off-list discussion with Andres, he mentioned that he thought > buffers reused by a BufferAccessStrategy should be split from buffers > "acquired" and that "acquired" should be renamed "clocksweeps". > > I have started doing this, but for BufferAccessStrategy IO there are a > few choices about how we want to count the clocksweeps: > > Currently the following situations are counted under the following > IOContexts and IOOps: > > IOCONTEXT_[VACUUM,BULKREAD,BULKWRITE], IOOP_ACQUIRE > - reuse a buffer from the ring > > IOCONTEXT_SHARED, IOOP_ACQUIRE > - add a buffer to the strategy ring initially > - add a new shared buffer to the ring when all the existing buffers in > the ring are pinned > > And in the new paradigm, I think these are two good options: > > 1) > IOCONTEXT_[VACUUM,BULKREAD,BULKWRITE], IOOP_CLOCKSWEEP > - add a buffer to the strategy ring initially > - add a new shared buffer to the ring when all the existing buffers in > the ring are pinned > > IOCONTEXT_[VACUUM,BULKREAD,BULKWRITE], IOOP_REUSE > - reuse a buffer from the ring > I've implemented this option in attached v33. > 2) > IOCONTEXT_[VACUUM,BULKREAD,BULKWRITE], IOOP_CLOCKSWEEP > - add a buffer to the strategy ring initially > > IOCONTEXT_[VACUUM,BULKREAD,BULKWRITE], IOOP_REUSE > - reuse a buffer from the ring > > IOCONTEXT SHARED, IOOP_CLOCKSWEEP > - add a new shared buffer to the ring when all the existing buffers in > the ring are pinned - Melanie
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