From: phk Date: Mon, 1 Oct 2007 07:45:58 +0000 (+0000) Subject: Move the workerthreads log from malloc to stack. X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=921cdab6dc7a6a7d42891b649658a54787466502;p=varnish Move the workerthreads log from malloc to stack. Dump sizes of various structures on startup. git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@2072 d4fa192b-c00b-0410-8231-f00ffab90ce4 --- diff --git a/varnish-cache/bin/varnishd/cache.h b/varnish-cache/bin/varnishd/cache.h index 01086ae1..e0e58e97 100644 --- a/varnish-cache/bin/varnishd/cache.h +++ b/varnish-cache/bin/varnishd/cache.h @@ -176,9 +176,8 @@ struct worker { struct srcaddr *srcaddr; struct acct acct; - unsigned char *wlp, *wle; + unsigned char *wlb, *wlp, *wle; unsigned wlr; - unsigned char wlog[WLOGSPACE]; }; struct workreq { diff --git a/varnish-cache/bin/varnishd/cache_expire.c b/varnish-cache/bin/varnishd/cache_expire.c index f63873db..5595fe70 100644 --- a/varnish-cache/bin/varnishd/cache_expire.c +++ b/varnish-cache/bin/varnishd/cache_expire.c @@ -165,6 +165,7 @@ exp_prefetch(void *arg) double t; struct sess *sp; struct object *o2; + unsigned char log[1024]; /* XXX size ? */ (void)arg; @@ -172,8 +173,8 @@ exp_prefetch(void *arg) XXXAN(sp); sp->wrk = &ww; ww.magic = WORKER_MAGIC; - ww.wlp = ww.wlog; - ww.wle = ww.wlog + sizeof ww.wlog; + ww.wlp = ww.wlb = log; + ww.wle = log + sizeof log; AZ(sleep(10)); /* XXX: Takes time for VCL to arrive */ VCL_Get(&sp->vcl); diff --git a/varnish-cache/bin/varnishd/cache_main.c b/varnish-cache/bin/varnishd/cache_main.c index 327a74fd..3c4dd898 100644 --- a/varnish-cache/bin/varnishd/cache_main.c +++ b/varnish-cache/bin/varnishd/cache_main.c @@ -51,6 +51,22 @@ child_main(void) setbuf(stderr, NULL); printf("Child starts\n"); +#define SZOF(foo) printf("sizeof(%s) = %d\n", #foo, sizeof(foo)); + SZOF(struct ws); + SZOF(struct http); + SZOF(struct http_conn); + SZOF(struct acct); + SZOF(struct worker); + SZOF(struct workreq); + SZOF(struct bereq); + SZOF(struct storage); + SZOF(struct object); + SZOF(struct objhead); + SZOF(struct sess); + SZOF(struct vbe_conn); + SZOF(struct backend); + + CNT_Init(); VCL_Init(); diff --git a/varnish-cache/bin/varnishd/cache_pool.c b/varnish-cache/bin/varnishd/cache_pool.c index 54daa6d7..0c85f3d5 100644 --- a/varnish-cache/bin/varnishd/cache_pool.c +++ b/varnish-cache/bin/varnishd/cache_pool.c @@ -202,13 +202,14 @@ wrk_thread(void *priv) struct worker w[1]; struct wq *qp; char c; + unsigned char wlog[8192]; /* XXX: size */ qp = priv; memset(w, 0, sizeof *w); w->magic = WORKER_MAGIC; w->used = TIM_real(); - w->wlp = w->wlog; - w->wle = w->wlog + sizeof w->wlog; + w->wlb = w->wlp = wlog; + w->wle = wlog + sizeof wlog; AZ(pipe(w->pipe)); VSL(SLT_WorkThread, 0, "%p start", w); diff --git a/varnish-cache/bin/varnishd/shmlog.c b/varnish-cache/bin/varnishd/shmlog.c index b99ca72c..f97e393f 100644 --- a/varnish-cache/bin/varnishd/shmlog.c +++ b/varnish-cache/bin/varnishd/shmlog.c @@ -175,7 +175,7 @@ WSL_Flush(struct worker *w) unsigned char *p; unsigned l; - l = pdiff(w->wlog, w->wlp); + l = pdiff(w->wlb, w->wlp); if (l == 0) return; LOCKSHM(&vsl_mtx); @@ -184,14 +184,14 @@ WSL_Flush(struct worker *w) if (loghead->ptr + l + 1 >= loghead->size) vsl_wrap(); p = logstart + loghead->ptr; - memcpy(p + 1, w->wlog + 1, l - 1); + memcpy(p + 1, w->wlb + 1, l - 1); p[l] = SLT_ENDMARKER; loghead->ptr += l; assert(loghead->ptr < loghead->size); /* XXX: memory barrier here */ - p[0] = w->wlog[0]; + p[0] = w->wlb[0]; UNLOCKSHM(&vsl_mtx); - w->wlp = w->wlog; + w->wlp = w->wlb; w->wlr = 0; }