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.
This commit is contained in:
Olivier Houchard 2026-04-01 15:08:26 +02:00 committed by Olivier Houchard
parent eaf42ee886
commit e264523112

View File

@ -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% */