Re: index prefetching

From: "Peter Geoghegan" <pg(at)bowt(dot)ie>
To: "Peter Geoghegan" <pg(at)bowt(dot)ie>, "Andres Freund" <andres(at)anarazel(dot)de>
Cc: "Tomas Vondra" <tomas(at)vondra(dot)me>, "Thomas Munro" <thomas(dot)munro(at)gmail(dot)com>, "Nazir Bilal Yavuz" <byavuz81(at)gmail(dot)com>, "Robert Haas" <robertmhaas(at)gmail(dot)com>, "Melanie Plageman" <melanieplageman(at)gmail(dot)com>, "PostgreSQL Hackers" <pgsql-hackers(at)lists(dot)postgresql(dot)org>, "Georgios" <gkokolatos(at)protonmail(dot)com>, "Konstantin Knizhnik" <knizhnik(at)garret(dot)ru>, "Dilip Kumar" <dilipbalaut(at)gmail(dot)com>
Subject: Re: index prefetching
Date: 2025-08-14 19:30:16
Message-ID: DC2EEO986FUD.2QA5USWGDP9NB@bowt.ie
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu Aug 14, 2025 at 3:15 PM EDT, Peter Geoghegan wrote:
> On Thu, Aug 14, 2025 at 2:53 PM Andres Freund <andres(at)anarazel(dot)de> wrote:
>> I think this is just an indicator of being IO bound.
>
> Then why does the exact same pair of runs show "I/O Timings: shared
> read=194.629" for the sequential table backwards scan (with total
> execution time 1132.360 ms), versus "I/O Timings: shared read=352.88"
> (with total execution time 697.681 ms) for the random table backwards
> scan?

Is there any particular significance to the invalid op reports I also see in
the same log files?

$ cat sequential.txt | grep invalid | head
2025-08-14 14:35:03.278 EDT [2516983][client backend] [[unknown]][0/1:0] DEBUG: 00000: io 0 |op invalid|target invalid|state IDLE : wait_one io_gen: 2, ref_gen: 1, cycle 1
2025-08-14 14:35:03.278 EDT [2516983][client backend] [[unknown]][0/1:0] DEBUG: 00000: io 0 |op invalid|target invalid|state IDLE : wait_one io_gen: 3, ref_gen: 2, cycle 1
2025-08-14 14:35:03.278 EDT [2516983][client backend] [[unknown]][0/1:0] DEBUG: 00000: io 0 |op invalid|target invalid|state IDLE : wait_one io_gen: 4, ref_gen: 3, cycle 1
2025-08-14 14:35:03.278 EDT [2516983][client backend] [[unknown]][0/1:0] DEBUG: 00000: io 0 |op invalid|target invalid|state IDLE : wait_one io_gen: 5, ref_gen: 4, cycle 1
2025-08-14 14:35:03.278 EDT [2516983][client backend] [[unknown]][0/1:0] DEBUG: 00000: io 0 |op invalid|target invalid|state IDLE : wait_one io_gen: 6, ref_gen: 5, cycle 1
2025-08-14 14:35:03.278 EDT [2516983][client backend] [[unknown]][0/1:0] DEBUG: 00000: io 0 |op invalid|target invalid|state IDLE : wait_one io_gen: 7, ref_gen: 6, cycle 1
2025-08-14 14:35:03.279 EDT [2516983][client backend] [[unknown]][0/1:0] DEBUG: 00000: io 0 |op invalid|target invalid|state IDLE : wait_one io_gen: 8, ref_gen: 7, cycle 1
2025-08-14 14:35:03.279 EDT [2516983][client backend] [[unknown]][0/1:0] DEBUG: 00000: io 0 |op invalid|target invalid|state IDLE : wait_one io_gen: 9, ref_gen: 8, cycle 1
2025-08-14 14:35:03.279 EDT [2516983][client backend] [[unknown]][0/1:0] DEBUG: 00000: io 0 |op invalid|target invalid|state IDLE : wait_one io_gen: 10, ref_gen: 9, cycle 1
2025-08-14 14:35:03.279 EDT [2516983][client backend] [[unknown]][0/1:0] DEBUG: 00000: io 0 |op invalid|target invalid|state IDLE : wait_one io_gen: 11, ref_gen: 10, cycle 1
$ cat sequential.txt | grep invalid | wc -l
5733
$ cat random.txt | grep invalid | wc -l
2206

--
Peter Geoghegan

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Greg Burd 2025-08-14 19:32:09 Re: [PATCH] bms_prev_member() can read beyond the end of the array of allocated words
Previous Message Matheus Alcantara 2025-08-14 19:22:49 Re: Eager aggregation, take 3