From b0031d9679d244d4c9057e6a7a7b0b2142147806 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Thu, 31 Aug 2023 17:51:00 +0200 Subject: [PATCH] MINOR: checks: also consider the thread's queue for rebalancing Let's also check for other threads when the current one is queueing, let's not wait for the load to be high. Now this totally eliminates differences between threads. --- src/check.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/check.c b/src/check.c index de8ffc376..86af00874 100644 --- a/src/check.c +++ b/src/check.c @@ -1205,7 +1205,8 @@ struct task *process_chk_conn(struct task *t, void *context, unsigned int state) * other thread. */ while (attempts-- > 0 && - my_load >= 3 && _HA_ATOMIC_LOAD(&th_ctx->active_checks) >= 3) { + (!LIST_ISEMPTY(&th_ctx->queued_checks) || my_load >= 3) && + _HA_ATOMIC_LOAD(&th_ctx->active_checks) >= 3) { uint new_tid = statistical_prng_range(global.nbthread); if (new_tid == tid)