lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 17 Jan 2013 06:27:41 -0800
From:	Eric Dumazet <eric.dumazet@...il.com>
To:	David Laight <David.Laight@...LAB.COM>
Cc:	Tom Herbert <therbert@...gle.com>, netdev@...r.kernel.org,
	davem@...emloft.net, netdev@...kandruth.co.uk
Subject: RE: [PATCH 0/5]: soreuseport: Bind multiple sockets to the same
 port

On Thu, 2013-01-17 at 09:53 +0000, David Laight wrote:
> > We had considered solving this within accept.  The problem is that
> > there's no way to indicate how much work a thread should do via
> > accept.  For instance, an event loop usually would look like:
> > 
> > while (1) {
> >     fd = accept();
> >     process(fd);
> > }
> > 
> > With multiple threads, the number of accepted sockets in a particular
> > thread is non-deterministic...
> 
> If your loop looks like that then each thread is only processing
> a single socket and won't call accept() again until it is idle.
> 
> OTOH if each thread is processing multiple requests using
> poll/select (or similar) at the top of the loop then a single
> thread is likely to pick up a large number of connections.
> 
> Given that both poll and select are inefficient with very large
> numbers of fds (every call is usually o(n) [1]), the kernel will
> support some kind of event mechanism, maybe tweaking that to
> signal the waiters in turn would also work - and be more general.
> 
> It might also be possible to do something on the user side of
> sockets to generate additional fd with their own queue?
> (IMHO some of the SCTP stuff should have been done that way).

I hope you dont really believe Tom was going to explain how
a typical server is built around the accept() thing.

Linux has epoll() mechanism, so the poll()/select() O(n) behavior
are not relevant for modern applications.



--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists