pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
PostgreSQLv14 TPC-H performance GCC vs Clang
7+ messages / 3 participants
[nested] [flat]

* PostgreSQLv14 TPC-H performance GCC vs Clang
@ 2021-11-02 17:13  arjun shetty <arjunshetty955@gmail.com>
  0 siblings, 1 reply; 7+ messages in thread

From: arjun shetty @ 2021-11-02 17:13 UTC (permalink / raw)
  To: pgsql-performance@lists.postgresql.org

Hi
PostgreSQLv14 source code build  with GCCv11.2 and Clangv12(without JIT)
with  optimisation flags like O3 and tested with HammerDB
Observed TPC-H , GCC performance better than Clang(without JIT). The
performance difference ~22% and also noticed the assembly code difference
GCC vs Clang( e.g. GCC inlined functionality compared to Clang).

Environment details:
————————-
OS :RHEL8.4
Bare metal : Apple/AMD EPYC/IBM
Test(TPC-H) Benchmark Environment:HammerDB

Is the performance difference mainly because of below points ?
1 data over flow and calculations like int128(int128.c) and C arithmetic
operations(functions include in float.h e.g float4_mul)

And please suggest is any another functionality or code points need to
check on the performance difference

^ permalink  raw  reply  [nested|flat] 7+ messages in thread

* Re: PostgreSQLv14 TPC-H performance GCC vs Clang
@ 2021-11-02 19:29  Imre Samu <pella.samu@gmail.com>
  parent: arjun shetty <arjunshetty955@gmail.com>
  0 siblings, 1 reply; 7+ messages in thread

From: Imre Samu @ 2021-11-02 19:29 UTC (permalink / raw)
  To: arjun shetty <arjunshetty955@gmail.com>; +Cc: pgsql-performance@lists.postgresql.org

> .. optimisation flags like O3
> And please suggest ...  to check on the performance difference

The Phoronix has been tested the PostgreSQL 13 with Clang 12 + GCC 11.1 On
Xeon Ice Lake
*  "The CFLAGS/CXXFLAGS set throughout testing were "-O3 -march=native
-flto" *
*  as would be common for HPC systems when building performance sensitive
code."*
*and the results:*

https://www.phoronix.com/scan.php?page=article&item=clang12-gcc11-icelake&num=4
( see ~ bottom of the page )
only the Postgres ( GCC 11 vs. LLVM Clang 12 Benchmarks On Xeon Ice Lake )

https://openbenchmarking.org/result/2105299-IB-COMPILERT91&sgm=1&ppt=D&sor&sgm=1&...
  maybe you can replicate the Phoronix results  ( but this is only gcc11.1
! )
  "Compare your own system(s) to this result file with the Phoronix Test
Suite
    by running the command: phoronix-test-suite benchmark
2105299-IB-COMPILERT91"

Regards.
  Imre

arjun shetty <arjunshetty955@gmail.com> ezt írta (időpont: 2021. nov. 2.,
K, 18:13):

> Hi
> PostgreSQLv14 source code build  with GCCv11.2 and Clangv12(without JIT)
> with  optimisation flags like O3 and tested with HammerDB
> Observed TPC-H , GCC performance better than Clang(without JIT). The
> performance difference ~22% and also noticed the assembly code difference
> GCC vs Clang( e.g. GCC inlined functionality compared to Clang).
>
> Environment details:
> ————————-
> OS :RHEL8.4
> Bare metal : Apple/AMD EPYC/IBM
> Test(TPC-H) Benchmark Environment:HammerDB
>
> Is the performance difference mainly because of below points ?
> 1 data over flow and calculations like int128(int128.c) and C arithmetic
> operations(functions include in float.h e.g float4_mul)
>
> And please suggest is any another functionality or code points need to
> check on the performance difference
>

^ permalink  raw  reply  [nested|flat] 7+ messages in thread

* Re: PostgreSQLv14 TPC-H performance GCC vs Clang
@ 2021-11-05 12:07  arjun shetty <arjunshetty955@gmail.com>
  parent: Imre Samu <pella.samu@gmail.com>
  0 siblings, 1 reply; 7+ messages in thread

From: arjun shetty @ 2021-11-05 12:07 UTC (permalink / raw)
  To: Imre Samu <pella.samu@gmail.com>; +Cc: pgsql-performance@lists.postgresql.org <pgsql-performance@lists.postgresql.org>

Hi

@imre : Thank you sharing the links on “ Phoronix has been tested the
PostgreSQL 13”.
I compared my test results with Phoronix test suit” . It has too
deviations(may be hardware environment and PostgreSQL version)
I think PostgreSQLv13 may have issues with Auto vacuum and currently I’m
using with PostgreSQLv14


In my environment GCC performs better than Clang(llvm) the reason would  be
“int128”performance better in GCC compared to Clang.
1.Clang(__int128) require 4 additional functions like “__divti3 , __modti3,
__udivti3, __umodti3” and these additional not required in GCC . So it may
lead performance drop in Clang.
2.__int128 aligned 16 bytes boundaries (MAXALIGN) supported in GCC and may
this in not support in Clang

@postgresql- performance: kindly let know your view on those two points.





On Wednesday, November 3, 2021, Imre Samu <pella.samu@gmail.com> wrote:

> > .. optimisation flags like O3
> > And please suggest ...  to check on the performance difference
>
> The Phoronix has been tested the PostgreSQL 13 with Clang 12 + GCC 11.1 On
> Xeon Ice Lake
> *  "The CFLAGS/CXXFLAGS set throughout testing were "-O3 -march=native
> -flto" *
> *  as would be common for HPC systems when building performance sensitive
> code."*
> *and the results:*
>   https://www.phoronix.com/scan.php?page=article&item=clang12-
> gcc11-icelake&num=4 ( see ~ bottom of the page )
> only the Postgres ( GCC 11 vs. LLVM Clang 12 Benchmarks On Xeon Ice Lake )
>   https://openbenchmarking.org/result/2105299-IB-COMPILERT91;
> sgm=1&ppt=D&sor&sgm=1&ppt=D&oss=Postgresql
>   maybe you can replicate the Phoronix results  ( but this is only gcc11.1
> ! )
>   "Compare your own system(s) to this result file with the Phoronix Test
> Suite
>     by running the command: phoronix-test-suite benchmark
> 2105299-IB-COMPILERT91"
>
> Regards.
>   Imre
>
> arjun shetty <arjunshetty955@gmail.com> ezt írta (időpont: 2021. nov. 2.,
> K, 18:13):
>
>> Hi
>> PostgreSQLv14 source code build  with GCCv11.2 and Clangv12(without JIT)
>> with  optimisation flags like O3 and tested with HammerDB
>> Observed TPC-H , GCC performance better than Clang(without JIT). The
>> performance difference ~22% and also noticed the assembly code difference
>> GCC vs Clang( e.g. GCC inlined functionality compared to Clang).
>>
>> Environment details:
>> ————————-
>> OS :RHEL8.4
>> Bare metal : Apple/AMD EPYC/IBM
>> Test(TPC-H) Benchmark Environment:HammerDB
>>
>> Is the performance difference mainly because of below points ?
>> 1 data over flow and calculations like int128(int128.c) and C arithmetic
>> operations(functions include in float.h e.g float4_mul)
>>
>> And please suggest is any another functionality or code points need to
>> check on the performance difference
>>
>

^ permalink  raw  reply  [nested|flat] 7+ messages in thread

* Re: PostgreSQLv14 TPC-H performance GCC vs Clang
@ 2021-11-05 17:29  Tomas Vondra <tomas.vondra@enterprisedb.com>
  parent: arjun shetty <arjunshetty955@gmail.com>
  0 siblings, 1 reply; 7+ messages in thread

From: Tomas Vondra @ 2021-11-05 17:29 UTC (permalink / raw)
  To: arjun shetty <arjunshetty955@gmail.com>; Imre Samu <pella.samu@gmail.com>; +Cc: pgsql-performance@lists.postgresql.org <pgsql-performance@lists.postgresql.org>

Hi,

IMO this thread provides so little information it's almost impossible to 
answer the question. There's almost no information about the hardware, 
scale of the test, configuration of the Postgres instance, the exact 
build flags, differences in generated asm code, etc.

I find it hard to believe merely switching from clang to gcc yields 22% 
speedup - that's way higher than any differences we've seen in the past.

In my experience, the speedup is unlikely to be "across the board". 
There will be a handful of affected queries, while most remaining 
queries will be about the same. In that case you need to focus on those 
queries, see if the plans are the same, do some profiling, etc.


regards

-- 
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company





^ permalink  raw  reply  [nested|flat] 7+ messages in thread

* PostgreSQLv14 TPC-H performance GCC vs Clang
@ 2021-11-16 10:10  arjun shetty <arjunshetty955@gmail.com>
  parent: Tomas Vondra <tomas.vondra@enterprisedb.com>
  0 siblings, 1 reply; 7+ messages in thread

From: arjun shetty @ 2021-11-16 10:10 UTC (permalink / raw)
  To: Tomas Vondra <tomas.vondra@enterprisedb.com>; +Cc: Imre Samu <pella.samu@gmail.com>; pgsql-performance@lists.postgresql.org <pgsql-performance@lists.postgresql.org>

Yes, currently focusing affects queries as well.
In meanwhile on analysis(hardware level) and sample examples noticed
1. GCC performance  better than Clang on int128 .
2. Clang performance better than GCC on long long
 the reference example
https://stackoverflow.com/questions/63029428/why-is-int128-t-faster-than-long-long-on-x86-64-gcc

3.GCC enabled with “ fexcess-precision=standard” (precision cast for
floating point ).

Is these 3 points can make performance  difference GCC vs Clang in
PostgreSQLv14 in Apple/AMD/()environment(intel environment need to check).
In these environment int128 enabled wrt PostgreSQLv14.

On Friday, November 5, 2021, Tomas Vondra <tomas.vondra@enterprisedb.com>
wrote:

> Hi,
>
> IMO this thread provides so little information it's almost impossible to
> answer the question. There's almost no information about the hardware,
> scale of the test, configuration of the Postgres instance, the exact build
> flags, differences in generated asm code, etc.
>
> I find it hard to believe merely switching from clang to gcc yields 22%
> speedup - that's way higher than any differences we've seen in the past.
>
> In my experience, the speedup is unlikely to be "across the board". There
> will be a handful of affected queries, while most remaining queries will be
> about the same. In that case you need to focus on those queries, see if the
> plans are the same, do some profiling, etc.
>
>
> regards
>
> --
> Tomas Vondra
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>

^ permalink  raw  reply  [nested|flat] 7+ messages in thread

* Re: PostgreSQLv14 TPC-H performance GCC vs Clang
@ 2021-12-10 18:21  Imre Samu <pella.samu@gmail.com>
  parent: arjun shetty <arjunshetty955@gmail.com>
  0 siblings, 1 reply; 7+ messages in thread

From: Imre Samu @ 2021-12-10 18:21 UTC (permalink / raw)
  To: arjun shetty <arjunshetty955@gmail.com>; +Cc: Tomas Vondra <tomas.vondra@enterprisedb.com>; pgsql-performance@lists.postgresql.org <pgsql-performance@lists.postgresql.org>

> GCC vs Clang

related:
As I see - with LLVM/Clang 14.0 ( X86_64 -O3 )   ~12% performance increase
expected with the new optimisation ( probably adapted from gcc  )
- https://twitter.com/djtodoro/status/1466808507240386560
-
https://www.phoronix.com/scan.php?page=news_item&px=LLVM-Clang-14-Hoist-Load

regards,
 Imre



arjun shetty <arjunshetty955@gmail.com> ezt írta (időpont: 2021. nov. 16.,
K, 11:10):

> Yes, currently focusing affects queries as well.
> In meanwhile on analysis(hardware level) and sample examples noticed
> 1. GCC performance  better than Clang on int128 .
> 2. Clang performance better than GCC on long long
>  the reference example
> https://stackoverflow.com/questions/63029428/why-is-int128-t-faster-than-long-long-on-x86-64-gcc
>
> 3.GCC enabled with “ fexcess-precision=standard” (precision cast for
> floating point ).
>
> Is these 3 points can make performance  difference GCC vs Clang in
> PostgreSQLv14 in Apple/AMD/()environment(intel environment need to check).
> In these environment int128 enabled wrt PostgreSQLv14.
>
> On Friday, November 5, 2021, Tomas Vondra <tomas.vondra@enterprisedb.com>
> wrote:
>
>> Hi,
>>
>> IMO this thread provides so little information it's almost impossible to
>> answer the question. There's almost no information about the hardware,
>> scale of the test, configuration of the Postgres instance, the exact build
>> flags, differences in generated asm code, etc.
>>
>> I find it hard to believe merely switching from clang to gcc yields 22%
>> speedup - that's way higher than any differences we've seen in the past.
>>
>> In my experience, the speedup is unlikely to be "across the board". There
>> will be a handful of affected queries, while most remaining queries will be
>> about the same. In that case you need to focus on those queries, see if the
>> plans are the same, do some profiling, etc.
>>
>>
>> regards
>>
>> --
>> Tomas Vondra
>> EnterpriseDB: http://www.enterprisedb.com
>> The Enterprise PostgreSQL Company
>>
>

^ permalink  raw  reply  [nested|flat] 7+ messages in thread

* Re: PostgreSQLv14 TPC-H performance GCC vs Clang
@ 2022-01-18 14:22  arjun shetty <arjunshetty955@gmail.com>
  parent: Imre Samu <pella.samu@gmail.com>
  0 siblings, 0 replies; 7+ messages in thread

From: arjun shetty @ 2022-01-18 14:22 UTC (permalink / raw)
  To: Imre Samu <pella.samu@gmail.com>; +Cc: Tomas Vondra <tomas.vondra@enterprisedb.com>; pgsql-performance@lists.postgresql.org <pgsql-performance@lists.postgresql.org>

Hi All,

I checked with LLVM/CLang 14.0 on arch x86-64-O3 in the Mac/AMD EPYC
environment , but I see  GCC performs better than Clang14.
Clang14-https://github.com/llvm/llvm-project(main branch and pull or
commitID:3f3fe4a5cfa1797..)
[image: image.png]
pre analysis GCC vs Clang
 (1) GCC more inlined functionality compared to Clang in PostgreSQL
 (2) in few functions  GCC are not inlined but Clang consider inline
       postgresqlv14/src/include/utlis/float.h: float8_mul(),float8_div
(arithmetic functions).v
      postgresqlv14/src/backend/adt/geo_ops.c : point_xxx().
(3) GCC performs better than clang on datatype Int128(need to cross check
on instruction level/assembly code on Hardware).
(4) as point(2) without inline(remove inline in source code ) on those
functions in file's float.h and geo_ops.c and observed performance
improvement 6% compared to  within inline in Clang.

regards,
Arjun


On Fri, Dec 10, 2021 at 11:51 PM Imre Samu <pella.samu@gmail.com> wrote:

> > GCC vs Clang
>
> related:
> As I see - with LLVM/Clang 14.0 ( X86_64 -O3 )   ~12% performance increase
> expected with the new optimisation ( probably adapted from gcc  )
> - https://twitter.com/djtodoro/status/1466808507240386560
> -
> https://www.phoronix.com/scan.php?page=news_item&px=LLVM-Clang-14-Hoist-Load
>
> regards,
>  Imre
>
>
>
> arjun shetty <arjunshetty955@gmail.com> ezt írta (időpont: 2021. nov.
> 16., K, 11:10):
>
>> Yes, currently focusing affects queries as well.
>> In meanwhile on analysis(hardware level) and sample examples noticed
>> 1. GCC performance  better than Clang on int128 .
>> 2. Clang performance better than GCC on long long
>>  the reference example
>> https://stackoverflow.com/questions/63029428/why-is-int128-t-faster-than-long-long-on-x86-64-gcc
>>
>> 3.GCC enabled with “ fexcess-precision=standard” (precision cast for
>> floating point ).
>>
>> Is these 3 points can make performance  difference GCC vs Clang in
>> PostgreSQLv14 in Apple/AMD/()environment(intel environment need to check).
>> In these environment int128 enabled wrt PostgreSQLv14.
>>
>> On Friday, November 5, 2021, Tomas Vondra <tomas.vondra@enterprisedb.com>
>> wrote:
>>
>>> Hi,
>>>
>>> IMO this thread provides so little information it's almost impossible to
>>> answer the question. There's almost no information about the hardware,
>>> scale of the test, configuration of the Postgres instance, the exact build
>>> flags, differences in generated asm code, etc.
>>>
>>> I find it hard to believe merely switching from clang to gcc yields 22%
>>> speedup - that's way higher than any differences we've seen in the past.
>>>
>>> In my experience, the speedup is unlikely to be "across the board".
>>> There will be a handful of affected queries, while most remaining queries
>>> will be about the same. In that case you need to focus on those queries,
>>> see if the plans are the same, do some profiling, etc.
>>>
>>>
>>> regards
>>>
>>> --
>>> Tomas Vondra
>>> EnterpriseDB: http://www.enterprisedb.com
>>> The Enterprise PostgreSQL Company
>>>
>>

Attachments:

  [image/png] image.png (20.9K, ../../CAMowxTuSM=hWO+9obzBikWjEECGzBb9j_yxkAig+UTXFU9CUaQ@mail.gmail.com/3-image.png)
  download | view image

^ permalink  raw  reply  [nested|flat] 7+ messages in thread


end of thread, other threads:[~2022-01-18 14:22 UTC | newest]

Thread overview: 7+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2021-11-02 17:13 PostgreSQLv14 TPC-H performance GCC vs Clang arjun shetty <arjunshetty955@gmail.com>
2021-11-02 19:29 ` Imre Samu <pella.samu@gmail.com>
2021-11-05 12:07   ` arjun shetty <arjunshetty955@gmail.com>
2021-11-05 17:29     ` Tomas Vondra <tomas.vondra@enterprisedb.com>
2021-11-16 10:10       ` arjun shetty <arjunshetty955@gmail.com>
2021-12-10 18:21         ` Imre Samu <pella.samu@gmail.com>
2022-01-18 14:22           ` arjun shetty <arjunshetty955@gmail.com>

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox