Re: EXPLAIN: showing ReadStream / prefetch stats
Tomas Vondra <tomas@vondra.me>
From: Tomas Vondra <tomas@vondra.me>
To: Melanie Plageman <melanieplageman@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-03-17T17:51:15Z
Lists: pgsql-hackers
Attachments
- v2-0001-bufmgr-Return-whether-WaitReadBuffers-needed-to-w.patch (text/x-patch) patch v2-0001
- v2-0002-explain-show-prefetch-stats-in-EXPLAIN-ANALYZE-VE.patch (text/x-patch) patch v2-0002
On 3/16/26 18:49, Tomas Vondra wrote: > On 3/16/26 18:14, Melanie Plageman wrote: >> ... >> >> I see a couple more issues with the counting in read_stream.c. >> >> You are double-counting stalls for synchronous IO. You increment >> stalls in read_stream_next_buffer() but we actually execute >> synchronous IO in WaitReadBuffers and return needed_wait as true, >> which will count a stall again. >> >> You are not counting fast path IOs because those don't go through >> read_stream_start_pending_read() and instead are started directly by >> StartReadBuffer() in read_stream_next_buffer(). Simple diff attached >> should fix this. >> >> Also, per worker stats are not displayed when BUFFERS false is passed >> even with IO true because of a small oversight. I fixed it in the >> attached diff. >> > > Thanks! > Here's a v2 with your fixes merged. No other changes. regards -- Tomas Vondra
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
bufmgr: Return whether WaitReadBuffers() needed to wait
- 513374a47a71 19 (unreleased) landed