Hi, On 2025-07-16 16:20:25 +0200, Tomas Vondra wrote: > On 7/16/25 16:07, Peter Geoghegan wrote: > >> Te pattern of fadvise+pread for the same block seems a bit silly. And > >> this is not just about "sync" method, the other methods will have a > >> similar issue with no starting the I/O earlier. The fadvise is just > >> easier to trace/inspect. > > > > It's not at all surprising that you're seeing duplicate prefetch > > requests. I have no reason to believe that it's important to suppress > > those ourselves, rather than leaving it up to the OS (though I also > > have no reason to believe that the opposite is true). > > > > True, but in practice those duplicate calls are fairly expensive. Even > just calling fadvise() on data you already have in page cache costs > something (not much, but it's clearly visible for cached queries).
This imo isn't something worth optimizing for - if you use an io_method that actually can execute IO asynchronously this issue does not exist, as the start of the IO will already have populated the buffer entry (without BM_VALID set, of course). Thus we won't start another IO for that block. Greetings, Andres Freund