Re: [systemd-devel] [PATCH] core: support Distribute=n to distribute to n workers

2014-01-06 Thread David Timothy Strauss
On Sun, Jan 5, 2014 at 1:44 PM, Zbigniew Jędrzejewski-Szmek zbys...@in.waw.pl wrote: 3. The strategy of dup()ing the socket doesn't work. I wrote a simple server in python which logs the connections [2], and hooked it up into systemd [3-4] (*). If REUSEPORT was working correctly, each

Re: [systemd-devel] [PATCH] core: support Distribute=n to distribute to n workers

2014-01-06 Thread Zbigniew Jędrzejewski-Szmek
On Mon, Jan 06, 2014 at 04:14:40AM -0800, David Timothy Strauss wrote: On Sun, Jan 5, 2014 at 1:44 PM, Zbigniew Jędrzejewski-Szmek zbys...@in.waw.pl wrote: 3. The strategy of dup()ing the socket doesn't work. I wrote a simple server in python which logs the connections [2], and hooked

Re: [systemd-devel] [PATCH] core: support Distribute=n to distribute to n workers

2014-01-05 Thread Zbigniew Jędrzejewski-Szmek
On Thu, Dec 19, 2013 at 12:21:26PM -0800, Shawn Landden wrote: On Fri, Dec 13, 2013 at 8:23 PM, Shawn Landden sh...@churchofgit.com wrote: If Distribute=n, turns SO_REUSEPORT on, and spawns n workers to handling incoming requests. SO_REUSEPORT sockets on the same port must all be created

Re: [systemd-devel] [PATCH] core: support Distribute=n to distribute to n workers

2013-12-13 Thread Lennart Poettering
On Thu, 12.12.13 23:46, Shawn Landden (sh...@churchofgit.com) wrote: -Socket.ReusePort,config_parse_bool, 0, offsetof(Socket, reuse_port) +Socket.ReusePort,config_parse_tristate, -1,

Re: [systemd-devel] [PATCH] core: support Distribute=n to distribute to n workers

2013-12-13 Thread Shawn Landden
Forgot to send my notes on the last review On Fri, Dec 13, 2013 at 7:12 AM, Lennart Poettering lenn...@poettering.net wrote: On Thu, 12.12.13 23:46, Shawn Landden (sh...@churchofgit.com) wrote: -Socket.ReusePort,config_parse_bool, 0,

[systemd-devel] [PATCH] core: support Distribute=n to distribute to n workers

2013-12-13 Thread Shawn Landden
If Distribute=n, turns SO_REUSEPORT on, and spawns n workers to handling incoming requests. SO_REUSEPORT sockets on the same port must all be created by the same uid, therefore using the option allows other root programs (or programs of the same user if running in --user mode) to hijack this

[systemd-devel] [PATCH] core: support Distribute=n to distribute to n workers

2013-12-13 Thread Shawn Landden
If Distribute=n, turns SO_REUSEPORT on, and spawns n workers to handling incoming requests. SO_REUSEPORT sockets on the same port must all be created by the same uid, therefore using the option allows other root programs (or programs of the same user if running in --user mode) to hijack this

[systemd-devel] [PATCH] core: support Distribute=n to distribute to n workers

2013-12-12 Thread Shawn Landden
If Distribute=n, turns SO_REUSEPORT on, and spawns n workers to handling incoming requests. SO_REUSEPORT sockets on the same port must all be created by the same uid, therefore using the option allows other root programs (or programs of the same user if running in --user mode) to hijack this

Re: [systemd-devel] [PATCH] core: support Distribute=n to distribute to n workers

2013-12-11 Thread Lennart Poettering
On Tue, 10.12.13 18:53, Shawn Landden (sh...@churchofgit.com) wrote: @@ -116,6 +115,7 @@ const sd_bus_vtable bus_socket_vtable[] = { SD_BUS_PROPERTY(MessageQueueMessageSize, x, bus_property_get_long, offsetof(Socket, mq_msgsize), 0), SD_BUS_PROPERTY(Result, s,

Re: [systemd-devel] [PATCH] core: support Distribute=n to distribute to n workers

2013-12-11 Thread Zbigniew Jędrzejewski-Szmek
On Tue, Dec 10, 2013 at 06:53:33PM -0800, Shawn Landden wrote: Please add a commit message that says what the commit does. This part can remain, but please prefix it with Some open questions remain: or something. Because it takes a while for the service to start up, and until then we spin in a

[systemd-devel] [PATCH] core: support Distribute=n to distribute to n workers

2013-12-10 Thread Shawn Landden
Because it takes a while for the service to start up, and until then we spin in a fast epoll loop, this tends to start up all the instances all at once. There are a number of ways we can slow this instanciation down: 1) Call accept() and pass an additional fd to the service 2) Use EPOLLET: