When rt=1 is set, the created task is set to real time. This will essentially be used jointly with print=1 to print the wakeup date. Now it is pretty much visible that TASK_RT helps keeping recurrent delays stable under load: $ socat - /tmp/sock1 <<< "expert-mode on;debug dev sched task inter=1 count=100000" $ socat - /tmp/sock1 <<< "expert-mode on;debug dev sched task print=1 inter=1000 count=1" $ taskset -c 0 ./haproxy -db -f h2-h1.cfg [NOTICE] (11262) : Automatically setting global.maxconn to 2033. task 0x5a67740: time_ms=355817139.2593 task 0x5a67740: time_ms=355818165.934056 task 0x5a67740: time_ms=355819192.609666 task 0x5a67740: time_ms=355820219.528467 task 0x5a67740: time_ms=355821245.778249 task 0x5a67740: time_ms=355822271.800731 task 0x5a67740: time_ms=355823297.836419 task 0x5a67740: time_ms=355824327.894992 task 0x5a67740: time_ms=355825354.92738 task 0x5a67740: time_ms=355826381.242925 ^C => ~1030ms interval $ socat - /tmp/sock1 <<< "expert-mode on;debug dev sched task inter=1 count=100000" $ socat - /tmp/sock1 <<< "expert-mode on;debug dev sched task print=1 inter=1000 count=1 rt=1" $ taskset -c 0 ./haproxy -db -f h2-h1.cfg [NOTICE] (11274) : Automatically setting global.maxconn to 2033. task 0x1c89d740: time_ms=355842657.804670 task 0x1c89d740: time_ms=355843657.130495 task 0x1c89d740: time_ms=355844657.159396 task 0x1c89d740: time_ms=355845657.176695 task 0x1c89d740: time_ms=355846657.144914 task 0x1c89d740: time_ms=355847657.416217 task 0x1c89d740: time_ms=355848657.192072 ^C => ~1000ms interval Also mixing one non-rt and one rt tasks easily shows that the non-RT skews: task 0x3180080: time_ms=356074147.738657 task 0x7f82705749c0: time_ms=356074167.140429 task 0x3180080: time_ms=356075157.58365 task 0x7f82705749c0: time_ms=356075167.155128 task 0x3180080: time_ms=356076167.23508 task 0x7f82705749c0: time_ms=356076167.163529 task 0x7f82705749c0: time_ms=356077167.131421 task 0x3180080: time_ms=356077176.204301 task 0x7f82705749c0: time_ms=356078167.172336 task 0x3180080: time_ms=356078186.76828 task 0x7f82705749c0: time_ms=356079167.110302 task 0x3180080: time_ms=356079195.814623 Under traffic with a run queue of 50k, with non-rt we can see delays of up to a few hundred ms, while the rt one is stable: task 0xf52228e3c580: time_ms=12817821323.738291 task 0xf52228e3c580: time_ms=12817822375.954267 task 0xf52228e3c580: time_ms=12817823437.542732 task 0xf522c85fe340: time_ms=12817823901.552931 task 0xf52228e3c580: time_ms=12817824487.769129 task 0xf522c85fe340: time_ms=12817824901.491252 task 0xf52228e3c580: time_ms=12817825553.539234 task 0xf522c85fe340: time_ms=12817825901.930177 task 0xf52228e3c580: time_ms=12817826613.611365 task 0xf522c85fe340: time_ms=12817826901.94851 task 0xf52228e3c580: time_ms=12817827659.386720 task 0xf522c85fe340: time_ms=12817827901.655777 task 0xf52228e3c580: time_ms=12817828694.795097 task 0xf522c85fe340: time_ms=12817828901.882341 task 0xf52228e3c580: time_ms=12817829765.216886 task 0xf522c85fe340: time_ms=12817829901.723780 task 0xf52228e3c580: time_ms=12817830844.706481 task 0xf522c85fe340: time_ms=12817830901.571820 task 0xf522c85fe340: time_ms=12817831901.440380 task 0xf52228e3c580: time_ms=12817831951.556375 This indicates that thisshould be a sufficient first step to unblock haload. |
||
|---|---|---|
| .github | ||
| addons | ||
| admin | ||
| dev | ||
| doc | ||
| examples | ||
| include | ||
| reg-tests | ||
| scripts | ||
| src | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| .mailmap | ||
| .travis.yml | ||
| BRANCHES | ||
| BSDmakefile | ||
| CHANGELOG | ||
| CONTRIBUTING | ||
| INSTALL | ||
| LICENSE | ||
| MAINTAINERS | ||
| Makefile | ||
| README.md | ||
| SUBVERS | ||
| VERDATE | ||
| VERSION | ||
HAProxy
HAProxy is a free, very fast and reliable reverse-proxy offering high availability, load balancing, and proxying for TCP and HTTP-based applications.
Installation
The INSTALL file describes how to build HAProxy. A list of packages is also available on the wiki.
Getting help
The discourse and the mailing-list are available for questions or configuration assistance. You can also use the slack or IRC channel. Please don't use the issue tracker for these.
The issue tracker is only for bug reports or feature requests.
Documentation
The HAProxy documentation has been split into a number of different files for ease of use. It is available in text format as well as HTML. The wiki is also meant to replace the old architecture guide.
Please refer to the following files depending on what you're looking for:
- INSTALL for instructions on how to build and install HAProxy
- BRANCHES to understand the project's life cycle and what version to use
- 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)
License
HAProxy is licensed under GPL 2 or any later version, the headers under LGPL 2.1. See the LICENSE file for a more detailed explanation.
