Re: GCC 8.3.0 vs. 9.0.1

From: Andres Freund <andres(at)anarazel(dot)de>
To: Steven Winfield <Steven(dot)Winfield(at)cantabcapital(dot)com>
Cc: "pgsql-performance(at)lists(dot)postgresql(dot)org" <pgsql-performance(at)lists(dot)postgresql(dot)org>
Subject: Re: GCC 8.3.0 vs. 9.0.1
Date: 2019-05-07 17:32:45
Message-ID: 20190507173245.mxow3jhgm5whv6le@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

Hi,

On 2019-05-07 16:14:43 +0000, Steven Winfield wrote:
> (Apologies if this isn't the right place to post this)

Seems right.

> A few days ago a blog post appeared on phoronix.com[1] comparing GCC 8.3.0 against 9.0.1 on Intel cascadelake processors.
> A notable difference was seen in the PostgreSQL benchmark (v10.3, pgbench, read/write, more detail below), both when compiling with -march=native and -march=skylake:
>
> GCC version | -march= | TPS
> 8.3.0 | skylake | 5667
> 9.0.1 | skylake | 11684 (2.06x speed up)
> 8.3.0 | native | 8075
> 9.0.1 | native | 11274 (1.40x speed up)
>
> I'm interested to know the devs' take on this is - does GCC 9 contain some new feature(s) that are particularly well suited to compiling and optimising Postgres? Or was GCC 8 particularly bad?

I think those numbers are just plain bogus. read/write pgbench is
commonly IO bound. My suspicion is much more that the tests for gcc 8
and 9 were executed in the same postgres cluster (in which case the
second will be faster, because it'll have pre-initialized WAL files).
Or something of that vein.

> (after patching it so that it can run as root)

That, uh, seems odd.

> - pgbench -i -s <system memory in MB * 0.003> pgbench

That's pretty small, but whatever.

Here's my results:

I ran:

pgbench -i -q -s 96 && pgbench -n -c 8 -j 8 -T 100 -P1

gcc 8.3, march=native (on skylake):

first run:
tps = 14436.465265 (excluding connections establishing)

second run:
tps = 13293.266789 (excluding connections establishing)

third run after postgres restart (and thus a checkpoint):
tps = 14270.248273 (excluding connections establishing)

gcc 9.1, march=native (on skylake):

first run:
tps = 13836.231981 (excluding connections establishing)

second run:
tps = 13304.975550 (excluding connections establishing)

third run after postgres restart (and thus a checkpoint):
tps = 14390.246324 (excluding connections establishing)

As you can see the test results are somewhat unstable - the test
duration of 60s is just not long enough. But there's no meaningful
evidence of a large speedup here.

> This email is confidential. If you are not the intended recipient, please advise us immediately and delete this message.
> The registered name of Cantab- part of GAM Systematic is Cantab Capital Partners LLP.
> See - http://www.gam.com/en/Legal/Email+disclosures+EU for further information on confidentiality, the risks of non-secure electronic communication, and certain disclosures which we are required to make in accordance with applicable legislation and regulations.
> If you cannot access this link, please notify us by reply message and we will send the contents to you.
>
> GAM Holding AG and its subsidiaries (Cantab – GAM Systematic) will collect and use information about you in the course of your interactions with us.
> Full details about the data types we collect and what we use this for and your related rights is set out in our online privacy policy at https://www.gam.com/en/legal/privacy-policy.
> Please familiarise yourself with this policy and check it from time to time for updates as it supplements this notice.

This is a public list.

Greetings,

Andres Freund

In response to

Responses

Browse pgsql-performance by date

  From Date Subject
Next Message Andres Freund 2019-05-07 17:42:47 Re: GCC 8.3.0 vs. 9.0.1
Previous Message Peter Geoghegan 2019-05-07 17:28:16 Re: GCC 8.3.0 vs. 9.0.1