MINOR: pools: make the basic pool_refill_alloc()/pool_free() update needed_avg

This is a first step towards unifying all the fallback code. Right now
these two functions are the only ones which do not update the needed_avg
rate counter since there's currently no shared pool kept when using them.
But their code is similar to what could be used everywhere except for
this one, so let's make them capable of maintaining usage statistics.

As a side effect the needed field in "show pools" will now be populated.
This commit is contained in:
Willy Tarreau 2021-04-15 17:23:15 +02:00
parent 53a7fe49aa
commit 64383b8181
2 changed files with 3 additions and 0 deletions

View File

@ -141,6 +141,7 @@ static inline void __pool_free(struct pool_head *pool, void *ptr)
{
_HA_ATOMIC_DEC(&pool->used);
_HA_ATOMIC_DEC(&pool->allocated);
swrate_add(&pool->needed_avg, POOL_AVG_SAMPLES, pool->used);
pool_free_area(ptr, pool->size + POOL_EXTRA);
}

View File

@ -165,6 +165,8 @@ void *__pool_refill_alloc(struct pool_head *pool, unsigned int avail)
return NULL;
}
swrate_add_scaled(&pool->needed_avg, POOL_AVG_SAMPLES, pool->allocated, POOL_AVG_SAMPLES/4);
ptr = pool_alloc_area(pool->size + POOL_EXTRA);
if (!ptr) {
_HA_ATOMIC_INC(&pool->failed);