kore

Kore is a web application platform for writing scalable, concurrent web based processes in C or Python.
Commits | Files | Refs | README | LICENSE | git clone https://git.kore.io/kore.git

commit 71c145932c8d546533a44f35268a4f5949f36905
parent ae2ea0be72f14e69c500589251161a3566c780e1
Author: Joris Vink <joris@coders.se>
Date:   Tue, 30 Oct 2018 10:36:18 +0100

grow kore_pools at a slower rate.

Before we just doubled in size the second we exhausted a pool instead
of doing a more controlled expansion.

Now we will expand at 25% of the initial elm count whenever we need to.

Will help with memory pressure in certain scenarios.

Diffstat:
include/kore/kore.h | 1+
src/pool.c | 3++-
2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/include/kore/kore.h b/include/kore/kore.h @@ -441,6 +441,7 @@ struct kore_pool { size_t slen; size_t elms; size_t inuse; + size_t growth; volatile int lock; char *name; diff --git a/src/pool.c b/src/pool.c @@ -45,6 +45,7 @@ kore_pool_init(struct kore_pool *pool, const char *name, pool->elms = 0; pool->inuse = 0; pool->elen = len; + pool->growth = elm * 0.25f; pool->slen = pool->elen + sizeof(struct kore_pool_entry); LIST_INIT(&(pool->regions)); @@ -79,7 +80,7 @@ kore_pool_get(struct kore_pool *pool) #endif if (LIST_EMPTY(&(pool->freelist))) - pool_region_create(pool, pool->elms); + pool_region_create(pool, pool->growth); entry = LIST_FIRST(&(pool->freelist)); if (entry->state != POOL_ELEMENT_FREE)