haproxy/include/types
Willy Tarreau d7ad9f5b0d MAJOR: channel: add a new flag CF_WAKE_WRITE to notify the task of writes
Since commit 6b66f3e ([MAJOR] implement autonomous inter-socket forwarding)
introduced in 1.3.16-rc1, we've been relying on a stupid mechanism to wake
up the task after a write, which was an exact copy-paste of the reader side.

The principle was that if we empty a buffer and there's no forwarding
scheduled or if the *producer* is not in a connected state, then we wake
the task up.

That does not make any sense. It happens to wake up too late sometimes (eg,
when the request analyser waits for some room in the buffer to start to
work), and leads to unneeded wakeups in client-side keep-alive, because
the task is woken up when the response is sent, while the analysers are
simply waiting for a new request.

In order to fix this, we introduce a new channel flag : CF_WAKE_WRITE. It
is designed so that an analyser can explicitly request being notified when
some data were written. It is used only when the HTTP request or response
analysers need to wait for more room in the buffers. It is automatically
cleared upon wake up.

The flag is also automatically set by the functions which try to write into
a buffer from an applet when they fail (bi_putblk() etc...).

That allows us to remove the stupid condition above and avoid some wakeups.
In http-server-close and in http-keep-alive modes, this reduces from 4 to 3
the average number of wakeups per request, and increases the overall
performance by about 1.5%.
2013-12-31 18:37:36 +01:00
..
acl.h MINOR: pattern: add support for compiling patterns for lookups 2013-12-12 15:44:02 +01:00
arg.h MEDIUM: http: The redirect strings follows the log format rules. 2013-12-02 23:31:33 +01:00
auth.h
backend.h MEDIUM: backend: add support for the wt6 hash 2013-11-14 16:37:50 +01:00
capture.h
channel.h MAJOR: channel: add a new flag CF_WAKE_WRITE to notify the task of writes 2013-12-31 18:37:36 +01:00
checks.h MINOR: checks: add a flag to indicate what check is an agent 2013-12-14 16:02:20 +01:00
compression.h MEDIUM: compression: use pool for comp_ctx 2012-11-21 01:56:47 +01:00
connection.h DIET/MINOR: connection: rearrange a few fields to save 8 bytes in the struct 2013-12-09 16:06:15 +01:00
counters.h MINOR: stats: report the total number of compressed responses per front/back 2012-11-24 14:54:13 +01:00
fd.h MEDIUM: connection: centralize handling of nolinger in fd management 2013-12-16 02:23:52 +01:00
freq_ctr.h
global.h BUG/MEDIUM: unique_id: HTTP request counter must be unique! 2013-08-13 17:52:20 +02:00
hdr_idx.h
lb_chash.h
lb_fas.h
lb_fwlc.h
lb_fwrr.h
lb_map.h
listener.h DIET/MINOR: listener: rearrange a few fields in struct listener to save 16 bytes 2013-12-09 16:06:21 +01:00
log.h BUG/MINOR: log: make log-format, unique-id-format and add-header more independant 2012-12-28 09:51:00 +01:00
map.h MEDIUM: map: merge identical maps 2013-12-06 11:40:53 +01:00
obj_type.h DIET/MINOR: obj: pack the obj_type enum to 8 bits 2013-12-09 16:06:08 +01:00
pattern.h MINOR: pattern: add support for compiling patterns for lookups 2013-12-12 15:44:02 +01:00
peers.h CLEANUP: Remove unused 'last_slowstart_change' field from struct peer 2013-11-19 08:04:59 +01:00
pipe.h
port_range.h
proto_http.h MINOR: http: try to stick to same server after status 401/407 2013-12-23 15:12:44 +01:00
proto_tcp.h MINOR: tcp: add new "close" action for tcp-response 2013-09-11 23:28:51 +02:00
protocol.h MEDIUM: protocol: implement a "drain" function in protocol layers 2013-06-10 20:33:23 +02:00
proxy.h MINOR: http: add option prefer-last-server 2013-12-16 02:23:54 +01:00
queue.h
sample.h MINOR: sample: add a private field to the struct sample_conv 2013-12-02 23:31:33 +01:00
server.h MINOR: checks: use check->state instead of srv->state & SRV_CHECKED 2013-12-14 16:02:19 +01:00
session.h DIET/MINOR: session: reduce the struct session size by 8 bytes 2013-12-09 16:06:21 +01:00
signal.h
ssl_sock.h MEDIUM: ssl: improve crt-list format to support negation 2013-05-07 22:11:54 +02:00
stick_table.h MEDIUM: stick-tables: flush old entries upon soft-stop 2013-09-04 17:54:01 +02:00
stream_interface.h MEDIUM: map: dynamic manipulation of maps 2013-12-12 15:58:30 +01:00
task.h DIET/MINOR: task: reduce struct task size by 8 bytes 2013-12-09 16:06:22 +01:00
template.h