Allow IO time to be counted without a matching IO operation in pg_stat_io Since 999dec9ec6a816680, pg_stat_io can show read time with zero reads for an IO Context: a foreign IO is counted as a read only in the initiating backend, while other waiters record only the wait time. That violates pgstat_bktype_io_stats_valid(). Relax the check to allow time without a matching operation count, since we want to count read wait time even in backends that did not initiate the read. This also enables future accounting of waits on IO resources (e.g., AIO handles) in backends that didn't start the IO.
Author: Andrey Rachitskiy <[email protected]> Reported-by: Justin Pryzby <[email protected]> Reviewed-by: Melanie Plageman <[email protected]> Reviewed-by: Andrey Borodin <[email protected]> Discussion: https://postgr.es/m/ak5lccE4qiQpOBHn@pryzbyj2023 Backpatch-through: 19 Branch ------ REL_19_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/d6792cc58e9c0aead136f381052151e1c246b534 Modified Files -------------- doc/src/sgml/monitoring.sgml | 4 +++- src/backend/storage/buffer/bufmgr.c | 8 ++++---- src/backend/utils/activity/pgstat_io.c | 22 +++++++--------------- 3 files changed, 14 insertions(+), 20 deletions(-)
