MEDIUM: stick-tables: Limit the number of old entries we remove

Limit the number of old entries we remove in one call of
stktable_trash_oldest(), as we do so while holding the heavily contended
update write lock, so we'd rather not hold it for too long.
This helps getting stick tables perform better under heavy load.
This commit is contained in:
Olivier Houchard 2025-05-02 12:05:37 +00:00 committed by Willy Tarreau
parent 388539faa3
commit d2d4c3eb65

View File

@ -288,8 +288,8 @@ int stktable_trash_oldest(struct stktable *t, int to_batch)
{
struct stksess *ts;
struct eb32_node *eb;
int max_search = to_batch * 2; // no more than 50% misses
int max_per_shard = (to_batch + CONFIG_HAP_TBL_BUCKETS - 1) / CONFIG_HAP_TBL_BUCKETS;
int max_search; // no more than 50% misses
int max_per_shard;
int done_per_shard;
int batched = 0;
int updt_locked;
@ -298,6 +298,12 @@ int stktable_trash_oldest(struct stktable *t, int to_batch)
shard = 0;
if (to_batch > STKTABLE_MAX_UPDATES_AT_ONCE)
to_batch = STKTABLE_MAX_UPDATES_AT_ONCE;
max_search = to_batch * 2; // no more than 50% misses
max_per_shard = (to_batch + CONFIG_HAP_TBL_BUCKETS - 1) / CONFIG_HAP_TBL_BUCKETS;
while (batched < to_batch) {
done_per_shard = 0;
looped = 0;