Re: Fix performance of generic atomics
Jesper Pedersen <jpederse@redhat.com>
From: Jesper Pedersen <jpederse@redhat.com>
To: Sokolov Yura <funny.falcon@postgrespro.ru>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers@postgresql.org
Date: 2017-09-05T17:47:38Z
Lists: pgsql-hackers
Hi, On 05/25/2017 11:12 AM, Sokolov Yura wrote: > I agree that lonely semicolon looks bad. > Applied your suggestion for empty loop body (/* skip */). > > Patch in first letter had while(true), but I removed it cause > I think it is uglier: > - `while(true)` was necessary for grouping read with `if`, > - but now there is single statement in a loop body and it is > condition for loop exit, so it is clearly just a loop. > > Optimization is valid cause compare_exchange always store old value > in `old` variable in a same atomic manner as atomic read. > I have tested this patch on a 2-socket machine, but don't see any performance change in the various runs. However, there is no regression either in all cases. As such, I have marked the entry "Ready for Committer". Remember to add a version postfix to your patches such that is easy to identify which is the latest version. Best regards, Jesper
Commits
-
Further marginal hacking on generic atomic ops.
- bfea92563c51 11.0 landed
-
Use more of gcc's __sync_fetch_and_xxx builtin functions for atomic ops.
- e09db94c0a5f 11.0 landed
-
Remove duplicate reads from the inner loops in generic atomic ops.
- e530be96859e 11.0 landed