haproxy/src
Willy Tarreau 4726f53794 [OPTIM] task: don't unlink a task from a wait queue when waking it up
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.
2009-03-08 07:59:18 +01:00
..
acl.c [MEDIUM] acl: when possible, report the name and requirements of ACLs in warnings 2008-08-03 09:41:05 +02:00
appsession.c [MEDIUM] memory: update pool_free2() to support NULL pointers 2008-08-03 20:48:50 +02:00
backend.c [BUG] interface binding: length must include the trailing zero 2009-03-06 00:48:23 +01:00
base64.c [BUILD] change declaration of base64tab to fix build with Intel C++ 2008-06-29 17:17:38 +02:00
buffers.c [OPTIM] buffer: replace rlim by max_len 2009-01-09 11:14:39 +01:00
cfgparse.c [BUG] rate-limit in defaults section was ignored 2009-03-07 11:53:44 +01:00
checks.c [BUG] interface binding: length must include the trailing zero 2009-03-06 00:48:23 +01:00
client.c [BUG] disable any analysers for monitoring requests 2009-03-06 19:16:39 +01:00
cttproxy.c [CLEANUP] remove many #include <types/xxx> from C files 2008-07-16 10:30:42 +02:00
dumpstats.c [OPTIM] task: don't unlink a task from a wait queue when waking it up 2009-03-08 07:59:18 +01:00
eb32tree.c [MINOR] merge ebtree version 3.0 2007-11-28 14:20:44 +01:00
eb64tree.c [MINOR] merge ebtree version 3.0 2007-11-28 14:20:44 +01:00
ebpttree.c [MINOR] merge ebtree version 3.0 2007-11-28 14:20:44 +01:00
ebtree.c [MINOR] merge ebtree version 3.0 2007-11-28 14:20:44 +01:00
ev_epoll.c [CLEANUP] remove 65 useless NULL checks before free 2008-08-03 20:48:50 +02:00
ev_kqueue.c [CLEANUP] remove 65 useless NULL checks before free 2008-08-03 20:48:50 +02:00
ev_poll.c [CLEANUP] remove 65 useless NULL checks before free 2008-08-03 20:48:50 +02:00
ev_select.c [CLEANUP] remove 65 useless NULL checks before free 2008-08-03 20:48:50 +02:00
ev_sepoll.c [OPTIM] ev_sepoll: detect newly created FDs and check them once 2008-11-02 10:19:07 +01:00
fd.c [MEDIUM] move global tuning options to the global structure 2009-01-25 15:42:27 +01:00
freq_ctr.c [OPTIM] freq_ctr: do not rotate the counters when reading 2009-03-06 14:29:25 +01:00
haproxy.c [BUG] global.tune.maxaccept must be limited even in mono-process mode 2009-03-01 08:35:41 +01:00
hdr_idx.c [CLEANUP] remove many #include <types/xxx> from C files 2008-07-16 10:30:42 +02:00
log.c [CLEANUP] remove many #include <types/xxx> from C files 2008-07-16 10:30:42 +02:00
memory.c [MEDIUM] Fix memory freeing at exit 2008-05-30 07:07:19 +02:00
pipe.c [MEDIUM] introduce pipe pools 2009-01-25 13:49:53 +01:00
proto_http.c [CLEANUP] remove last references to term_trace 2009-03-06 13:07:40 +01:00
proto_tcp.c [BUG] interface binding: length must include the trailing zero 2009-03-06 00:48:23 +01:00
proto_uxst.c [MEDIUM] implement error dump on unix socket with "show errors" 2009-03-04 15:53:18 +01:00
protocols.c [CLEANUP] remove many #include <types/xxx> from C files 2008-07-16 10:30:42 +02:00
proxy.c [OPTIM] rate-limit: cleaner behaviour on low rates and reduce consumption 2009-03-06 09:18:27 +01:00
queue.c [BUG] do not dequeue the backend's pending connections on a dead server 2008-12-07 23:51:12 +01:00
rbtree.c [MINOR] imported the rbtree function from Linux kernel 2007-01-07 02:12:57 +01:00
regex.c [CLEANUP] shut warnings 'is*' macros from ctype.h on solaris 2007-06-17 21:51:38 +02:00
server.c [CLEANUP] remove many #include <types/xxx> from C files 2008-07-16 10:30:42 +02:00
session.c [CLEANUP] remove last references to term_trace 2009-03-06 13:07:40 +01:00
sessionhash.c [PATCH] appsessions: cleanup DEBUG_HASH and initialize request_counter 2008-08-13 23:43:26 +02:00
standard.c [MINOR] Allow to specify a domain for a cookie 2008-05-25 10:09:02 +02:00
stream_interface.c [MINOR] replace client_retnclose() with stream_int_retnclose() 2008-11-30 19:48:07 +01:00
stream_sock.c [BUILD] Haproxy won't compile if DEBUG_FULL is defined 2009-02-04 22:46:19 +01:00
task.c [OPTIM] task: don't unlink a task from a wait queue when waking it up 2009-03-08 07:59:18 +01:00
time.c [MINOR] add curr_sec_ms and curr_sec_ms_scaled for current second. 2009-03-05 16:56:16 +01:00
uri_auth.c [CLEANUP] remove 65 useless NULL checks before free 2008-08-03 20:48:50 +02:00