[master] 1cdbbff NB: Major Reorg Commit
Poul-Henning Kamp
phk at varnish-cache.org
Thu Feb 9 00:43:35 CET 2012
commit 1cdbbff4dc0c1886e1a3535ea7580f43ea52008d
Author: Poul-Henning Kamp <phk at FreeBSD.org>
Date: Wed Feb 8 23:34:52 2012 +0000
NB: Major Reorg Commit
Introduce a new "backend workspace" which is used for the backend
transactions (bereq.*, beresp.*)
Together with the "client workspace" which holds the client transaction
(req.*, resp.*) this should make memory management much simpler to
understand.
The backend workspace lives in "busyobj" rather than the worker thread,
which therefore needs a lot less stack, allowing many more threads
in the same space.
Experiments with thread_pool_stack are encouraged, I wouldn't be
surprised if 32k is now enough.
The per-thread workspace is still around, known as the "auxiallary
workspace", but it is down to 256 bytes and it is only used to hand
the acceptor information off to worker threads.
Once the dust settles, I may remove it entirely, but I can see a
value of having a small amount of fast memory in a thread, so I may
also keep it. No promises.
Ohh, and I removed a couple of small memory leaks which were only
present in -trunk, as a result of a git-mis-merge.
diff --git a/bin/varnishd/cache/cache.h b/bin/varnishd/cache/cache.h
index 6338750..8df9591 100644
--- a/bin/varnishd/cache/cache.h
+++ b/bin/varnishd/cache/cache.h
@@ -327,7 +327,11 @@ struct worker {
uint32_t *wlb, *wlp, *wle;
unsigned wlr;
- struct ws ws[1];
+ /*
+ * In practice this workspace is only used for wrk_accept now
+ * but it might come handy later, so keep it around. For now.
+ */
+ struct ws aws[1];
struct busyobj *busyobj;
@@ -502,6 +506,7 @@ struct busyobj {
unsigned fetch_failed;
struct vgz *vgz_rx;
+ struct ws ws[1];
struct vbc *vbc;
struct http *bereq;
struct http *beresp;
diff --git a/bin/varnishd/cache/cache_acceptor.c b/bin/varnishd/cache/cache_acceptor.c
index 434b50c..9384d1c 100644
--- a/bin/varnishd/cache/cache_acceptor.c
+++ b/bin/varnishd/cache/cache_acceptor.c
@@ -228,7 +228,7 @@ VCA_FailSess(struct worker *wrk)
struct wrk_accept *wa;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
- CAST_OBJ_NOTNULL(wa, (void*)wrk->ws->f, WRK_ACCEPT_MAGIC);
+ CAST_OBJ_NOTNULL(wa, (void*)wrk->aws->f, WRK_ACCEPT_MAGIC);
AZ(wrk->sp);
AZ(close(wa->acceptsock));
wrk->stats.sess_drop++;
@@ -246,7 +246,7 @@ VCA_SetupSess(struct worker *wrk)
struct wrk_accept *wa;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
- CAST_OBJ_NOTNULL(wa, (void*)wrk->ws->f, WRK_ACCEPT_MAGIC);
+ CAST_OBJ_NOTNULL(wa, (void*)wrk->aws->f, WRK_ACCEPT_MAGIC);
sp = wrk->sp;
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
sp->fd = wa->acceptsock;
diff --git a/bin/varnishd/cache/cache_busyobj.c b/bin/varnishd/cache/cache_busyobj.c
index 51207df..65791e8 100644
--- a/bin/varnishd/cache/cache_busyobj.c
+++ b/bin/varnishd/cache/cache_busyobj.c
@@ -47,7 +47,7 @@ struct vbo {
#define VBO_MAGIC 0xde3d8223
struct lock mtx;
unsigned refcount;
- uint16_t nhttp;
+ char *end;
struct busyobj bo;
};
@@ -67,7 +67,9 @@ vbo_size_calc(volatile unsigned *u)
http_space = HTTP_estimate(nhttp);
- *u = sizeof(struct vbo) + http_space * 2L;
+ *u = sizeof(struct vbo) +
+ http_space * 2L +
+ cache_param->workspace_backend;
}
/*--------------------------------------------------------------------
@@ -91,23 +93,12 @@ static struct vbo *
vbo_New(void)
{
struct vbo *vbo;
- uint16_t nhttp;
- ssize_t http_space;
unsigned sz;
vbo = MPL_Get(vbopool, &sz);
- nhttp = (uint16_t)cache_param->http_max_hdr;
- http_space = HTTP_estimate(nhttp);
- if (sizeof *vbo + 2 * http_space > sz) {
- /* Could be transient, try again */
- MPL_Free(vbopool, vbo);
- vbo_size_calc(&vbosize);
- vbo = MPL_Get(vbopool, &sz);
- assert (sizeof *vbo + 2 * http_space <= sz);
- }
AN(vbo);
vbo->magic = VBO_MAGIC;
- vbo->nhttp = nhttp;
+ vbo->end = (char *)vbo + sz;
Lck_New(&vbo->mtx, lck_busyobj);
return (vbo);
}
@@ -130,10 +121,15 @@ struct busyobj *
VBO_GetBusyObj(struct worker *wrk)
{
struct vbo *vbo = NULL;
+ uint16_t nhttp;
+ unsigned httpsz;
char *p;
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
+ nhttp = (uint16_t)cache_param->http_max_hdr;
+ httpsz = HTTP_estimate(nhttp);
+
if (wrk->nvbo != NULL) {
vbo = wrk->nvbo;
wrk->nvbo = NULL;
@@ -151,9 +147,11 @@ VBO_GetBusyObj(struct worker *wrk)
vbo->bo.vbo = vbo;
p = (void*)(vbo + 1);
- vbo->bo.bereq = HTTP_create(p, vbo->nhttp);
- p += HTTP_estimate(vbo->nhttp);
- vbo->bo.beresp = HTTP_create(p, vbo->nhttp);
+ vbo->bo.bereq = HTTP_create(p, nhttp);
+ p += httpsz;
+ vbo->bo.beresp = HTTP_create(p, nhttp);
+ p += httpsz;
+ WS_Init(vbo->bo.ws, "bo", p, vbo->end - p);
return (&vbo->bo);
}
@@ -197,7 +195,7 @@ VBO_DerefBusyObj(struct worker *wrk, struct busyobj **pbo)
if (cache_param->bo_cache && wrk->nvbo == NULL)
wrk->nvbo = vbo;
- else
+ else
VBO_Free(&vbo);
}
}
diff --git a/bin/varnishd/cache/cache_center.c b/bin/varnishd/cache/cache_center.c
index a8148b5..6692491 100644
--- a/bin/varnishd/cache/cache_center.c
+++ b/bin/varnishd/cache/cache_center.c
@@ -435,9 +435,9 @@ cnt_done(struct sess *sp, struct worker *wrk, struct req *req)
if (wrk->stats.client_req >= cache_param->wthread_stats_rate)
WRK_SumStat(wrk);
- /* Reset the workspace to the session-watermark */
+
WS_Reset(req->ws, NULL);
- WS_Reset(wrk->ws, NULL);
+ WS_Reset(wrk->aws, NULL);
sp->t_req = sp->t_idle;
i = HTC_Reinit(req->htc);
@@ -569,7 +569,7 @@ cnt_fetch(struct sess *sp, struct worker *wrk, struct req *req)
AZ(wrk->busyobj->should_close);
AZ(req->storage_hint);
- http_Setup(wrk->busyobj->beresp, wrk->ws);
+ http_Setup(wrk->busyobj->beresp, wrk->busyobj->ws);
need_host_hdr = !http_GetHdr(wrk->busyobj->bereq, H_Host, NULL);
@@ -1230,9 +1230,8 @@ cnt_miss(struct sess *sp, struct worker *wrk, struct req *req)
CHECK_OBJ_NOTNULL(wrk->busyobj, BUSYOBJ_MAGIC);
AZ(req->obj);
- WS_Reset(wrk->ws, NULL);
wrk->busyobj = VBO_GetBusyObj(wrk);
- http_Setup(wrk->busyobj->bereq, wrk->ws);
+ http_Setup(wrk->busyobj->bereq, wrk->busyobj->ws);
http_FilterReq(sp, HTTPH_R_FETCH);
http_ForceGet(wrk->busyobj->bereq);
if (cache_param->http_gzip_support) {
@@ -1306,9 +1305,7 @@ cnt_pass(struct sess *sp, struct worker *wrk, const struct req *req)
AZ(wrk->busyobj);
wrk->busyobj = VBO_GetBusyObj(wrk);
- WS_Reset(wrk->ws, NULL);
- wrk->busyobj = VBO_GetBusyObj(wrk);
- http_Setup(wrk->busyobj->bereq, wrk->ws);
+ http_Setup(wrk->busyobj->bereq, wrk->busyobj->ws);
http_FilterReq(sp, HTTPH_R_PASS);
VCL_pass_method(sp);
@@ -1362,9 +1359,7 @@ cnt_pipe(struct sess *sp, struct worker *wrk, const struct req *req)
wrk->acct_tmp.pipe++;
wrk->busyobj = VBO_GetBusyObj(wrk);
- WS_Reset(wrk->ws, NULL);
- wrk->busyobj = VBO_GetBusyObj(wrk);
- http_Setup(wrk->busyobj->bereq, wrk->ws);
+ http_Setup(wrk->busyobj->bereq, wrk->busyobj->ws);
http_FilterReq(sp, 0);
VCL_pipe_method(sp);
@@ -1674,7 +1669,7 @@ CNT_Session(struct sess *sp)
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_ORNULL(wrk->nobjhead, OBJHEAD_MAGIC);
- WS_Assert(wrk->ws);
+ WS_Assert(wrk->aws);
switch (sp->step) {
#define STEP(l,u,arg) \
@@ -1688,7 +1683,7 @@ CNT_Session(struct sess *sp)
default:
WRONG("State engine misfire");
}
- WS_Assert(wrk->ws);
+ WS_Assert(wrk->aws);
CHECK_OBJ_ORNULL(wrk->nobjhead, OBJHEAD_MAGIC);
}
WSL_Flush(wrk, 0);
diff --git a/bin/varnishd/cache/cache_cli.c b/bin/varnishd/cache/cache_cli.c
index de8265d..dd76c91 100644
--- a/bin/varnishd/cache/cache_cli.c
+++ b/bin/varnishd/cache/cache_cli.c
@@ -129,6 +129,7 @@ cli_debug_sizeof(struct cli *cli, const char * const *av, void *priv)
SZOF(struct worker);
SZOF(struct wrk_accept);
SZOF(struct storage);
+ SZOF(struct busyobj);
SZOF(struct object);
SZOF(struct objcore);
SZOF(struct objhead);
diff --git a/bin/varnishd/cache/cache_esi_deliver.c b/bin/varnishd/cache/cache_esi_deliver.c
index a9bc694..9747919 100644
--- a/bin/varnishd/cache/cache_esi_deliver.c
+++ b/bin/varnishd/cache/cache_esi_deliver.c
@@ -67,7 +67,7 @@ ved_include(struct sess *sp, const char *src, const char *host)
/* Take a workspace snapshot */
sp_ws_wm = WS_Snapshot(sp->req->ws);
- wrk_ws_wm = WS_Snapshot(w->ws);
+ wrk_ws_wm = WS_Snapshot(w->aws); /* XXX ? */
http_SetH(sp->req->http, HTTP_HDR_URL, src);
if (host != NULL && *host != '\0') {
@@ -111,7 +111,7 @@ ved_include(struct sess *sp, const char *src, const char *host)
/* Reset the workspace */
WS_Reset(sp->req->ws, sp_ws_wm);
- WS_Reset(w->ws, wrk_ws_wm);
+ WS_Reset(w->aws, wrk_ws_wm); /* XXX ? */
WRW_Reserve(sp->wrk, &sp->fd);
if (sp->wrk->res_mode & RES_CHUNKED)
@@ -476,7 +476,7 @@ ESI_DeliverChild(const struct sess *sp)
* padding it, as necessary, to a byte boundary.
*/
- dbits = (void*)WS_Alloc(sp->wrk->ws, 8);
+ dbits = (void*)WS_Alloc(sp->req->ws, 8);
AN(dbits);
obj = sp->req->obj;
CHECK_OBJ_NOTNULL(obj, OBJECT_MAGIC);
diff --git a/bin/varnishd/cache/cache_esi_parse.c b/bin/varnishd/cache/cache_esi_parse.c
index 8352717..1d705b1 100644
--- a/bin/varnishd/cache/cache_esi_parse.c
+++ b/bin/varnishd/cache/cache_esi_parse.c
@@ -1004,7 +1004,7 @@ VEP_Init(struct worker *wrk, vep_callback_t *cb)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CHECK_OBJ_NOTNULL(wrk->busyobj, BUSYOBJ_MAGIC);
AZ(wrk->busyobj->vep);
- vep = (void*)WS_Alloc(wrk->ws, sizeof *vep);
+ vep = (void*)WS_Alloc(wrk->busyobj->ws, sizeof *vep);
AN(vep);
memset(vep, 0, sizeof *vep);
diff --git a/bin/varnishd/cache/cache_fetch.c b/bin/varnishd/cache/cache_fetch.c
index abef6b1..c4c0718 100644
--- a/bin/varnishd/cache/cache_fetch.c
+++ b/bin/varnishd/cache/cache_fetch.c
@@ -446,7 +446,7 @@ FetchHdr(struct sess *sp, int need_host_hdr, int sendbody)
/* Receive response */
- HTC_Init(htc, wrk->ws, vc->fd, vc->vsl_id,
+ HTC_Init(htc, wrk->busyobj->ws, vc->fd, vc->vsl_id,
cache_param->http_resp_size,
cache_param->http_resp_hdr_len);
diff --git a/bin/varnishd/cache/cache_hash.c b/bin/varnishd/cache/cache_hash.c
index d967291..c8cb6cc 100644
--- a/bin/varnishd/cache/cache_hash.c
+++ b/bin/varnishd/cache/cache_hash.c
@@ -521,8 +521,8 @@ HSH_Purge(const struct sess *sp, struct objhead *oh, double ttl, double grace)
struct object *o;
CHECK_OBJ_NOTNULL(oh, OBJHEAD_MAGIC);
- spc = WS_Reserve(sp->wrk->ws, 0);
- ocp = (void*)sp->wrk->ws->f;
+ spc = WS_Reserve(sp->req->ws, 0);
+ ocp = (void*)sp->req->ws->f;
Lck_Lock(&oh->mtx);
assert(oh->refcnt > 0);
nobj = 0;
@@ -565,7 +565,7 @@ HSH_Purge(const struct sess *sp, struct objhead *oh, double ttl, double grace)
EXP_Rearm(o);
(void)HSH_Deref(sp->wrk, NULL, &o);
}
- WS_Release(sp->wrk->ws, 0);
+ WS_Release(sp->req->ws, 0);
}
diff --git a/bin/varnishd/cache/cache_panic.c b/bin/varnishd/cache/cache_panic.c
index b09bcb8..5a2a805 100644
--- a/bin/varnishd/cache/cache_panic.c
+++ b/bin/varnishd/cache/cache_panic.c
@@ -196,7 +196,7 @@ pan_wrk(const struct worker *wrk)
{
VSB_printf(pan_vsp, " worker = %p {\n", wrk);
- pan_ws(wrk->ws, 4);
+ pan_ws(wrk->aws, 4);
if (wrk->busyobj != NULL && wrk->busyobj->bereq->ws != NULL)
pan_http("bereq", wrk->busyobj->bereq, 4);
if (wrk->busyobj != NULL && wrk->busyobj->beresp->ws != NULL)
@@ -209,6 +209,7 @@ pan_busyobj(const struct busyobj *bo)
{
VSB_printf(pan_vsp, " busyobj = %p {\n", bo);
+ pan_ws(bo->ws, 4);
if (bo->is_gzip) VSB_printf(pan_vsp, " is_gzip\n");
if (bo->is_gunzip) VSB_printf(pan_vsp, " is_gunzip\n");
if (bo->do_gzip) VSB_printf(pan_vsp, " do_gzip\n");
diff --git a/bin/varnishd/cache/cache_pool.c b/bin/varnishd/cache/cache_pool.c
index dab5b11..be4af0a 100644
--- a/bin/varnishd/cache/cache_pool.c
+++ b/bin/varnishd/cache/cache_pool.c
@@ -162,8 +162,8 @@ pool_accept(struct worker *wrk, void *arg)
CAST_OBJ_NOTNULL(ps, arg, POOLSOCK_MAGIC);
CHECK_OBJ_NOTNULL(ps->lsock, LISTEN_SOCK_MAGIC);
- assert(sizeof *wa == WS_Reserve(wrk->ws, sizeof *wa));
- wa = (void*)wrk->ws->f;
+ assert(sizeof *wa == WS_Reserve(wrk->aws, sizeof *wa));
+ wa = (void*)wrk->aws->f;
while (1) {
memset(wa, 0, sizeof *wa);
wa->magic = WRK_ACCEPT_MAGIC;
@@ -171,7 +171,7 @@ pool_accept(struct worker *wrk, void *arg)
if (ps->lsock->sock < 0) {
/* Socket Shutdown */
FREE_OBJ(ps);
- WS_Release(wrk->ws, 0);
+ WS_Release(wrk->aws, 0);
return;
}
if (VCA_Accept(ps->lsock, wa) < 0) {
@@ -192,8 +192,8 @@ pool_accept(struct worker *wrk, void *arg)
}
VTAILQ_REMOVE(&pp->idle_queue, &wrk2->task, list);
Lck_Unlock(&pp->mtx);
- assert(sizeof *wa2 == WS_Reserve(wrk2->ws, sizeof *wa2));
- wa2 = (void*)wrk2->ws->f;
+ assert(sizeof *wa2 == WS_Reserve(wrk2->aws, sizeof *wa2));
+ wa2 = (void*)wrk2->aws->f;
memcpy(wa2, wa, sizeof *wa);
wrk2->task.func = SES_pool_accept_task;
wrk2->task.priv = pp->sesspool;
@@ -277,7 +277,7 @@ Pool_Work_Thread(void *priv, struct worker *wrk)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
- WS_Reset(wrk->ws, NULL);
+ WS_Reset(wrk->aws, NULL);
tp = VTAILQ_FIRST(&pp->front_queue);
if (tp != NULL) {
diff --git a/bin/varnishd/cache/cache_session.c b/bin/varnishd/cache/cache_session.c
index 2e080f1..58ff960 100644
--- a/bin/varnishd/cache/cache_session.c
+++ b/bin/varnishd/cache/cache_session.c
@@ -139,7 +139,7 @@ ses_pool_task(struct worker *wrk, void *arg)
CHECK_OBJ_NOTNULL(wrk, WORKER_MAGIC);
CAST_OBJ_NOTNULL(sp, arg, SESS_MAGIC);
- AZ(wrk->ws->r);
+ AZ(wrk->aws->r);
wrk->lastused = NAN;
THR_SetSession(sp);
if (wrk->sp == NULL)
@@ -153,7 +153,7 @@ ses_pool_task(struct worker *wrk, void *arg)
/* Cannot access sp now */
THR_SetSession(NULL);
wrk->sp = NULL;
- WS_Assert(wrk->ws);
+ WS_Assert(wrk->aws);
AZ(wrk->busyobj);
AZ(wrk->wrw.wfd);
assert(wrk->wlp == wrk->wlb);
@@ -177,7 +177,7 @@ SES_pool_accept_task(struct worker *wrk, void *arg)
/* Turn accepted socket into a session */
AZ(wrk->sp);
- AN(wrk->ws->r);
+ AN(wrk->aws->r);
wrk->sp = ses_new(pp);
if (wrk->sp == NULL) {
VCA_FailSess(wrk);
@@ -185,7 +185,7 @@ SES_pool_accept_task(struct worker *wrk, void *arg)
}
VCA_SetupSess(wrk);
wrk->sp->step = STP_FIRST;
- WS_Release(wrk->ws, 0);
+ WS_Release(wrk->aws, 0);
ses_pool_task(wrk, wrk->sp);
}
diff --git a/bin/varnishd/cache/cache_vrt.c b/bin/varnishd/cache/cache_vrt.c
index 2623bcc..643f0a3 100644
--- a/bin/varnishd/cache/cache_vrt.c
+++ b/bin/varnishd/cache/cache_vrt.c
@@ -205,7 +205,7 @@ VRT_WrkString(const struct sess *sp, const char *p, ...)
CHECK_OBJ_NOTNULL(sp, SESS_MAGIC);
va_start(ap, p);
- b = VRT_String(sp->wrk->ws, NULL, p, ap);
+ b = VRT_String(sp->wrk->aws, NULL, p, ap);
va_end(ap);
return (b);
}
diff --git a/bin/varnishd/cache/cache_vrt_var.c b/bin/varnishd/cache/cache_vrt_var.c
index c4c0c56..ec067a2 100644
--- a/bin/varnishd/cache/cache_vrt_var.c
+++ b/bin/varnishd/cache/cache_vrt_var.c
@@ -297,7 +297,7 @@ VRT_l_beresp_storage(struct sess *sp, const char *str, ...)
char *b;
va_start(ap, str);
- b = VRT_String(sp->wrk->ws, NULL, str, ap);
+ b = VRT_String(sp->wrk->busyobj->ws, NULL, str, ap);
va_end(ap);
sp->req->storage_hint = b;
}
diff --git a/bin/varnishd/cache/cache_wrk.c b/bin/varnishd/cache/cache_wrk.c
index 6087991..32ad21d 100644
--- a/bin/varnishd/cache/cache_wrk.c
+++ b/bin/varnishd/cache/cache_wrk.c
@@ -152,7 +152,7 @@ wrk_thread_real(void *priv, unsigned shm_workspace, unsigned sess_workspace,
w->wrw.ciov = siov;
AZ(pthread_cond_init(&w->cond, NULL));
- WS_Init(w->ws, "wrk", ws, sess_workspace);
+ WS_Init(w->aws, "wrk", ws, sess_workspace);
VSL(SLT_WorkThread, 0, "%p start", w);
@@ -182,7 +182,7 @@ WRK_thread(void *priv)
siov = IOV_MAX;
return (wrk_thread_real(priv,
cache_param->shm_workspace,
- cache_param->wthread_workspace, siov));
+ cache_param->workspace_thread, siov));
}
void
diff --git a/bin/varnishd/common/params.h b/bin/varnishd/common/params.h
index 40fcf1d..1e51656 100644
--- a/bin/varnishd/common/params.h
+++ b/bin/varnishd/common/params.h
@@ -70,12 +70,14 @@ struct params {
unsigned wthread_purge_delay;
unsigned wthread_stats_rate;
unsigned wthread_stacksize;
- unsigned wthread_workspace;
unsigned queue_max;
/* Memory allocation hints */
unsigned workspace_client;
+ unsigned workspace_backend;
+ unsigned workspace_thread;
+
unsigned shm_workspace;
unsigned http_req_size;
unsigned http_req_hdr_len;
diff --git a/bin/varnishd/mgt/mgt_param.c b/bin/varnishd/mgt/mgt_param.c
index 56c8336..8c7a668 100644
--- a/bin/varnishd/mgt/mgt_param.c
+++ b/bin/varnishd/mgt/mgt_param.c
@@ -662,7 +662,7 @@ tweak_poolparam(struct cli *cli, const struct parspec *par, const char *arg)
"\nNB: Do not change this parameter, unless a developer tell " \
"you to do so."
-#define MEMPOOL_TEXT \
+#define MEMPOOL_TEXT \
"The three numbers are:\n" \
" min_pool -- minimum size of free pool.\n" \
" max_pool -- maximum size of free pool.\n" \
@@ -698,6 +698,18 @@ static const struct parspec input_parspec[] = {
"Bytes of HTTP protocol workspace for clients HTTP req/resp.",
DELAYED_EFFECT,
"64k", "bytes" },
+ { "workspace_backend",
+ tweak_bytes_u, &mgt_param.workspace_backend, 1024, UINT_MAX,
+ "Bytes of HTTP protocol workspace for backend HTTP req/resp.",
+ DELAYED_EFFECT,
+ "64k", "bytes" },
+ { "workspace_thread",
+ tweak_bytes_u, &mgt_param.workspace_thread, 256, 256,
+ "Bytes of auxillary workspace per thread."
+ /* XXX: See comment in cache.h */
+ "This is not the workspace you are looking for.",
+ DELAYED_EFFECT,
+ "256", "bytes" },
{ "http_req_hdr_len",
tweak_bytes_u, &mgt_param.http_req_hdr_len,
40, UINT_MAX,
@@ -1194,7 +1206,7 @@ static const struct parspec input_parspec[] = {
"Disable this if you have very high hitrates and want"
"to save the memory of one busyobj per worker thread.",
0,
- "true", ""},
+ "false", ""},
{ "pool_vbc", tweak_poolparam, &mgt_param.vbc_pool, 0, 10000,
"Parameters for backend connection memory pool.\n"
diff --git a/bin/varnishd/mgt/mgt_pool.c b/bin/varnishd/mgt/mgt_pool.c
index d34eef2..b716937 100644
--- a/bin/varnishd/mgt/mgt_pool.c
+++ b/bin/varnishd/mgt/mgt_pool.c
@@ -224,16 +224,5 @@ const struct parspec WRK_parspec[] = {
"many threads into the limited address space.\n",
EXPERIMENTAL,
"-1", "bytes" },
- { "thread_pool_workspace", tweak_uint, &mgt_param.wthread_workspace,
- 1024, UINT_MAX,
- "Bytes of HTTP protocol workspace allocated for worker "
- "threads. "
- "This space must be big enough for the backend request "
- "and responses, and response to the client plus any other "
- "memory needs in the VCL code."
- "Minimum is 1024 bytes.",
- DELAYED_EFFECT,
- "65536",
- "bytes" },
{ NULL, NULL, NULL }
};
diff --git a/bin/varnishtest/tests/r01038.vtc b/bin/varnishtest/tests/r01038.vtc
index a4173b4..ff94c72 100644
--- a/bin/varnishtest/tests/r01038.vtc
+++ b/bin/varnishtest/tests/r01038.vtc
@@ -45,7 +45,7 @@ server s1 {
txresp -body "foo8"
} -start
-varnish v1 -arg "-p thread_pool_workspace=1024" -vcl+backend {
+varnish v1 -arg "-p workspace_backend=1024" -vcl+backend {
sub vcl_fetch {
set beresp.do_esi = true;
}
More information about the varnish-commit
mailing list