Re: Keep elog(ERROR) and ereport(ERROR) calls in the cold path
David Rowley <dgrowleyml@gmail.com>
From: David Rowley <dgrowleyml@gmail.com>
To: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Cc: Andres Freund <andres@anarazel.de>, PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2020-09-22T07:08:12Z
Lists: pgsql-hackers
Attachments
- elog_ereport_attribute_cold_v4.patch (application/octet-stream) patch v4
- tpch_scale5_elog_ereport_cold_v4_vs_master.ods (application/vnd.oasis.opendocument.spreadsheet)
On Fri, 11 Sep 2020 at 02:01, Peter Eisentraut <peter.eisentraut@2ndquadrant.com> wrote: > > On 2020-09-06 02:24, David Rowley wrote: > >> I would add DEBUG1 back into the conditional, like > >> > >> if (__builtin_constant_p(elevel) && ((elevel) >= ERROR || (elevel) <= > >> DEBUG1) ? \ > > > > hmm, but surely we don't want to move all code that's in the same > > branch as an elog(DEBUG1) call into a cold area. > > Yeah, nevermind that. I've reattached the v4 patch since it just does the >= ERROR case. > > The v3 patch just put an unlikely() around the errstart() call if the > > level was <= DEBUG1. That just to move the code that's inside the if > > (errstart(...)) in the macro into a cold area. > > That could be useful. Depends on how much effect it has. I wonder if it is. I'm having trouble even seeing gains from the ERROR case and I'm considering dropping this patch due to that. I ran another scale=5 TPCH benchmark on v4 against f859c2ffa using gcc 9.3. I'm unable to see any gains with this, however, the results were pretty noisy. I only ran pgbench for 60 seconds per query. I'll likely need to run that a bit longer. I'll do that tonight. It would be good if someone else could run some tests on their own hardware to see if they can see any gains. David
Commits
-
Stop gap fix for __attribute__((cold)) compiler bug in MinGW 8.1
- 687f61634475 14.0 landed
-
Tidy up definitions of pg_attribute_hot and pg_attribute_cold
- b0727ae99b70 14.0 landed
-
Fix unportable usage of __has_attribute
- 1fa22a43a56e 14.0 landed
-
Improve compiler code layout in elog/ereport ERROR calls
- 913ec71d682e 14.0 landed
-
Define pg_attribute_cold and pg_attribute_hot macros
- 697e1d02f53f 14.0 landed