pgsql: Use ppoll(2), if available, to wait for input in pgbench.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Use ppoll(2), if available, to wait for input in pgbench.
Date: 2018-09-24 18:41:10
Message-ID: E1g4VnC-0000BC-J5@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Use ppoll(2), if available, to wait for input in pgbench.

Previously, pgbench always used select(2) for this purpose, but that's
problematic for very high client counts, because select() can't deal
with file descriptor numbers larger than FD_SETSIZE. It's pretty common
for that to be only 1024 or so, whereas modern OSes can allow many more
open files than that. Using poll(2) would surmount that problem, but it
creates another one: poll()'s timeout resolution is only 1ms, which is
poor enough to cause problems with --rate specifications approaching or
exceeding 1K TPS.

On platforms that have ppoll(2), which includes Linux and recent
FreeBSD, we can use that to avoid the FD_SETSIZE problem without any
loss of timeout resolution. Hence, add configure logic to test for
ppoll(), and use it if available.

This patch introduces an abstraction layer into pgbench that could
be extended to support other kernel event-wait APIs such as kevents.
But actually adding such support is a matter for some future patch.

Doug Rady, reviewed by Robert Haas and Fabien Coelho, and whacked around
a good bit more by me

Discussion: https://postgr.es/m/23D017C9-81B7-484D-8490-FD94DEC4DF59@amazon.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/60e612b602999e670f2d57a01e52799eaa903ca9

Modified Files
--------------
configure | 2 +-
configure.in | 2 +-
src/bin/pgbench/pgbench.c | 289 ++++++++++++++++++++++++++++++++++++------
src/include/pg_config.h.in | 3 +
src/include/pg_config.h.win32 | 3 +
src/template/linux | 1 +
6 files changed, 258 insertions(+), 42 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Nasby, Jim 2018-09-24 19:53:48 Re: pgsql: Improve autovacuum logging for aggressive and anti-wraparound ru
Previous Message Andres Freund 2018-09-24 18:29:34 Re: pgsql: Improve autovacuum logging for aggressive and anti-wraparound ru