Re: [HACKERS] kqueue
Thomas Munro <thomas.munro@enterprisedb.com>
From: Thomas Munro <thomas.munro@enterprisedb.com>
To: Andres Freund <andres@anarazel.de>
Cc: Matteo Beccati <php@beccati.com>, Mateusz Guzik <mjguzik@gmail.com>,
Keith Fiske <keith@omniti.com>, Tom Lane <tgl@sss.pgh.pa.us>, Heikki Linnakangas <hlinnaka@iki.fi>,
Marko Tiikkaja <marko@joh.to>, Alvaro Herrera <alvherre@2ndquadrant.com>,
Robert Haas <robertmhaas@gmail.com>, Pg Hackers <pgsql-hackers@postgresql.org>, Noah Misch <noah@leadboat.com>
Date: 2018-10-09T21:10:01Z
Lists: pgsql-hackers
Attachments
- 0001-Add-kqueue-2-support-for-WaitEventSet-v12.patch (application/octet-stream) patch v12-0001
On Tue, Oct 2, 2018 at 6:28 AM Andres Freund <andres@anarazel.de> wrote: > On 2018-10-01 19:25:45 +0200, Matteo Beccati wrote: > > On 01/10/2018 01:09, Thomas Munro wrote: > > > I don't know why the existence of the kqueue should make recvfrom() > > > slower on the pgbench side. That's probably something to look into > > > off-line with some FreeBSD guru help. Degraded performance for > > > clients on the same machine does seem to be a show stopper for this > > > patch for now. Thanks for testing! > > > > Glad to be helpful! > > > > I've tried running pgbench from a separate VM and in fact kqueue > > consistently takes the lead with 5-10% more tps on select/prepared pgbench > > on NetBSD too. > > > > What I have observed is that sys cpu usage is ~65% (35% idle) with kqueue, > > while unpatched master averages at 55% (45% idle): relatively speaking > > that's almost 25% less idle cpu available for a local pgbench to do its own > > stuff. > > This suggest that either the the wakeup logic between kqueue and poll, > or the internal locking could be at issue. Is it possible that poll > triggers a directed wakeup path, but kqueue doesn't? I am following up with some kernel hackers. In the meantime, here is a rebase for the new split-line configure.in, to turn cfbot green. -- Thomas Munro http://www.enterprisedb.com
Commits
-
Add kqueue(2) support to the WaitEventSet API.
- 815c2f0972c8 13.0 landed
-
Add WL_EXIT_ON_PM_DEATH pseudo-event.
- cfdf4dc4fc96 12.0 cited
-
Be conservative about alignment requirements of struct epoll_event.
- a3b30763cc86 9.6.0 cited
-
Make idle backends exit if the postmaster dies.
- ac1d7945f866 9.6.0 cited