haproxy/dev/flags
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
..
flags.c MEDIUM: task: remove TASK_SHARED_WQ and only use t->tid 2022-07-01 19:15:14 +02:00
README DEV: flags: use "sc" for stream conns instead of "cs" 2022-05-27 19:33:35 +02:00
show-fd-to-flags.sh

This needs to be built from the top makefile, for example :

    make dev/flags/flags

Then the executable is usable either one value at a time from the
command line, either with values coming from stdin with "-" passed
alone instead of the value.

It is possible to restrict the decoding to certain fields only by
specifying one of "ana", "chn", "conn", "sc", "si", "sierr", "strm",
"task", or "txn" before the value.