OPTIM: stick-tables: exit expiry faster when the update lock is held

It helps keep the contention level low: when we hold the update lock
that we know other parts may be relying on (peers, track-sc etc),
we decrease the remaining visit counters 4 times as fast to further
reduce the contention. At this point no more warnings are seen during
intense synchronization (2x64 cores, 1.5M req/s with a track-sc each,
5M entries in use).
This commit is contained in:
Willy Tarreau 2025-09-03 11:54:15 +02:00
parent 696793205b
commit 46463d6850

View File

@ -936,7 +936,8 @@ struct task *process_table_expire(struct task *task, void *context, unsigned int
goto out_unlock;
}
to_visit--;
/* Let's quit earlier if we currently hold the update lock */
to_visit -= 1 + 3 * updt_locked;
/* timer looks expired, detach it from the queue */
ts = eb32_entry(eb, struct stksess, exp);