]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: task: give the scheduler a bit more flexibility in the runqueue size
authorWilly Tarreau <w@1wt.eu>
Wed, 10 Mar 2021 08:26:24 +0000 (09:26 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 10 Mar 2021 10:15:34 +0000 (11:15 +0100)
Instead of setting a hard-limit on runqueue-depth and keeping it short
to maintain fairness, let's allow the scheduler to automatically cut
the existing one in two equal halves if its size is between the configured
size and its double. This will allow to increase the default value while
keeping a low latency.

src/task.c

index 8069dda1816ed8ad458603c49dc48c1f7df00bb0..be3262af35dbae35d4af0bcbe1f9c99866ef658f 100644 (file)
@@ -648,6 +648,13 @@ void process_runnable_tasks()
        if (likely(niced_tasks))
                max_processed = (max_processed + 3) / 4;
 
+       if (max_processed < sched->rq_total && sched->rq_total <= 2*max_processed) {
+               /* If the run queue exceeds the budget by up to 50%, let's cut it
+                * into two identical halves to improve latency.
+                */
+               max_processed = sched->rq_total / 2;
+       }
+
  not_done_yet:
        max[TL_URGENT] = max[TL_NORMAL] = max[TL_BULK] = 0;