]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
track server-side service time histograms
authorwessels <>
Thu, 9 Apr 1998 01:28:47 +0000 (01:28 +0000)
committerwessels <>
Thu, 9 Apr 1998 01:28:47 +0000 (01:28 +0000)
src/client_side.cc
src/peer_select.cc
src/squid.h
src/stat.cc
src/store.cc
src/structs.h

index b2e043869245ca226f5a8ea1d15dbdf3ff65fc22..4ff5826323b9ab0c498ef29f188de8111e6012a7 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: client_side.cc,v 1.262 1998/04/08 00:34:01 wessels Exp $
+ * $Id: client_side.cc,v 1.263 1998/04/08 19:28:47 wessels Exp $
  *
  * DEBUG: section 33    Client-side Routines
  * AUTHOR: Duane Wessels
@@ -520,6 +520,8 @@ clientUpdateCounters(clientHttpRequest * http)
     icp_ping_data *i;
 #if SQUID_PEER_DIGEST
     const HttpReply *reply = NULL;
+    int sst = 0;               /* server-side service time */
+    HierarchyLogEntry *H;
 #endif
     Counter.client_http.requests++;
     kb_incr(&Counter.client_http.kbytes_in, http->req_sz);
@@ -557,29 +559,35 @@ clientUpdateCounters(clientHttpRequest * http)
     if (0 != i->stop.tv_sec && 0 != i->start.tv_sec)
        statHistCount(&Counter.icp.query_svc_time, tvSubUsec(i->start, i->stop));
 #if SQUID_PEER_DIGEST
-    if (http->request->hier.alg == PEER_SA_ICP) {
+    H = &http->request->hier;
+    if (H->peer_select_start.tv_sec && H->store_complete_stop.tv_sec)
+       sst = tvSubMsec(H->peer_select_start, H->store_complete_stop);
+    if (H->alg == PEER_SA_ICP) {
        statHistCount(&Counter.icp.client_svc_time, svc_time);
+       if (sst)
+           statHistCount(&Counter.icp.server_svc_time, svc_time);
        Counter.icp.times_used++;
     } else
-    if (http->request->hier.alg == PEER_SA_DIGEST) {
+    if (H->alg == PEER_SA_DIGEST) {
        statHistCount(&Counter.cd.client_svc_time, svc_time);
+       if (sst)
+           statHistCount(&Counter.cd.server_svc_time, svc_time);
        Counter.cd.times_used++;
     } else {
-       assert(http->request->hier.alg == PEER_SA_NONE);
+       assert(H->alg == PEER_SA_NONE);
     }
     if (/* we used ICP or CD for peer selecton */
-       http->request->hier.alg != PEER_SA_NONE &&
+       H->alg != PEER_SA_NONE &&
        /* a CD lookup found peers with digests */
-       http->request->hier.cd_lookup != LOOKUP_NONE &&
+       H->cd_lookup != LOOKUP_NONE &&
        /* paranoid: we have a reply pointer */
        (reply = storeEntryReply(http->entry))) {
        const char *x_cache_fld = httpHeaderGetLastStr(&reply->header, HDR_X_CACHE);
        const int real_hit = x_cache_fld && !strncmp(x_cache_fld, "HIT", 3);
-       const int guess_hit = http->request->hier.cd_lookup == LOOKUP_HIT;
-       peer *peer = peerFindByName(http->request->hier.host);
+       const int guess_hit = H->cd_lookup == LOOKUP_HIT;
+       peer *peer = peerFindByName(H->host);
 
-       cacheDigestGuessStatsUpdate(&Counter.cd.guess_stats,
-           real_hit, guess_hit);
+       cacheDigestGuessStatsUpdate(&Counter.cd.guess, real_hit, guess_hit);
        if (peer)
            cacheDigestGuessStatsUpdate(&peer->digest.stats.guess,
                real_hit, guess_hit);
index cf6fed49231629f2aec9dce4757dc6ab44a4d46a..54b35e9cdb1077fdc0fbadaef641c22ffb0536f1 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: peer_select.cc,v 1.45 1998/04/07 23:53:20 rousskov Exp $
+ * $Id: peer_select.cc,v 1.46 1998/04/08 19:28:48 wessels Exp $
  *
  * DEBUG: section 44    Peer Selection Algorithm
  * AUTHOR: Duane Wessels
@@ -147,6 +147,9 @@ peerSelect(request_t * request,
     psstate->callback_data = callback_data;
     cbdataLock(callback_data);
     peerSelectCheckAS(psstate);
+#if SQUID_PEER_DIGEST
+    request->hier.peer_select_start = current_time;
+#endif
 }
 
 static void
index f0dc9026079e485239dc288f4d85cfabbce8e969..d00ccc416c2cdb9db8deef99600e7578c7f6d520 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: squid.h,v 1.171 1998/04/08 19:01:50 wessels Exp $
+ * $Id: squid.h,v 1.172 1998/04/08 19:28:49 wessels Exp $
  *
  * AUTHOR: Duane Wessels
  *
@@ -326,13 +326,13 @@ struct rusage {
  * maintain a digest of cache contents and send the digest to neighbors upon
  * request; if disabled we still can request digests from other caches
  */
-#define SQUID_MAINTAIN_CACHE_DIGEST 0
+#define SQUID_MAINTAIN_CACHE_DIGEST 1
 
 /*
  * ask peers about their digests and use them
  * must be set before including structs.h
  */
-#define SQUID_PEER_DIGEST 0
+#define SQUID_PEER_DIGEST 1
 
 #include "defines.h"
 #include "enums.h"
index a5aef7ba99e29a14d9576c97eb1f42793d0395b8..5eeee9d48319699031ed114b0e8a3ba41eb626ba 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: stat.cc,v 1.225 1998/04/07 23:58:31 rousskov Exp $
+ * $Id: stat.cc,v 1.226 1998/04/08 19:28:50 wessels Exp $
  *
  * DEBUG: section 18    Cache Manager Statistics
  * AUTHOR: Harvest Derived
@@ -654,10 +654,18 @@ statAvgDump(StoreEntry * sentry, int minutes, int hours)
        &f->cd.client_svc_time);
     storeAppendPrintf(sentry, "cd.client_median_svc_time = %f seconds\n",
        x / 1000.0);
+    x = statHistDeltaMedian(&l->cd.server_svc_time,
+       &f->cd.server_svc_time);
+    storeAppendPrintf(sentry, "cd.server_median_svc_time = %f seconds\n",
+       x / 1000.0);
     x = statHistDeltaMedian(&l->icp.client_svc_time,
        &f->icp.client_svc_time);
     storeAppendPrintf(sentry, "icp.client_median_svc_time = %f seconds\n",
        x / 1000.0);
+    x = statHistDeltaMedian(&l->icp.server_svc_time,
+       &f->icp.server_svc_time);
+    storeAppendPrintf(sentry, "icp.server_median_svc_time = %f seconds\n",
+       x / 1000.0);
 #endif
 
     storeAppendPrintf(sentry, "server.all.requests = %f/sec\n",
@@ -838,6 +846,8 @@ statCountersInitSpecial(StatCounters * C)
      */
     statHistLogInit(&C->cd.client_svc_time, 300, 0.0, 3600000.0 * 30.0);
     statHistLogInit(&C->icp.client_svc_time, 300, 0.0, 3600000.0 * 30.0);
+    statHistLogInit(&C->cd.server_svc_time, 300, 0.0, 3600000.0 * 30.0);
+    statHistLogInit(&C->icp.server_svc_time, 300, 0.0, 3600000.0 * 30.0);
 #endif
 }
 
@@ -856,6 +866,8 @@ statCountersClean(StatCounters * C)
 #if SQUID_PEER_DIGEST
     statHistClean(&C->cd.client_svc_time);
     statHistClean(&C->icp.client_svc_time);
+    statHistClean(&C->cd.server_svc_time);
+    statHistClean(&C->icp.server_svc_time);
 #endif
 }
 
@@ -880,6 +892,8 @@ statCountersCopy(StatCounters * dest, const StatCounters * orig)
 #if SQUID_PEER_DIGEST
     statHistCopy(&dest->cd.client_svc_time, &orig->cd.client_svc_time);
     statHistCopy(&dest->icp.client_svc_time, &orig->icp.client_svc_time);
+    statHistCopy(&dest->cd.server_svc_time, &orig->cd.server_svc_time);
+    statHistCopy(&dest->icp.server_svc_time, &orig->icp.server_svc_time);
 #endif
 }
 
index f5772d7dbc383231e1f5e87259467cc7ee1f7e4f..554bad0d9dc793f6ed887714db6ed7b8d4be8597 100644 (file)
@@ -1,6 +1,6 @@
 
 /*
- * $Id: store.cc,v 1.401 1998/04/07 23:59:26 rousskov Exp $
+ * $Id: store.cc,v 1.402 1998/04/08 19:28:51 wessels Exp $
  *
  * DEBUG: section 20    Storage Manager
  * AUTHOR: Harvest Derived
@@ -541,6 +541,9 @@ storeComplete(StoreEntry * e)
     assert(e->mem_status == NOT_IN_MEMORY);
     if (!storeEntryValidLength(e))
        EBIT_SET(e->flag, ENTRY_BAD_LENGTH);
+#if SQUID_PEER_DIGEST
+    e->mem_obj->request->hier.store_complete_stop = current_time;
+#endif
     InvokeHandlers(e);
     storeCheckSwapOut(e);
 }
index 3a3eb229bcdc9226589a9db58011aa04ee78098f..95cfd387b2a398ce89dcbd2d05a741ad9c6a5200 100644 (file)
@@ -621,6 +621,8 @@ struct _HierarchyLogEntry {
     lookup_t cd_lookup;    /* cd prediction: none, miss, hit */
     int n_choices;         /* #peers we selected from (cd only) */
     int n_ichoices;        /* #peers with known rtt we selected from (cd only) */
+    struct timeval peer_select_start;
+    struct timeval store_complete_stop;
 #endif
 };
 
@@ -1185,6 +1187,7 @@ struct _StatCounters {
        StatHist reply_svc_time;
 #if SQUID_PEER_DIGEST
        StatHist client_svc_time;
+       StatHist server_svc_time;
        int times_used;
 #endif
     } icp;
@@ -1202,6 +1205,7 @@ struct _StatCounters {
        kb_t memory;
         cd_guess_stats guess;
        StatHist client_svc_time;
+       StatHist server_svc_time;
     } cd;
 #endif
     int page_faults;