MEDIUM: evports: permit to report multiple events at once

Since the beginning in 2.0 the nevlist parameter was set to 1 before
calling port_getn(), which means that a single FD event will be reported
per polling loop. This is extremely inefficient, and all the code was
designed to use global.tune.maxpollevents. It looks like it's a leftover
of a temporary debugging change. No apparent issues were found by setting
it to a higher value, so better do that.

That code is not much used nowadays with Solaris disappearing from the
landscape, so even if this definitely was a bug, it's preferable not to
backport that fix as it could uncover other subtle bugs that were never
raised yet.
This commit is contained in:
Willy Tarreau 2024-04-17 16:37:04 +02:00
parent 36d92dcd9b
commit e6662bf706
1 changed files with 1 additions and 1 deletions

View File

@ -185,7 +185,7 @@ static void _do_poll(struct poller *p, int exp, int wake)
do { do {
int timeout = (global.tune.options & GTUNE_BUSY_POLLING) ? 0 : wait_time; int timeout = (global.tune.options & GTUNE_BUSY_POLLING) ? 0 : wait_time;
int interrupted = 0; int interrupted = 0;
nevlist = 1; /* desired number of events to be retrieved */ nevlist = global.tune.maxpollevents; /* desired number of events to be retrieved */
timeout_ts.tv_sec = (timeout / 1000); timeout_ts.tv_sec = (timeout / 1000);
timeout_ts.tv_nsec = (timeout % 1000) * 1000000; timeout_ts.tv_nsec = (timeout % 1000) * 1000000;