For the next 2.4 release, I would like to add scoreboard support to mod_http2.
There are several options for doing so and I would like your feedback on which
route we should take. I try to outline what options I see:
A) Make mod_http2 workers general MPM workers. They would then become
part of scoreboard without changes to the board itself.
B) Extend scoreboard to handle "thread sets", where MPM threads are the set it
has
not. mod_http2 would register a new set. scoreboard handles, an opaque struct
pointer for everyone, would get an additional "set id".
C) Mix both. MPM has thread sets and scoreboard learns to handle them.
Discussion:
1. A), doing it naively, will mess heavily with MPM module code. MPM modules now
use for(0...num_threads) {} heavily to setup threads that handle sockets and
pollsets and other nice things. This is not relevant for the http2 workers
which
are, framed more generally, "slave connection workers", whereas the current
MPM
threads are "master connection workers".
2. B) will not mess with MPM at all, just extend scoreboard and mod_status.
mod_http2
would register itself for a new thread set and update the status regularly.
This
approach offers least API disturbance for a backport to 2.4.x
3. C) is an extension of B). Thread sets get registered at MPM, scoreboard
interrogates
the new MPM sets and can hand out "scoreboard handles" for them. Bringing
these sets
into the MPM could be done, so that spare threads are shared between
different sets.
Don't know if that's desirable.
4. For mod_http2, the existing status indicators will continue to work, as
slave
connection workers do the same tasks as MPM threads, more or less. For more
flexible
use, one could provide for status indicators provided by the registrar.
Thoughts?
//Stefan