RE: AIX support - Mailing list pgsql-hackers

From Srirama Kucherlapati
Subject RE: AIX support
Date
Msg-id CY8PR15MB5602FE7D86B5C56CBF3E0268DBB22@CY8PR15MB5602.namprd15.prod.outlook.com
Whole thread Raw
In response to RE: AIX support  (Srirama Kucherlapati <sriram.rk@in.ibm.com>)
List pgsql-hackers

Hi Team, Please find the attached diff with the latest changes.

 

The diff file changes that were done for memset and spinlock, are modified

on top of the previous patch.

 

New changes for review: 0001-AIX-support.tas.memset.diffs

Previous patch: 0001-AIX-support.v8.patch

 


>> diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
> 

We have replaced the asm code with the gcc specific routines __sync_lock_test_and_set ()

and ran the pgbench. On AIX both have the similar performance, On PPcle we see a slight

variation in the performance. It seems the asm code is performing better on PPCle. Please

let us know, would it be better to continue to use the PPC assemble code over gcc routines.

 

Attached are the complete stats. (spinlock.stats.log)

Below is the summary…

 

                        AIX With asm    AIX With __sync   PPCle With asm  PPCle With __sync

number of transactions "226554/         "230810/          "356945/        "364346/

above the 10.0 ms       556329          567936            918647          863937

latency limit           (40.723%)"      (40.640%)"       (38.856%)"       (42.173%)"

 

latency average         16.160 ms       15.821 ms         9.796 ms        10.416 ms

initial connection time 230.786 ms      249.668 ms        19.606 ms       20.090 ms

tps                     3086.209412     3158.14915        5103.024267     4799.621896

 

 

> diff --git a/src/makefiles/Makefile.aix b/src/makefiles/Makefile.aix

> At least it needs to be updated to match what MemSet() looks like

> nowadays. The changes may be just cosmetic, but better check. Should

> also check the effect on MemSetAligned(). That might matter more for

> performance in practice.

 

As per the stats in the previous mail wrt to memset, both the loop and the native

memset are performing similar after optimization “-O2”. So for now we removed the

native memset changes.

We will setup the memset performance on different platforms and will post the

details in a different thread.

 

 

>>> +# -blibpath must contain ALL directories where we should look for libraries
>>> +libpath := $(shell echo $(subst -L,:,$(filter -L/%,$(LDFLAGS))) | sed -e's/ //g'):/usr/lib:/lib
>

 

Added additional details about the -blibpath usage. These details are available in the below link

https://download.boulder.ibm.com/ibmdl/pub/software/dw/aix/es-aix_ll.pdf

 

 


> 21  -- test overflow/underflow handling
> 
> 22  SELECT gamma(float8 '-infinity');
> 
> 23  ERROR:  value out of range: overflow

 

This testcase is resolved from AIX libm side. Below is the result.

 

 

postgres=#

SELECT x, gamma(x),lgamma(x)

FROM (VALUES (0.5), (1), (2), (3), (4), (5),

(float8 'infinity'), (float8 'nan')) AS t(x);

 

      0.5 | 1.772453850905516 | 0.5723649429247001

        1 |                 1 |                  0

        2 |                 1 |                  0

        3 |                 2 | 0.6931471805599453

        4 |                 6 |  1.791759469228055

        5 |                24 | 3.1780538303479458

Infinity |          Infinity |           Infinity

      NaN |               NaN |                NaN

 

 

Kindly let us know your feedback on the diffs.

I will commit the diffs to the patch(0001-AIX-support.v8.patch) once you are fine.

 

 

 

Warm regards,

Sriram.

 

 

Attachment

pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Fundamental scheduling bug in parallel restore of partitioned tables
Next
From: Robert Haas
Date:
Subject: Re: Add estimated hit ratio to Memoize in EXPLAIN to explain cost adjustment