Commit e1b3481c authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Split the http_workspace into sess_workspace and obj_workspace, so they

can be tuned separately.


git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@2559 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 07cf75a0
...@@ -230,7 +230,7 @@ VBE_new_bereq(void) ...@@ -230,7 +230,7 @@ VBE_new_bereq(void)
if (bereq != NULL) { if (bereq != NULL) {
CHECK_OBJ(bereq, BEREQ_MAGIC); CHECK_OBJ(bereq, BEREQ_MAGIC);
} else { } else {
len = params->mem_workspace; len = params->sess_workspace;
bereq = calloc(sizeof *bereq + len, 1); bereq = calloc(sizeof *bereq + len, 1);
if (bereq == NULL) if (bereq == NULL)
return (NULL); return (NULL);
......
...@@ -88,7 +88,7 @@ HSH_Prealloc(struct sess *sp) ...@@ -88,7 +88,7 @@ HSH_Prealloc(struct sess *sp)
} else } else
CHECK_OBJ_NOTNULL(w->nobjhead, OBJHEAD_MAGIC); CHECK_OBJ_NOTNULL(w->nobjhead, OBJHEAD_MAGIC);
if (w->nobj == NULL) { if (w->nobj == NULL) {
st = STV_alloc(sp, params->mem_workspace); st = STV_alloc(sp, params->obj_workspace);
XXXAN(st); XXXAN(st);
assert(st->space > sizeof *w->nobj); assert(st->space > sizeof *w->nobj);
w->nobj = (void *)st->ptr; /* XXX: align ? */ w->nobj = (void *)st->ptr; /* XXX: align ? */
......
...@@ -289,7 +289,7 @@ SES_New(const struct sockaddr *addr, unsigned len) ...@@ -289,7 +289,7 @@ SES_New(const struct sockaddr *addr, unsigned len)
* need to cache it locally, to make sure we get a * need to cache it locally, to make sure we get a
* consistent view of it. * consistent view of it.
*/ */
u = params->mem_workspace; u = params->sess_workspace;
sm = malloc(sizeof *sm + u); sm = malloc(sizeof *sm + u);
if (sm == NULL) if (sm == NULL)
return (NULL); return (NULL);
...@@ -346,7 +346,7 @@ SES_Delete(struct sess *sp) ...@@ -346,7 +346,7 @@ SES_Delete(struct sess *sp)
sp->addr, sp->port, sp->t_end - b->first, sp->addr, sp->port, sp->t_end - b->first,
b->sess, b->req, b->pipe, b->pass, b->sess, b->req, b->pipe, b->pass,
b->fetch, b->hdrbytes, b->bodybytes); b->fetch, b->hdrbytes, b->bodybytes);
if (sm->workspace != params->mem_workspace) { if (sm->workspace != params->sess_workspace) {
VSL_stats->n_sess_mem--; VSL_stats->n_sess_mem--;
free(sm); free(sm);
} else { } else {
......
...@@ -85,7 +85,8 @@ struct params { ...@@ -85,7 +85,8 @@ struct params {
unsigned overflow_max; unsigned overflow_max;
/* Memory allocation hints */ /* Memory allocation hints */
unsigned mem_workspace; unsigned sess_workspace;
unsigned obj_workspace;
/* Acceptor hints */ /* Acceptor hints */
unsigned sess_timeout; unsigned sess_timeout;
......
...@@ -495,13 +495,21 @@ static const struct parspec parspec[] = { ...@@ -495,13 +495,21 @@ static const struct parspec parspec[] = {
"number of worker threads. ", "number of worker threads. ",
EXPERIMENTAL, EXPERIMENTAL,
"3", "requests per request" }, "3", "requests per request" },
{ "http_workspace", tweak_uint, &master.mem_workspace, 1024, UINT_MAX, { "sess_workspace", tweak_uint, &master.sess_workspace, 1024, UINT_MAX,
"Bytes of HTTP protocol workspace allocated. " "Bytes of HTTP protocol workspace allocated for sessions. "
"This space must be big enough for the entire HTTP protocol " "This space must be big enough for the entire HTTP protocol "
"header and any edits done to it in the VCL code.\n" "header and any edits done to it in the VCL code.\n"
"Minimum is 1024 bytes.", "Minimum is 1024 bytes.",
DELAYED_EFFECT, DELAYED_EFFECT,
"8192", "bytes" }, "8192", "bytes" },
{ "obj_workspace", tweak_uint, &master.obj_workspace, 1024, UINT_MAX,
"Bytes of HTTP protocol workspace allocated for objects. "
"This space must be big enough for the entire HTTP protocol "
"header and any edits done to it in the VCL code while it "
"is cached.\n"
"Minimum is 1024 bytes.",
DELAYED_EFFECT,
"8192", "bytes" },
{ "sess_timeout", tweak_timeout, &master.sess_timeout, 0, 0, { "sess_timeout", tweak_timeout, &master.sess_timeout, 0, 0,
"Idle timeout for persistent sessions. " "Idle timeout for persistent sessions. "
"If a HTTP request has not been received in this many " "If a HTTP request has not been received in this many "
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment