]> err.no Git - varnish/commitdiff
Use srcaddr mutex for srcaddr stats update to reduce contention on stat_mtx
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sat, 16 Sep 2006 20:59:35 +0000 (20:59 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Sat, 16 Sep 2006 20:59:35 +0000 (20:59 +0000)
git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@1034 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishd/cache_session.c

index 8f96bcddd0509d0423f02d62fb72543ee21d66b0..4b6b8d9fe9a4a12c7bfcbc2a12b76f5e82c02df9 100644 (file)
@@ -201,15 +201,17 @@ SES_Charge(struct sess *sp)
 
        ses_sum_acct(&sp->acct, a);
        
-       LOCK(&stat_mtx);
        if (sp->srcaddr != NULL) {
+               LOCK(&sp->srcaddr->sah->mtx);
                b = &sp->srcaddr->acct;
                ses_sum_acct(b, a);
                VSL(SLT_StatAddr, 0, "%s 0 %d %ju %ju %ju %ju %ju %ju %ju",
                    sp->srcaddr->addr, sp->t_end.tv_sec - b->first,
                    b->sess, b->req, b->pipe, b->pass,
                    b->fetch, b->hdrbytes, b->bodybytes);
+               UNLOCK(&sp->srcaddr->sah->mtx);
        }
+       LOCK(&stat_mtx);
        VSL_stats->s_sess += a->sess;
        VSL_stats->s_req += a->req;
        VSL_stats->s_pipe += a->pipe;