Re: Deadlock in XLogInsert at AIX

Konstantin Knizhnik <k.knizhnik@postgrespro.ru>

From: Konstantin Knizhnik <k.knizhnik@postgrespro.ru>
To: "REIX, Tony" <tony.reix@atos.net>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Cc: Heikki Linnakangas <hlinnaka@iki.fi>, Bernd Helmle <mailings@oopsware.de>
Date: 2017-02-01T15:59:12Z
Lists: pgsql-hackers
Hi Tony,

On 01.02.2017 18:42, REIX, Tony wrote:
>
> Hi Konstantin
>
> *XLC.*
>
> I'm on AIX 7.1 for now.
>
> I'm using this version of *XL**C v13*:
>
> # xlc -qversion
> IBM XL C/C++ for AIX, V13.1.3 (5725-C72, 5765-J07)
> Version: 13.01.0003.0003
>
> With this version, I have (at least, since I tested with "check" and 
> not "check-world" at that time) 2 failing tests: create_aggregate , 
> aggregates .
>
>
> With the following *XLC v12* version, I have NO test failure:
>
> # /usr/vac/bin/xlc -qversion
> IBM XL C/C++ for AIX, V12.1 (5765-J02, 5725-C72)
> Version: 12.01.0000.0016
>
>
> So maybe you are not using XLC v13.1.3.3, rather another sub-version. 
> Unless you are using more options for the configure ?
>
>
> *Configure*.
>
> What are the options that you give to the configure ?
>
>
export CC="/opt/IBM/xlc/13.1.3/bin/xlc"
export CFLAGS="-qarch=pwr8 -qtune=pwr8 -O2 -qalign=natural -q64 "
export LDFLAGS="-Wl,-bbigtoc,-b64"
export AR="/usr/bin/ar -X64"
export LD="/usr/bin/ld -b64 "
export NM="/usr/bin/nm -X64"
./configure --prefix="/opt/postgresql/xlc-debug/9.6"


> *Hard load & 64 cores ?* OK. That clearly explains why I do not see 
> this issue.
>
>
> *pgbench ?* I wanted to run it. However, I'm still looking where to 
> get it plus a guide for using it for testing.
>

pgbench is part of Postgres distributive (src/bin/pgbench)


> I would add such tests when building my PostgreSQL RPMs on AIX. So any 
> help is welcome !
>
>
> *Performance*.
>
> - Also, I'd like to compare PostgreSQL performance on AIX vs 
> Linux/PPC64. Any idea how I should proceed ? Any PostgreSQL 
> performance benchmark that I could find and use ? pgbench ?
>
pgbench is most widely used tool simulating OLTP workload. Certainly it 
is quite primitive and its results are rather artificial. TPC-C seems to 
be better choice.
But the best case is to implement your own benchmark simulating actual 
workload of your real application.

> - I'm interested in any information for improving the performance & 
> quality of my PostgreSQM RPMs on AIX./(As I already said, BullFreeware 
> RPMs for AIX are free and can be used by anyone, like Perzl RPMs 
> are//.////My compa//ny (ATOS/Bull) sells IBM Power machines under the 
> Escala brand s//ince ages (25 years this year)//)/.
>
>
> *How to help ?*
>
> How could I help for improving the quality and performance of 
> PostgreSQL on AIX ?
>

We still have one open issue at AIX: see 
https://www.mail-archive.com/pgsql-hackers@postgresql.org/msg303094.html
It will be great if you can somehow help to fix this problem.



-- 
Konstantin Knizhnik
Postgres Professional: http://www.postgrespro.com
The Russian Postgres Company

Commits

  1. For all ppc compilers, implement compare_exchange and fetch_add with asm.

  2. For PowerPC instruction "addi", use constraint "b".

  3. For all ppc compilers, implement pg_atomic_fetch_add_ with inline asm.

  4. Replace xlc __fetch_and_add() with inline asm.

  5. Test pg_atomic_fetch_add_ with variable addend and 16-bit edge cases.