Commit aae4296e 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@2559 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 863f09e4
......@@ -230,7 +230,7 @@ VBE_new_bereq(void)
if (bereq != NULL) {
CHECK_OBJ(bereq, BEREQ_MAGIC);
} else {
len = params->mem_workspace;
len = params->sess_workspace;
bereq = calloc(sizeof *bereq + len, 1);
if (bereq == NULL)
return (NULL);
......
......@@ -88,7 +88,7 @@ HSH_Prealloc(struct sess *sp)
} else
CHECK_OBJ_NOTNULL(w->nobjhead, OBJHEAD_MAGIC);
if (w->nobj == NULL) {
st = STV_alloc(sp, params->mem_workspace);
st = STV_alloc(sp, params->obj_workspace);
XXXAN(st);
assert(st->space > sizeof *w->nobj);
w->nobj = (void *)st->ptr; /* XXX: align ? */
......
......@@ -289,7 +289,7 @@ SES_New(const struct sockaddr *addr, unsigned len)
* need to cache it locally, to make sure we get a
* consistent view of it.
*/
u = params->mem_workspace;
u = params->sess_workspace;
sm = malloc(sizeof *sm + u);
if (sm == NULL)
return (NULL);
......@@ -346,7 +346,7 @@ SES_Delete(struct sess *sp)
sp->addr, sp->port, sp->t_end - b->first,
b->sess, b->req, b->pipe, b->pass,
b->fetch, b->hdrbytes, b->bodybytes);
if (sm->workspace != params->mem_workspace) {
if (sm->workspace != params->sess_workspace) {
VSL_stats->n_sess_mem--;
free(sm);
} else {
......
......@@ -85,7 +85,8 @@ struct params {
unsigned overflow_max;
/* Memory allocation hints */
unsigned mem_workspace;
unsigned sess_workspace;
unsigned obj_workspace;
/* Acceptor hints */
unsigned sess_timeout;
......
......@@ -495,13 +495,21 @@ static const struct parspec parspec[] = {
"number of worker threads. ",
EXPERIMENTAL,
"3", "requests per request" },
{ "http_workspace", tweak_uint, &master.mem_workspace, 1024, UINT_MAX,
"Bytes of HTTP protocol workspace allocated. "
{ "sess_workspace", tweak_uint, &master.sess_workspace, 1024, UINT_MAX,
"Bytes of HTTP protocol workspace allocated for sessions. "
"This space must be big enough for the entire HTTP protocol "
"header and any edits done to it in the VCL code.\n"
"Minimum is 1024 bytes.",
DELAYED_EFFECT,
"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,
"Idle timeout for persistent sessions. "
"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