On Fri, May 10, 2024 at 7:26 PM Nazir Bilal Yavuz <byavu...@gmail.com> wrote: > > Hi, > > Thank you for working on this! > > On Wed, 1 May 2024 at 06:37, Masahiko Sawada <sawada.m...@gmail.com> wrote: > > > > Thank you for further testing! I've pushed the patch. > > I realized a behaviour change while looking at 'Use pgBufferUsage for > block reporting in analyze' thread [1]. Since that change applies here > as well, I thought it is better to mention it here. > > Before this commit, VacuumPageMiss did not count the blocks if its > read was already completed by other backends [2]. Now, > 'pgBufferUsage.local_blks_read + pgBufferUsage.shared_blks_read' > counts every block attempted to be read; possibly double counting if > someone else has already completed the read.
True. IIUC there is such a difference only in HEAD but not in v15 and v16. The following comment in WaitReadBuffers() says that it's a traditional behavior that we count blocks as read even if someone else has already completed its I/O: /* * We count all these blocks as read by this backend. This is traditional * behavior, but might turn out to be not true if we find that someone * else has beaten us and completed the read of some of these blocks. In * that case the system globally double-counts, but we traditionally don't * count this as a "hit", and we don't have a separate counter for "miss, * but another backend completed the read". */ So I think using pgBufferUsage for (parallel) vacuum is a legitimate usage and makes it more consistent with other parallel operations. Regards, -- Masahiko Sawada Amazon Web Services: https://aws.amazon.com