From owner-freebsd-performance@FreeBSD.ORG Tue Apr 10 18:43:37 2007 Return-Path: X-Original-To: performance@FreeBSD.org Delivered-To: freebsd-performance@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id C2EEC16A407; Tue, 10 Apr 2007 18:43:37 +0000 (UTC) (envelope-from kris@obsecurity.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id AD7CC13C4C3; Tue, 10 Apr 2007 18:43:37 +0000 (UTC) (envelope-from kris@obsecurity.org) Received: from obsecurity.dyndns.org (elvis.mu.org [192.203.228.196]) by elvis.mu.org (Postfix) with ESMTP id B76241A4D81; Tue, 10 Apr 2007 11:43:39 -0700 (PDT) Received: by obsecurity.dyndns.org (Postfix, from userid 1000) id 2FB3651B82; Tue, 10 Apr 2007 14:43:33 -0400 (EDT) Date: Tue, 10 Apr 2007 14:43:33 -0400 From: Kris Kennaway To: Tom Lane Message-ID: <20070410184332.GC44123@xor.obsecurity.org> References: <20070226002234.GA80974@xor.obsecurity.org> <461B69C0.4060707@paradise.net.nz> <25573.1176215022@sss.pgh.pa.us> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="XOIedfhf+7KOe/yw" Content-Disposition: inline In-Reply-To: <25573.1176215022@sss.pgh.pa.us> User-Agent: Mutt/1.4.2.2i Cc: pgsql-hackers , performance@FreeBSD.org, current@FreeBSD.org, Mark Kirkwood , Kris Kennaway Subject: Re: [HACKERS] Anyone interested in improving postgresql scaling? X-BeenThere: freebsd-performance@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Performance/tuning List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Apr 2007 18:43:37 -0000 --XOIedfhf+7KOe/yw Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, Apr 10, 2007 at 10:23:42AM -0400, Tom Lane wrote: > Mark Kirkwood writes: > > Kris Kennaway wrote: > >> If so, then your task is the following: > >>=20 > >> Make SYSV semaphores less dumb about process wakeups. Currently > >> whenever the semaphore state changes, all processes sleeping on the > >> semaphore are woken, even if we only have released enough resources > >> for one waiting process to claim. i.e. there is a thundering herd > >> wakeup situation which destroys performance at high loads. Fixing > >> this will involve replacing the wakeup() calls with appropriate > >> amounts of wakeup_one(). >=20 > > I'm forwarding this to the pgsql-hackers list so that folks more=20 > > qualified than I can comment, but as I understand the way postgres=20 > > implements locking each process has it *own* semaphore it waits on -= =20 > > and who is waiting for what is controlled by an in (shared) memory hash= =20 > > of lock structs (access to these is controlled via platform Dependant= =20 > > spinlock code). So a given semaphore state change should only involve= =20 > > one process wakeup. >=20 > Correct. The behavior Kris describes is surely bad, but it's not > relevant to Postgres' usage of SysV semaphores. Sorry, but the behaviour is real. Kris --XOIedfhf+7KOe/yw Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (FreeBSD) iD8DBQFGG9rUWry0BWjoQKURAmsHAKDnlEDzWjsnN6DSpJZwD9rJ4uhxkwCfT5Wk KPvE0REv7jdpbMea6D0KuYU= =l8NM -----END PGP SIGNATURE----- --XOIedfhf+7KOe/yw--