From: wessels <> Date: Thu, 9 Apr 1998 01:28:47 +0000 (+0000) Subject: track server-side service time histograms X-Git-Tag: SQUID_3_0_PRE1~3562 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=39edba217789e91f12f490afe22834049f7bd9b0;p=thirdparty%2Fsquid.git track server-side service time histograms --- diff --git a/src/client_side.cc b/src/client_side.cc index b2e0438692..4ff5826323 100644 --- a/src/client_side.cc +++ b/src/client_side.cc @@ -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); diff --git a/src/peer_select.cc b/src/peer_select.cc index cf6fed4923..54b35e9cdb 100644 --- a/src/peer_select.cc +++ b/src/peer_select.cc @@ -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 diff --git a/src/squid.h b/src/squid.h index f0dc902607..d00ccc416c 100644 --- a/src/squid.h +++ b/src/squid.h @@ -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" diff --git a/src/stat.cc b/src/stat.cc index a5aef7ba99..5eeee9d483 100644 --- a/src/stat.cc +++ b/src/stat.cc @@ -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 } diff --git a/src/store.cc b/src/store.cc index f5772d7dbc..554bad0d9d 100644 --- a/src/store.cc +++ b/src/store.cc @@ -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); } diff --git a/src/structs.h b/src/structs.h index 3a3eb229bc..95cfd387b2 100644 --- a/src/structs.h +++ b/src/structs.h @@ -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;