From e264523112b94ceacf34428d1bdd4e8eea4a813d Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Wed, 1 Apr 2026 15:08:26 +0200 Subject: [PATCH] MINOR: servers: Don't update last_sess if it did not change Check that last_sess actually changed before attempting to set it, as it should only change once every second, that will avoid a lot of atomic writes on a busy cache line. --- include/haproxy/server.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/include/haproxy/server.h b/include/haproxy/server.h index 6294bf246..6bdd823f2 100644 --- a/include/haproxy/server.h +++ b/include/haproxy/server.h @@ -220,8 +220,12 @@ static inline void srv_inc_sess_ctr(struct server *s) /* set the time of last session on the designated server */ static inline void srv_set_sess_last(struct server *s) { - if (s->counters.shared.tg) - HA_ATOMIC_STORE(&s->counters.shared.tg[tgid - 1]->last_sess, ns_to_sec(now_ns)); + if (s->counters.shared.tg) { + uint now_sec = ns_to_sec(now_ms); + + if (HA_ATOMIC_LOAD(&s->counters.shared.tg[tgid - 1]->last_sess) != now_sec) + HA_ATOMIC_STORE(&s->counters.shared.tg[tgid - 1]->last_sess, now_sec); + } } /* returns the current server throttle rate between 0 and 100% */