mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-20 20:57:00 +00:00
haproxy public development tree
It is possible to hit a fairness issue in the scheduler when a local task runs for a long time (i.e. process_stream() returns running), and a global task wants to run on the same thread and remains in the global queue. What happens in this case is that the condition to extract tasks from the global queue will rarely be satisfied for very low task counts since whatever non-null queue size multiplied by a thread count >1 is always greater than the small remaining number of tasks in the queue. In theory another thread should pick the task but we do have some mono threaded tasks in the global queue as well during inter-thread wakeups. Note that this can only happen with task counts lower than the thread counts, typically one task in each queue for more than two threads. This patch works around the problem by allowing a very small unfairness, making sure that we can always pick at least one task from the global queue even if there is already one in the local queue. A better approach will consist in scanning the two trees in parallel and always pick the best task. This will be more complex and will constitute a separate patch. This fix must be backported to 1.9. |
||
---|---|---|
.github/ISSUE_TEMPLATE | ||
contrib | ||
doc | ||
ebtree | ||
examples | ||
include | ||
reg-tests | ||
scripts | ||
src | ||
tests | ||
.gitignore | ||
CHANGELOG | ||
CONTRIBUTING | ||
INSTALL | ||
LICENSE | ||
MAINTAINERS | ||
Makefile | ||
README | ||
ROADMAP | ||
SUBVERS | ||
VERDATE | ||
VERSION |
The HAProxy documentation has been split into a number of different files for ease of use. Please refer to the following files depending on what you're looking for : - INSTALL for instructions on how to build and install HAProxy - LICENSE for the project's license - CONTRIBUTING for the process to follow to submit contributions The more detailed documentation is located into the doc/ directory : - doc/intro.txt for a quick introduction on HAProxy - doc/configuration.txt for the configuration's reference manual - doc/lua.txt for the Lua's reference manual - doc/SPOE.txt for how to use the SPOE engine - doc/network-namespaces.txt for how to use network namespaces under Linux - doc/management.txt for the management guide - doc/regression-testing.txt for how to use the regression testing suite - doc/peers.txt for the peers protocol reference - doc/coding-style.txt for how to adopt HAProxy's coding style - doc/internals for developer-specific documentation (not all up to date)