mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-03 12:03:02 +00:00
159e3acf5d
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. |
||
---|---|---|
.. | ||
flags.c | ||
README | ||
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.