From cd50d183273c105a7f08b1875ba6f7a51d9f8e9a Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 3 May 2019 10:34:08 +0000 Subject: bundle Danga::Socket and Sys::Syscall These modules are unmaintained upstream at the moment, but I'll be able to help with the intended maintainer once/if CPAN ownership is transferred. OTOH, we've been waiting for that transfer for several years, now... Changes I intend to make: * EPOLLEXCLUSIVE for Linux * remove unused fields wasting memory * kqueue bugfixes e.g. https://rt.cpan.org/Ticket/Display.html?id=116615 * accept4 support And some lower priority experiments: * switch to EV_ONESHOT / EPOLLONESHOT (incompatible changes) * nginx-style buffering to tmpfile instead of string array * sendfile off tmpfile buffers * io_uring maybe? --- TODO | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'TODO') diff --git a/TODO b/TODO index 7a3bb6b8..372f7331 100644 --- a/TODO +++ b/TODO @@ -54,7 +54,7 @@ all need to be considered for everything we introduce) * portability to FreeBSD (and other Free Software *BSDs) ugh... https://rt.cpan.org/Ticket/Display.html?id=116615 - (IO::KQueue is broken with Danga::Socket) + (IO::KQueue is broken with Danga::Socket / PublicInbox::DS) * EPOLLEXCLUSIVE for listen socket fairness across -httpd/nntpd worker processes. -- cgit v1.2.3-24-ge0c7 From 5aaea61844b92c452c201ce9832e3c5c68c6f84e Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Fri, 3 May 2019 10:34:09 +0000 Subject: listener: use EPOLLEXCLUSIVE for listen sockets Since our listen sockets are non-blocking and we may run multiple httpd|nntpd processes; we need a way to avoid thundering herds when there are multiple httpd|nntpd worker processes. EPOLLEXCLUSIVE was added just for that in Linux 4.5 --- TODO | 3 --- 1 file changed, 3 deletions(-) (limited to 'TODO') diff --git a/TODO b/TODO index 372f7331..ac255b86 100644 --- a/TODO +++ b/TODO @@ -56,9 +56,6 @@ all need to be considered for everything we introduce) ugh... https://rt.cpan.org/Ticket/Display.html?id=116615 (IO::KQueue is broken with Danga::Socket / PublicInbox::DS) -* EPOLLEXCLUSIVE for listen socket fairness across -httpd/nntpd - worker processes. - * improve documentation * linkify thread skeletons better -- cgit v1.2.3-24-ge0c7 From e229e045a93ef35c335af00cd0e130a6ec6146d4 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 5 May 2019 04:56:14 +0000 Subject: DS: workaround IO::Kqueue EINTR (mis-)handling IO::Kqueue seems unmaintained, so workaround a long-standing bug where it falls over on signals: https://rt.cpan.org/Ticket/Display.html?id=116615 --- TODO | 4 ---- 1 file changed, 4 deletions(-) (limited to 'TODO') diff --git a/TODO b/TODO index ac255b86..d947b0ff 100644 --- a/TODO +++ b/TODO @@ -52,10 +52,6 @@ all need to be considered for everything we introduce) cf. https://public-inbox.org/git/20160814012706.GA18784@starla/ -* portability to FreeBSD (and other Free Software *BSDs) - ugh... https://rt.cpan.org/Ticket/Display.html?id=116615 - (IO::KQueue is broken with Danga::Socket / PublicInbox::DS) - * improve documentation * linkify thread skeletons better -- cgit v1.2.3-24-ge0c7