haproxy/doc
Willy Tarreau beb859abce MINOR: polling: add an option to support busy polling
In some situations, especially when dealing with low latency on processors
supporting a variable frequency or when running inside virtual machines,
each time the process waits for an I/O using the poller, the processor
goes back to sleep or is offered to another VM for a long time, and it
causes excessively high latencies.

A solution to this provided by this patch is to enable busy polling using
a global option. When busy polling is enabled, the pollers never sleep and
loop over themselves waiting for an I/O event to happen or for a timeout
to occur. On multi-processor machines it can significantly overheat the
processor but it usually results in much lower latencies.

A typical test consisting in injecting traffic over a single connection at
a time over the loopback shows a bump from 4640 to 8540 connections per
second on forwarded connections, indicating a latency reduction of 98
microseconds for each connection, and a bump from 12500 to 21250 for
locally terminated connections (redirects), indicating a reduction of
33 microseconds.

It is only usable with epoll and kqueue because select() and poll()'s
API is not convenient for such usages, and the level of performance they
are used in doesn't benefit from this anyway.

The option, which obviously remains disabled by default, can be turned
on using "busy-polling" in the global section, and turned off later
using "no busy-polling". Its status is reported in "show info" to help
troubleshooting suspicious CPU spikes.
2018-11-22 19:47:30 +01:00
..
design-thoughts DOC: Fix typos in different subsections of the documentation 2018-11-18 22:23:15 +01:00
internals DOC: Fix typos in different subsections of the documentation 2018-11-18 22:23:15 +01:00
lua-api DOC: Fix typos in different subsections of the documentation 2018-11-18 22:23:15 +01:00
51Degrees-device-detection.txt DOC: fix a few typos in the documentation 2018-11-18 22:23:15 +01:00
acl.fig
architecture.txt DOC: fix a few typos in the documentation 2018-11-18 22:23:15 +01:00
close-options.txt DOC: fix a few typos in the documentation 2018-11-18 22:23:15 +01:00
coding-style.txt DOC: fix a few typos in the documentation 2018-11-18 22:23:15 +01:00
configuration.txt MINOR: polling: add an option to support busy polling 2018-11-22 19:47:30 +01:00
cookie-options.txt DOC: fix a few typos in the documentation 2018-11-18 22:23:15 +01:00
DeviceAtlas-device-detection.txt DOC: move the device detection modules documentation to their own files 2016-11-08 15:06:21 +01:00
gpl.txt
haproxy.1 MINOR: doc: document the -x flag 2017-04-13 19:15:17 +02:00
intro.txt DOC/MINOR: intro: typo, wording, formatting fixes 2017-12-20 07:01:36 +01:00
lgpl.txt
linux-syn-cookies.txt DOC: add doc/linux-syn-cookies.txt 2015-08-11 12:17:41 +02:00
lua.txt DOC: fix a few typos in the documentation 2018-11-18 22:23:15 +01:00
management.txt MINOR: activity: add configuration and CLI support for "profiling.tasks" 2018-11-22 11:48:51 +01:00
netscaler-client-ip-insertion-protocol.txt MEDIUM: netscaler: add support for standard NetScaler CIP protocol 2017-12-20 07:04:07 +01:00
network-namespaces.txt MAJOR: namespace: add Linux network namespace support 2014-11-21 07:51:57 +01:00
peers-v2.0.txt DOC: fix a few typos in the documentation 2018-11-18 22:23:15 +01:00
peers.txt DOC: fix a few typos in the documentation 2018-11-18 22:23:15 +01:00
proxy-protocol.txt DOC: mention lighttpd 1.4.46 implements PROXY 2017-04-05 08:42:39 +02:00
queuing.fig
regression-testing.txt DOC: fix a few typos in the documentation 2018-11-18 22:23:15 +01:00
SPOE.txt DOC: fix a few typos in the documentation 2018-11-18 22:23:15 +01:00
WURFL-device-detection.txt DOC: move the device detection modules documentation to their own files 2016-11-08 15:06:21 +01:00