mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-16 00:14:31 +00:00
4726f53794
In many situations, we wake a task on an I/O event, then queue it exactly where it was. This is a real waste because we delete/insert tasks into the wait queue for nothing. The only reason for this is that there was only one tree node in the task struct. By adding another tree node, we can have one tree for the timers (wait queue) and one tree for the priority (run queue). That way, we can have a task both in the run queue and wait queue at the same time. The wait queue now really holds timers, which is what it was designed for. The net gain is at least 1 delete/insert cycle per session, and up to 2-3 depending on the workload, since we save one cycle each time the expiration date is not changed during a wake up. |
||
---|---|---|
.. | ||
acl.h | ||
backend.h | ||
buffers.h | ||
capture.h | ||
fd.h | ||
freq_ctr.h | ||
global.h | ||
hdr_idx.h | ||
httperr.h | ||
log.h | ||
pipe.h | ||
proto_http.h | ||
proto_tcp.h | ||
protocols.h | ||
proxy.h | ||
queue.h | ||
server.h | ||
session.h | ||
stream_interface.h | ||
task.h | ||
template.h |