
phk at varnish-cache
Feb 8, 2012, 2:05 PM
Post #1 of 1
(27 views)
Permalink
|
|
[master] 2362e93 Add a call-back function to memory pools, which can be used to update the desired size of objects from the guard thread.
|
|
commit 2362e936e03bf3ee2093efe3aa663c9c998b272b Author: Poul-Henning Kamp <phk [at] FreeBSD> Date: Wed Feb 8 22:03:39 2012 +0000 Add a call-back function to memory pools, which can be used to update the desired size of objects from the guard thread. diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h index f7bef9d..6338750 100644 --- a/bin/varnishd/cache/cache.h +++ b/bin/varnishd/cache/cache.h @@ -884,9 +884,10 @@ int Lck_CondWait(pthread_cond_t *cond, struct lock *lck, struct timespec *ts); #undef LOCK /* cache_mempool.c */ +typedef void mpl_poll_f(volatile unsigned *); void MPL_AssertSane(void *item); struct mempool * MPL_New(const char *name, volatile struct poolparam *pp, - volatile unsigned *cur_size); + volatile unsigned *cur_size, mpl_poll_f *poll_f); void MPL_Destroy(struct mempool **mpp); void *MPL_Get(struct mempool *mpl, unsigned *size); void MPL_Free(struct mempool *mpl, void *item); diff --git a/bin/varnishd/cache/cache_backend.c b/bin/varnishd/cache/cache_backend.c index b683300..2610b06 100644 --- a/bin/varnishd/cache/cache_backend.c +++ b/bin/varnishd/cache/cache_backend.c @@ -519,6 +519,6 @@ void VDI_Init(void) { - vbcpool = MPL_New("vbc", &cache_param->vbc_pool, &vbcps); + vbcpool = MPL_New("vbc", &cache_param->vbc_pool, &vbcps, NULL); AN(vbcpool); } diff --git a/bin/varnishd/cache/cache_mempool.c b/bin/varnishd/cache/cache_mempool.c index 468d5a8..ec0d36b 100644 --- a/bin/varnishd/cache/cache_mempool.c +++ b/bin/varnishd/cache/cache_mempool.c @@ -57,6 +57,7 @@ struct mempool { struct lock mtx; volatile struct poolparam *param; volatile unsigned *cur_size; + mpl_poll_f *poll_func; uint64_t live; struct VSC_C_mempool *vsc; unsigned n_pool; @@ -104,6 +105,8 @@ mpl_guard(void *priv) mpl_slp = 0.15; // random while (1) { VTIM_sleep(mpl_slp); + if (mpl->poll_func != NULL) + mpl->poll_func(mpl->cur_size); mpl_slp = 0.814; // random mpl->t_now = VTIM_real(); @@ -224,7 +227,7 @@ mpl_guard(void *priv) struct mempool * MPL_New(const char *name, volatile struct poolparam *pp, - volatile unsigned *cur_size) + volatile unsigned *cur_size, mpl_poll_f *poll_f) { struct mempool *mpl; @@ -233,6 +236,7 @@ MPL_New(const char *name, bprintf(mpl->name, "%s", name); mpl->param = pp; mpl->cur_size = cur_size; + mpl->poll_func = poll_f; VTAILQ_INIT(&mpl->list); VTAILQ_INIT(&mpl->surplus); Lck_New(&mpl->mtx, lck_mempool); diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c index 3e144c1..2e080f1 100644 --- a/bin/varnishd/cache/cache_session.c +++ b/bin/varnishd/cache/cache_session.c @@ -383,9 +383,9 @@ SES_NewPool(struct pool *wp, unsigned pool_no) pp->pool = wp; bprintf(nb, "req%u", pool_no); pp->mpl_req = MPL_New(nb, &cache_param->req_pool, - &cache_param->workspace_client); + &cache_param->workspace_client, NULL); bprintf(nb, "sess%u", pool_no); - pp->mpl_sess = MPL_New(nb, &cache_param->sess_pool, &ses_size); + pp->mpl_sess = MPL_New(nb, &cache_param->sess_pool, &ses_size, NULL); return (pp); } _______________________________________________ varnish-commit mailing list varnish-commit [at] varnish-cache https://www.varnish-cache.org/lists/mailman/listinfo/varnish-commit
|