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.
(cherry picked from commit
1691ba3693d4b11cc85aed606d39ffbd23d8533f)
Signed-off-by: Willy Tarreau <w@1wt.eu>
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;