From:
Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
To:
Simon Riggs <simon(at)2ndQuadrant(dot)com>
Cc:
Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Erik Rijkers <er(at)xs4all(dot)nl>,
pgsql-hackers(at)postgresql(dot)org
Subject:
Re: testing HS/SR - 1 vs 2 performance
Date:
2010-04-21 12:20:32
Message-ID:
4BCEED90.4060806@enterprisedb.com (view raw or flat )
Thread:
2010-04-12 14:00:51 from "Erik Rijkers" <er(at)xs4all(dot)nl>
2010-04-13 05:44:19 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-04-13 18:09:46 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-04-14 08:24:45 from Dimitri Fontaine <dfontaine(at)hi-media(dot)com>
2010-04-14 12:08:13 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-16 08:29:54 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-04-16 09:10:01 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-16 11:47:42 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-04-16 12:00:22 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-16 21:00:09 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-16 14:39:52 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-16 14:52:49 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-16 15:10:45 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-17 14:16:55 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-17 15:13:46 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-17 15:25:46 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-04-17 19:20:00 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-17 19:45:47 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-17 20:14:33 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-17 20:48:21 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-17 22:46:06 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-17 22:52:26 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-18 07:24:36 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-18 11:01:05 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-18 20:16:11 from David Fetter <david(at)fetter(dot)org>
2010-04-18 20:22:21 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-18 20:23:21 from David Fetter <david(at)fetter(dot)org>
2010-04-20 11:50:23 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-04-21 03:09:43 from Mark Kirkwood <mark(dot)kirkwood(at)catalyst(dot)net(dot)nz>
2010-04-21 03:46:06 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-04-21 06:39:16 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-21 12:20:32 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-04-21 13:31:28 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-21 14:11:00 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-04-21 12:27:12 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-04-21 13:37:46 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-21 13:51:00 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-04-21 14:12:43 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-21 14:22:50 from marcin mank <marcin(dot)mank(at)gmail(dot)com>
2010-04-21 14:49:06 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-21 15:13:29 from Florian Pflug <fgp(at)phlo(dot)org>
2010-04-21 14:53:05 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-04-22 05:57:43 from Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
2010-04-22 06:56:39 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-22 18:39:14 from "Erik Rijkers" <er(at)xs4all(dot)nl>
2010-04-22 21:41:29 from Greg Smith <greg(at)2ndquadrant(dot)com>
2010-04-22 21:54:55 from Mark Kirkwood <mark(dot)kirkwood(at)catalyst(dot)net(dot)nz>
2010-04-22 22:32:44 from "Erik Rijkers" <er(at)xs4all(dot)nl>
2010-04-22 22:45:47 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-23 15:14:41 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-23 15:32:19 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-04-23 22:39:48 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-23 23:07:15 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-04-24 09:17:44 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-25 10:53:04 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-04-25 12:50:00 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-25 15:37:04 from Robert Haas <robertmhaas(at)gmail(dot)com>
2010-04-25 15:50:17 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-25 16:46:38 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-25 16:51:58 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-25 17:00:58 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-25 17:33:24 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-25 17:45:02 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-25 17:51:00 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-27 02:35:22 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-27 02:37:18 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-27 17:52:50 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-27 18:13:33 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-27 18:53:16 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-27 19:29:13 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-27 20:18:53 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-27 20:44:32 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-27 21:24:48 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-27 21:45:53 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-27 22:08:29 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-27 22:45:54 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-28 00:13:09 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-28 09:37:38 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-23 23:17:22 from "Erik Rijkers" <er(at)xs4all(dot)nl>
2010-04-25 18:25:16 from "Erik Rijkers" <er(at)xs4all(dot)nl>
2010-04-25 18:55:02 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-25 21:52:19 from "Erik Rijkers" <er(at)xs4all(dot)nl>
2010-04-26 07:43:09 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-26 15:04:09 from "Erik Rijkers" <er(at)xs4all(dot)nl>
2010-04-25 19:07:28 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-05-04 16:10:53 from "Erik Rijkers" <er(at)xs4all(dot)nl>
2010-05-04 16:19:47 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-05-04 16:33:26 from "Erik Rijkers" <er(at)xs4all(dot)nl>
2010-05-04 18:26:58 from Greg Smith <greg(at)2ndquadrant(dot)com>
2010-05-04 19:40:12 from "Erik Rijkers" <er(at)xs4all(dot)nl>
2010-05-07 12:04:02 from Greg Smith <greg(at)2ndquadrant(dot)com>
2010-05-04 19:34:53 from Stefan Kaltenbrunner <stefan(at)kaltenbrunner(dot)cc>
2010-05-04 20:48:07 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-26 06:52:51 from Fujii Masao <masao(dot)fujii(at)gmail(dot)com>
2010-04-26 15:01:41 from "Erik Rijkers" <er(at)xs4all(dot)nl>
2010-04-23 00:44:11 from Mark Kirkwood <mark(dot)kirkwood(at)catalyst(dot)net(dot)nz>
2010-04-25 16:43:57 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-25 16:54:59 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-25 23:18:48 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-26 07:21:35 from Simon Riggs <simon(at)2ndQuadrant(dot)com>
2010-04-23 17:16:09 from Marko Kreen <markokr(at)gmail(dot)com>
2010-04-23 17:38:48 from Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
2010-04-23 18:22:55 from Marko Kreen <markokr(at)gmail(dot)com>
Lists:
pgsql-hackers
Simon Riggs wrote:
> On Sun, 2010-04-18 at 08:24 +0100, Simon Riggs wrote:
>> On Sat, 2010-04-17 at 18:52 -0400, Tom Lane wrote:
>>> Simon Riggs <simon(at)2ndQuadrant(dot)com> writes:
>>>> What I'm not clear on is why you've used a spinlock everywhere when only
>>>> weak-memory thang CPUs are a problem. Why not have a weak-memory-protect
>>>> macro that does does nada when the hardware already protects us? (i.e. a
>>>> spinlock only for the hardware that needs it).
>>> Well, we could certainly consider that, if we had enough places where
>>> there was a demonstrable benefit from it. I couldn't measure any real
>>> slowdown from adding a spinlock in that sinval code, so I didn't propose
>>> doing so at the time --- and I'm pretty dubious that this code is
>>> sufficiently performance-critical to justify the work, either.
>> OK, I'll put a spinlock around access to the head of the array.
>
> v2 patch attached
The locking seems overly complex to me. Looking at
KnownAssignedXidsAdd(), isn't it possible for two processes to call it
concurrently in exclusive_lock==false mode and get the same 'head'
value, and step on each others toes? I guess KnownAssignedXidsAdd() is
only called by the startup process, but it seems like an accident
waiting to happen.
Spinlocks are fast, if you have to add an if-branch to decide whether to
acquire it, I suspect you've lost any performance gain to be had
already. Let's keep it simple. And acquiring ProcArrayLock in exclusive
mode while adding entries to the array seems OK to me as well. It only
needs to be held very briefly, and getting this correct and keeping it
simple is much more important at this point than squeezing out every
possible CPU cycle from the system.
Just require that the caller holds ProcArrayLock in exclusive mode when
calling an operation that modifies the array, and in shared mode when
reading it.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
In response to
Responses
pgsql-hackers by date
Next :From: Heikki LinnakangasDate: 2010-04-21 12:27:12
Subject : Re: testing HS/SR - 1 vs 2 performance
Previous :From : Robert HaasDate : 2010-04-21 12:05:38
Subject : Re: BETA