r2509 - trunk/varnish-cache/bin/varnishd

phk at projects.linpro.no phk at projects.linpro.no
Mon Feb 18 12:47:55 CET 2008


Author: phk
Date: 2008-02-18 12:47:55 +0100 (Mon, 18 Feb 2008)
New Revision: 2509

Modified:
   trunk/varnish-cache/bin/varnishd/cache_center.c
Log:
Move the logging of state engine states to use the diag_bitmap
instead of #ifdef DIAGNOSTICS for control.

Also reduce VSL mutex cost by 50% for the common case where we have
a worker thread: We did a WSL_Flush() followed by a VSL(), doing a
WSL() before the WSL_FLush saves one VSL mutex op.




Modified: trunk/varnish-cache/bin/varnishd/cache_center.c
===================================================================
--- trunk/varnish-cache/bin/varnishd/cache_center.c	2008-02-18 11:45:58 UTC (rev 2508)
+++ trunk/varnish-cache/bin/varnishd/cache_center.c	2008-02-18 11:47:55 UTC (rev 2509)
@@ -868,6 +868,21 @@
  *
  */
 
+static void
+cnt_diag(struct sess *sp, const char *state)
+{
+	if (sp->wrk != NULL) {
+		WSL(sp->wrk, SLT_Debug, sp->id,
+		    "thr %p STP_%s sp %p obj %p vcl %p",
+		    pthread_self(), state, sp, sp->obj, sp->vcl);
+		WSL_Flush(sp->wrk);
+	} else {
+		VSL(SLT_Debug, sp->id,
+		    "thr %p STP_%s sp %p obj %p vcl %p",
+		    pthread_self(), state, sp, sp->obj, sp->vcl);
+	}
+}
+
 void
 CNT_Session(struct sess *sp)
 {
@@ -892,22 +907,12 @@
 		CHECK_OBJ_ORNULL(sp->director, DIRECTOR_MAGIC);
 
 		switch (sp->step) {
-#ifdef DIAGNOSTICS
 #define STEP(l,u) \
 		    case STP_##u: \
-			if (sp->wrk) \
-				WSL_Flush(sp->wrk); \
-			VSL(SLT_Debug, sp->id, \
-			    "thr %p STP_%s sp %p obj %p vcl %p", \
-			    pthread_self(), #u, sp, sp->obj, sp->vcl); \
+			if (params->diag_bitmap & 0x01) \
+				cnt_diag(sp, #u); \
 			done = cnt_##l(sp); \
-			break;
-#else
-#define STEP(l,u) \
-		    case STP_##u: \
-			done = cnt_##l(sp); \
 		        break;
-#endif
 #include "steps.h"
 #undef STEP
 		default:	INCOMPL();




More information about the varnish-commit mailing list