[systemd-devel] Early review request: socket activation bridge
Tollef Fog Heen
tfheen at err.no
Thu Oct 10 22:12:20 PDT 2013
]] Lennart Poettering
> On Thu, 10.10.13 13:12, David Strauss (david at davidstrauss.net) wrote:
>
> > I was actually planning to rewrite on top of libuv today, but I'm
> > happy to port to the new, native event library.
> >
> > Is there any best-practice for using it with multiple threads?
>
> We are pretty conservative on threads so far, but I guess in this case
> it makes some sense to distribute work on CPUs. Here's how I would do it:
[snip long description]
fwiw, if you want really high performance, this is not at all how I'd do
it. Spawning threads while under load is a recipe for disaster, for a
start. I'd go with something how it's done in Varnish: Have an (or n)
acceptor threads that schedule work to a pool of worker threads. That
scheduler should be careful about such things as treating the worker
threads as LIFO (to preserve CPU cache). The advice about only 2-3
threads per CPU core looks excessively conservative. We're usually, and
quite happily running with a few thousand threads, no matter the number
of cores.
Using REUSEPORT might make sense in cases where you're happy to throw
away performance for simplicty. That's a completely valid tradeoff.
--
Tollef Fog Heen
UNIX is user friendly, it's just picky about who its friends are
More information about the systemd-devel
mailing list