diff options
author | Eric Wong <e@80x24.org> | 2023-10-31 20:42:52 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2023-11-01 07:08:09 +0000 |
commit | fdf90c0ffbf608ed08665eaffa5c750fa5a5bfee (patch) | |
tree | f9365a4472ef6e5dda901c68cc7c36b7da8c9fff /lib/PublicInbox/Epoll.pm | |
parent | 4d2f3651bde2f2c61b78973df56b6e6ee37a6dce (diff) | |
download | public-inbox-fdf90c0ffbf608ed08665eaffa5c750fa5a5bfee.tar.gz |
The epoll implementation is the only one which respects the limit (kevent would, but IO::KQueue does not). In any case, I'm not a fan of the maxevents=1000 historical default since it leads to fairness problems with shared non-blocking listeners across multiple daemon workers.
Diffstat (limited to 'lib/PublicInbox/Epoll.pm')
-rw-r--r-- | lib/PublicInbox/Epoll.pm | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/PublicInbox/Epoll.pm b/lib/PublicInbox/Epoll.pm index d55c8535..7e0aa6e7 100644 --- a/lib/PublicInbox/Epoll.pm +++ b/lib/PublicInbox/Epoll.pm @@ -18,6 +18,9 @@ sub new { sub ep_add { epoll_ctl(fileno(${$_[0]}), EPOLL_CTL_ADD, fileno($_[1]), $_[2]) } sub ep_mod { epoll_ctl(fileno(${$_[0]}), EPOLL_CTL_MOD, fileno($_[1]), $_[2]) } sub ep_del { epoll_ctl(fileno(${$_[0]}), EPOLL_CTL_DEL, fileno($_[1]), 0) } -sub ep_wait { epoll_wait(fileno(${$_[0]}), @_[1, 2, 3]) } + +# n.b. maxevents=1000 is the historical default. maxevents=1 (yes, one) +# is more fair under load with multiple worker processes sharing one listener +sub ep_wait { epoll_wait(fileno(${$_[0]}), 1000, @_[1, 2]) } 1; |