]> err.no Git - varnish/commitdiff
Move the workerthreads log from malloc to stack.
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 1 Oct 2007 07:45:58 +0000 (07:45 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 1 Oct 2007 07:45:58 +0000 (07:45 +0000)
Dump sizes of various structures on startup.

git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@2072 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishd/cache.h
varnish-cache/bin/varnishd/cache_expire.c
varnish-cache/bin/varnishd/cache_main.c
varnish-cache/bin/varnishd/cache_pool.c
varnish-cache/bin/varnishd/shmlog.c

index 01086ae122b9ee331612ce4f6cd3d3f3dafbc7ce..e0e58e97cd3c1febecf20d1cdfd4cbd3d06ee6dd 100644 (file)
@@ -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 {
index f63873db560a60a46936ace4860411770eaadf10..5595fe708e9f29441bd89ec0a0ba54b23c095f46 100644 (file)
@@ -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);
index 327a74fd7ceed7b7c14bb993870dc19867390577..3c4dd8981e15e53c6f0ddbaeb2c0e404831636f8 100644 (file)
@@ -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();
 
index 54daa6d76fa53b10dc02dff43dff9a5563482ef8..0c85f3d51e778af403da7f5bdaa221ec9cf1d0ac 100644 (file)
@@ -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);
index b99ca72c1bc28cd008f56d4393225955080a3850..f97e393fae1474653a4977d8ab08b9cee9123755 100644 (file)
@@ -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;
 }