Re: Deadlock in XLogInsert at AIX

From: Konstantin Knizhnik <k(dot)knizhnik(at)postgrespro(dot)ru>
To: "REIX, Tony" <tony(dot)reix(at)atos(dot)net>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>
Cc: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>, Bernd Helmle <mailings(at)oopsware(dot)de>
Subject: Re: Deadlock in XLogInsert at AIX
Date: 2017-02-01 13:48:34
Message-ID: 3f5948ed-b2a9-0920-98ac-47b347ad03a3@postgrespro.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

We are using 13.1.3 version of XLC. All tests are passed.
Please notice that is is synchronization bug which can be reproduced
only under hard load.
Our server has 64 cores and it is necessary to run pgbench with 100
connections during several minutes to reproduce the problem.
So may be you just didn't notice it;)

On 01.02.2017 16:29, REIX, Tony wrote:
>
> Hi,
>
> I'm now working on the port of PostgreSQL on AIX.
> (RPMs can be found, as free OpenSource work, at
> http://http://bullfreeware.com/ <http://http://bullfreeware.com/> .
> http://bullfreeware.com/search.php?package=postgresql)
>
> I was not aware of any issue with XLC v12 on AIX for atomic operations.
> (XLC v13 generates at least 2 tests failures)
>
> For now, with version 9.6.1, all tests "check-world", plus
> numeric_bigtest, are OK, in both 32 & 64bit versions.
>
> Am I missing something ?
>
> I configure the build of PostgreSQL with (in 64bits):
>
> ./configure
> --prefix=/opt/freeware
> --libdir=/opt/freeware/lib64
> --mandir=/opt/freeware/man
> --with-perl
> --with-tcl
> --with-tclconfig=/opt/freeware/lib
> --with-python
> --with-ldap
> --with-openssl
> --with-libxml
> --with-libxslt
> --enable-nls
> --enable-thread-safety
> --sysconfdir=/etc/sysconfig/postgresql
>
> Am I missing some option for more optimization on AIX ?
>
> Thanks
>
> Regards,
>
> Tony
>
>
> Le 01/02/2017 à 12:07, Konstantin Knizhnik a écrit :
>> Attached please find my patch for XLC/AIX.
>> The most critical fix is adding __sync to pg_atomic_fetch_add_u32_impl.
>> The comment in this file says that:
>>
>> * __fetch_and_add() emits a leading "sync" and trailing "isync",
>> thereby
>> * providing sequential consistency. This is undocumented.
>>
>> But it is not true any more (I checked generated assembler code in
>> debugger).
>> This is why I have added __sync() to this function. Now pgbench working
>> normally.
>>
>> Also there is mysterious disappearance of assembler section function
>> with sync instruction from pg_atomic_compare_exchange_u32_impl.
>> I have fixed it by using __sync() built-in function instead.
>>
>>
>> Thanks to everybody who helped me to locate and fix this problem.
>>
>> --
>>
>> Konstantin Knizhnik
>> Postgres Professional: http://www.postgrespro.com
>> The Russian Postgres Company
>>
>>
>> ATOS WARNING !
>> This message contains attachments that could potentially harm your
>> computer.
>> Please make sure you open ONLY attachments from senders you know,
>> trust and is in an e-mail that you are expecting.
>>
>> AVERTISSEMENT ATOS !
>> Ce message contient des pièces jointes qui peuvent potentiellement
>> endommager votre ordinateur.
>> Merci de vous assurer que vous ouvrez uniquement les pièces jointes
>> provenant d’emails que vous attendez et dont vous connaissez les
>> expéditeurs et leur faites confiance.
>>
>> AVISO DE ATOS !
>> Este mensaje contiene datos adjuntos que pudiera ser que dañaran su
>> ordenador.
>> Asegúrese de abrir SOLO datos adjuntos enviados desde remitentes de
>> confianza y que procedan de un correo esperado.
>>
>> ATOS WARNUNG !
>> Diese E-Mail enthält Anlagen, welche möglicherweise ihren Computer
>> beschädigen könnten.
>> Bitte beachten Sie, daß Sie NUR Anlagen öffnen, von einem Absender
>> den Sie kennen, vertrauen und vom dem Sie vor allem auch E-Mails mit
>> Anlagen erwarten.
>>
>>
>

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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Erik Rijkers 2017-02-01 13:48:57 Re: \if, \elseif, \else, \endif (was Re: PSQL commands: \quit_if, \quit_unless)
Previous Message Fabien COELHO 2017-02-01 13:33:43 Re: \if, \elseif, \else, \endif (was Re: PSQL commands: \quit_if, \quit_unless)