Re: Keep elog(ERROR) and ereport(ERROR) calls in the cold path

Peter Eisentraut <peter.eisentraut@2ndquadrant.com>

From: Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
To: David Rowley <dgrowleyml@gmail.com>
Cc: Andres Freund <andres@anarazel.de>, PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>
Date: 2020-09-23T06:07:10Z
Lists: pgsql-hackers
On 2020-09-22 22:42, David Rowley wrote:
> On Tue, 22 Sep 2020 at 19:08, David Rowley <dgrowleyml@gmail.com> wrote:
>> 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.
> 
> I've attached the results of a TPCH scale=5 run master (f859c2ffa) vs
> master + elog_ereport_attribute_cold_v4.patch
> 
> It does not look great. The patched version seems to have done about
> 1.17% less work than master did.

I wonder how much benefit you'd get from

a) compiling with -O3 instead of -O2, or
b) compiling with profile-driven optimization

I think that would indicate a target and/or a ceiling of what we should 
be expecting from hot/cold/likely/unlikely optimization techniques like 
this.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



Commits

  1. Stop gap fix for __attribute__((cold)) compiler bug in MinGW 8.1

  2. Tidy up definitions of pg_attribute_hot and pg_attribute_cold

  3. Fix unportable usage of __has_attribute

  4. Improve compiler code layout in elog/ereport ERROR calls

  5. Define pg_attribute_cold and pg_attribute_hot macros