From 3e92a31783b545dd58c4be6c588808763e0042bc Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Fri, 18 Jun 2021 18:58:07 +0200 Subject: [PATCH] MINOR: queue: update proxy->served once out of the loop It's not needed during all these operations and doesn't even affect queueing in the LB algo, so we can safely update it out of the loop and the lock. --- src/queue.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/queue.c b/src/queue.c index fe082def4..87ffca58d 100644 --- a/src/queue.c +++ b/src/queue.c @@ -351,10 +351,9 @@ void process_srv_queue(struct server *s, int server_locked) if (!pc) break; - done = 1; + done++; _HA_ATOMIC_INC(&s->served); - _HA_ATOMIC_INC(&p->served); stream_add_srv_conn(pc->strm, s); task_wakeup(pc->strm->task, TASK_WOKEN_RES); @@ -363,6 +362,8 @@ void process_srv_queue(struct server *s, int server_locked) if (!server_locked) HA_SPIN_UNLOCK(SERVER_LOCK, &s->lock); + _HA_ATOMIC_ADD(&p->served, done); + if (done && p->lbprm.server_take_conn) p->lbprm.server_take_conn(s, server_locked); }