Re: Get rid of pgstat_count_backend_io_op*() functions
От | Andres Freund |
---|---|
Тема | Re: Get rid of pgstat_count_backend_io_op*() functions |
Дата | |
Msg-id | yqvt64p2oliobycr4xcyzhf7lsgo4zemq4ptggx74ogb5gbmb2@7yjcx4ee4aec обсуждение исходный текст |
Ответ на | Re: Get rid of pgstat_count_backend_io_op*() functions (Michael Paquier <michael@paquier.xyz>) |
Ответы |
Re: Get rid of pgstat_count_backend_io_op*() functions
|
Список | pgsql-hackers |
Hi, On 2025-09-02 08:19:22 +0900, Michael Paquier wrote: > On Mon, Sep 01, 2025 at 02:07:27PM +0000, Bertrand Drouvot wrote: > > Instead, it now copies the IO pending stats to the backend IO pending stats when > > the pending IO stats are flushed. This behaves the same way as for some relation > > and database stats (see pgstat_relation_flush_cb()). > > > > It's done that way to avoid incrementing the "same" counters twice as it produces > > increased overhead in profiles (reported by Andres in [1]). > > So, is the complaint about the addition of the extra incrementations > for backend counters on top of the existing IO counters in v17, > leading to more instructions generated, the addition of the functions, > or both things at the same time? The latter, I think. > Do you have an example of profile and/or workload where this actually > matters? It's not a large regression by any means - it shows up when micro-benchmarking seqscans that are consumed where quickly (e.g. OFFSET large; or count(*)). > Also, how much does it matter for v18? I think it's ok for 18. We just don't want to go further down the wrong way. I objected to this approach in the context of the tuple level counters, where it matters more, because obviously those are incremented a lot more often. > Removing both the function calls and the extra counter incrementations > means to do the same thing as the WAL stats, where we have one > structure in charge of incrementing the counters, then the data diffs > are fed when flushing the entries in all the stats kinds. I think that's the wrong direction to go. Diffing stats is far from cheap and gets more expensive the more detail you add to stats. EXPLAIN ANALYZE spends a large chunk of the time doing diffing of buffer access stats, for example. We need to work towards doing less of that stuff, not more. Greetings, Andres Freund
В списке pgsql-hackers по дате отправления: