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

Get rid of the workthread VSL buffer.

parent 89558df4
......@@ -312,8 +312,6 @@ struct worker {
struct VCL_conf *vcl;
struct vsl_log vsl[1];
struct ws aws[1];
......
......@@ -402,7 +402,7 @@ cnt_done(struct sess *sp, struct worker *wrk, struct req *req)
req->xid, sp->t_req, sp->t_idle, dh, dp, da);
}
req->xid = 0;
VSL_Flush(wrk->vsl, 0);
VSL_Flush(sp->req->vsl, 0);
sp->t_req = NAN;
req->t_resp = NAN;
......@@ -1623,7 +1623,6 @@ CNT_Session(struct sess *sp)
WS_Assert(wrk->aws);
CHECK_OBJ_ORNULL(wrk->nobjhead, OBJHEAD_MAGIC);
}
VSL_Flush(wrk->vsl, 0);
#define ACCT(foo) AZ(wrk->acct_tmp.foo);
#include "tbl/acct_fields.h"
#undef ACCT
......
......@@ -57,9 +57,10 @@ VDI_CloseFd(struct worker *wrk, struct vbc **vbp)
VSLb(vc->vsl, SLT_BackendClose, "%s", bp->display_name);
/* Checkpoint log to flush all info related to this connection
before the OS reuses the FD */
VSL_Flush(wrk->vsl, 0);
/*
* Checkpoint log to flush all info related to this connection
* before the OS reuses the FD
*/
VSL_Flush(vc->vsl, 0);
vc->vsl->wid = vc->orig_vsl_id;
vc->vsl = NULL;
......@@ -91,11 +92,7 @@ VDI_RecycleFd(struct worker *wrk, struct vbc **vbp)
VSLb(vc->vsl, SLT_BackendReuse, "%s", bp->display_name);
/*
* Flush the shmlog, so that another session reusing this backend
* will log chronologically later than our use of it.
*/
VSL_Flush(wrk->vsl, 0);
/* XXX: revisit this hack */
VSL_Flush(vc->vsl, 0);
vc->vsl->wid = vc->orig_vsl_id;
vc->vsl = NULL;
......
......@@ -45,18 +45,18 @@ static void
ved_include(struct sess *sp, const char *src, const char *host)
{
struct object *obj;
struct worker *w;
struct worker *wrk;
char *sp_ws_wm;
char *wrk_ws_wm;
unsigned sxid, res_mode;
w = sp->wrk;
wrk = sp->wrk;
if (sp->req->esi_level >= cache_param->max_esi_depth)
return;
sp->req->esi_level++;
(void)WRW_FlushRelease(w);
(void)WRW_FlushRelease(wrk);
obj = sp->req->obj;
sp->req->obj = NULL;
......@@ -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->aws); /* XXX ? */
wrk_ws_wm = WS_Snapshot(wrk->aws); /* XXX ? */
http_SetH(sp->req->http, HTTP_HDR_URL, src);
if (host != NULL && *host != '\0') {
......@@ -93,12 +93,11 @@ ved_include(struct sess *sp, const char *src, const char *host)
sxid = sp->req->xid;
while (1) {
sp->wrk = w;
sp->wrk = wrk;
CNT_Session(sp);
if (sp->step == STP_DONE)
break;
AZ(sp->wrk);
VSL_Flush(w->vsl, 0);
DSL(0x20, SLT_Debug, sp->vsl_id, "loop waiting for ESI");
(void)usleep(10000);
}
......@@ -111,7 +110,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->aws, wrk_ws_wm); /* XXX ? */
WS_Reset(wrk->aws, wrk_ws_wm); /* XXX ? */
WRW_Reserve(sp->wrk, &sp->fd, sp->req->vsl, sp->req->t_resp);
if (sp->req->res_mode & RES_CHUNKED)
......
......@@ -442,9 +442,6 @@ FetchHdr(struct sess *sp, int need_host_hdr, int sendbody)
return (retry);
}
/* Checkpoint the vsl.here */
VSL_Flush(wrk->vsl, 0);
/* XXX is this the right place? */
VSC_C_main->backend_req++;
......
......@@ -133,7 +133,6 @@ ses_pool_task(struct worker *wrk, void *arg)
THR_SetSession(NULL);
WS_Assert(wrk->aws);
AZ(wrk->wrw);
assert(wrk->vsl->wlp == wrk->vsl->wlb);
if (cache_param->diag_bitmap & 0x00040000) {
if (wrk->vcl != NULL)
VCL_Rel(&wrk->vcl);
......
......@@ -94,13 +94,11 @@ wrk_bgthread(void *arg)
{
struct bgthread *bt;
struct worker wrk;
uint32_t logbuf[1024]; /* XXX: size ? */
CAST_OBJ_NOTNULL(bt, arg, BGTHREAD_MAGIC);
THR_SetName(bt->name);
memset(&wrk, 0, sizeof wrk);
wrk.magic = WORKER_MAGIC;
VSL_Setup(wrk.vsl, logbuf, sizeof logbuf);
(void)bt->func(&wrk, bt->priv);
......@@ -126,10 +124,9 @@ WRK_BgThread(pthread_t *thr, const char *name, bgthread_t *func, void *priv)
/*--------------------------------------------------------------------*/
static void *
wrk_thread_real(void *priv, unsigned shm_workspace, unsigned thread_workspace)
wrk_thread_real(void *priv, unsigned thread_workspace)
{
struct worker *w, ww;
uint32_t wlog[shm_workspace / 4];
unsigned char ws[thread_workspace];
THR_SetName("cache-worker");
......@@ -137,7 +134,6 @@ wrk_thread_real(void *priv, unsigned shm_workspace, unsigned thread_workspace)
memset(w, 0, sizeof *w);
w->magic = WORKER_MAGIC;
w->lastused = NAN;
VSL_Setup(w->vsl, wlog, sizeof wlog);
AZ(pthread_cond_init(&w->cond, NULL));
WS_Init(w->aws, "wrk", ws, thread_workspace);
......@@ -162,9 +158,7 @@ void *
WRK_thread(void *priv)
{
return (wrk_thread_real(priv,
cache_param->shm_workspace,
cache_param->workspace_thread));
return (wrk_thread_real(priv, cache_param->workspace_thread));
}
void
......
......@@ -778,16 +778,6 @@ static const struct parspec input_parspec[] = {
"Minimum is 1k bytes.",
0,
"4k", "bytes" },
{ "shm_workspace",
tweak_bytes_u, &mgt_param.shm_workspace, 4096, UINT_MAX,
"Bytes of shmlog workspace allocated for worker threads. "
"If too big, it wastes some ram, if too small it causes "
"needless flushes of the SHM workspace.\n"
"These flushes show up in stats as "
"\"SHM flushes due to overflow\".\n"
"Minimum is 4096 bytes.",
DELAYED_EFFECT,
"8k", "bytes" },
{ "shm_reclen",
tweak_bytes_u, &mgt_param.shm_reclen, 16, 65535,
"Maximum number of bytes in SHM log record.\n"
......
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