From: Olivier Houchard Date: Wed, 1 Apr 2026 13:08:26 +0000 (+0200) Subject: MINOR: servers: Don't update last_sess if it did not change X-Git-Tag: v3.4-dev8~69 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e264523112b94ceacf34428d1bdd4e8eea4a813d;p=thirdparty%2Fhaproxy.git 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. --- 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% */