haproxy/dev
Willy Tarreau 159e3acf5d MEDIUM: task: remove TASK_SHARED_WQ and only use t->tid
TASK_SHARED_WQ was set upon task creation and never changed afterwards.
Thus if a task was created to run anywhere (e.g. a check or a Lua task),
all its timers would always pass through the shared timers queue with a
lock. Now we know that tid<0 indicates a shared task, so we can use that
to decide whether or not to use the shared queue. The task might be
migrated using task_set_affinity() but it's always dequeued first so
the check will still be valid.

Not only this removes a flag that's difficult to keep synchronized with
the thread ID, but it should significantly lower the load on systems with
many checks. A quick test with 5000 servers and fast checks that were
saturating the CPU shows that the check rate increased by 20% (hence the
CPU usage dropped by 17%). It's worth noting that run_task_lists() almost
no longer appears in perf top now.
2022-07-01 19:15:14 +02:00
..
base64
coccinelle DEV: coccinelle: add endp_flags.cocci 2022-05-27 19:33:34 +02:00
flags MEDIUM: task: remove TASK_SHARED_WQ and only use t->tid 2022-07-01 19:15:14 +02:00
hpack
plug_qdisc
poll
qpack MINOR: qpack: implement standalone decoder tool 2022-06-15 15:42:10 +02:00
tcploop DEV: tcploop: add minimal UDP support 2022-06-08 14:42:15 +02:00
trace
udp DEV: udp: add support for random packet corruption 2022-03-16 15:09:54 +01:00