109#if XMALLOC_STATISTICS
110static void info_get_mallstat(
int,
int,
int,
void *);
217 i ? (1 << (i - 1)) + 1 : 1,
219 stats.http_read_hist[i],
230 i ? (1 << (i - 1)) + 1 : 1,
232 stats.ftp_read_hist[i],
243 snprintf(buf, 256,
"%-13s %-13s %-12s %-12s",
260 strcat(buf,
"SPECIAL,");
263 strcat(buf,
"REVALIDATE_ALWAYS,");
266 strcat(buf,
"DELAY_SENDING,");
269 strcat(buf,
"RELEASE_REQUEST,");
272 strcat(buf,
"REFRESH_REQUEST,");
275 strcat(buf,
"REVALIDATE_STALE,");
278 strcat(buf,
"DISPATCHED,");
281 strcat(buf,
"PRIVATE,");
284 strcat(buf,
"FWD_HDR_WAIT,");
287 strcat(buf,
"NEGCACHED,");
290 strcat(buf,
"VALIDATED,");
293 strcat(buf,
"BAD_LENGTH,");
296 strcat(buf,
"ABORTED,");
298 if ((t = strrchr(buf,
',')))
346 size_t statCount = 0;
374 sentry->
lock(
"statObjects");
416#if XMALLOC_STATISTICS
418info_get_mallstat(
int size,
int number,
int oldnum,
void *data)
436#if HAVE_MSTATS && HAVE_GNUMALLOC_H
516 stats.up_time = runtime;
517 stats.cpu_time = cputime;
526#if HAVE_MSTATS && HAVE_GNUMALLOC_H
530 stats.ms_bytes_total = ms.bytes_total;
532 stats.ms_bytes_free = ms.bytes_free;
561 if (WIN32_run_mode == _WIN_SQUID_RUN_MODE_SERVICE) {
564 storeAppendPrintf(sentry,
"Service command line is: %s\n", WIN32_Service_Command_Line);
582 sentry->
append(
"\tNumber of clients accessing cache:\t(client_db off)\n", 52);
585 stats.client_http_requests);
588 stats.icp_pkts_recv);
591 stats.icp_pkts_sent);
594 stats.icp_replies_queued);
599 stats.htcp_pkts_recv);
602 stats.htcp_pkts_sent);
606 double fct =
stats.count > 1 ?
stats.count : 1.0;
608 stats.request_failure_ratio / fct);
610 storeAppendPrintf(sentry,
"\tAverage HTTP requests per minute since start:\t%.1f\n",
611 stats.avg_client_http_requests);
613 storeAppendPrintf(sentry,
"\tAverage ICP messages per minute since start:\t%.1f\n",
614 stats.avg_icp_messages);
617 stats.select_loops,
stats.avg_loop_time / fct);
621 storeAppendPrintf(sentry,
"\tHits as %% of all requests:\t5min: %3.1f%%, 60min: %3.1f%%\n",
622 stats.request_hit_ratio5 / fct,
623 stats.request_hit_ratio60 / fct);
625 storeAppendPrintf(sentry,
"\tHits as %% of bytes sent:\t5min: %3.1f%%, 60min: %3.1f%%\n",
626 stats.byte_hit_ratio5 / fct,
627 stats.byte_hit_ratio60 / fct);
629 storeAppendPrintf(sentry,
"\tMemory hits as %% of hit requests:\t5min: %3.1f%%, 60min: %3.1f%%\n",
630 stats.request_hit_mem_ratio5 / fct,
631 stats.request_hit_mem_ratio60 / fct);
633 storeAppendPrintf(sentry,
"\tDisk hits as %% of hit requests:\t5min: %3.1f%%, 60min: %3.1f%%\n",
634 stats.request_hit_disk_ratio5 / fct,
635 stats.request_hit_disk_ratio60 / fct);
638 stats.store.swap.size / 1024);
640 storeAppendPrintf(sentry,
"\tStorage Swap capacity:\t%4.1f%% used, %4.1f%% free\n",
645 stats.store.mem.size / 1024);
647 storeAppendPrintf(sentry,
"\tStorage Mem capacity:\t%4.1f%% used, %4.1f%% free\n",
652 stats.store.swap.meanObjectSize() / 1024);
655 stats.unlink_requests);
659 fct =
stats.count > 1 ?
stats.count * 1000.0 : 1000.0;
661 stats.http_requests5 / fct,
662 stats.http_requests60 / fct);
665 stats.cache_misses5 / fct,
666 stats.cache_misses60 / fct);
669 stats.cache_hits5 / fct,
670 stats.cache_hits60 / fct);
673 stats.near_hits5 / fct,
674 stats.near_hits60 / fct);
677 stats.not_modified_replies5 / fct,
678 stats.not_modified_replies60 / fct);
681 stats.dns_lookups5 / fct,
682 stats.dns_lookups60 / fct);
684 fct =
stats.count > 1 ?
stats.count * 1000000.0 : 1000000.0;
686 stats.icp_queries5 / fct,
687 stats.icp_queries60 / fct);
710#if HAVE_MSTATS && HAVE_GNUMALLOC_H
715 stats.ms_bytes_total / 1024);
718 stats.ms_bytes_free / 1024,
725 stats.total_accounted / 1024);
730 stats.gb_saved_count);
732 stats.gb_freed_count);
749 stats.store.swap.open_disk_fd);
753 stats.store.store_entry_count);
755 stats.store.mem_object_count);
757 stats.store.mem.count);
759 stats.store.swap.count);
765#if XMALLOC_STATISTICS
769 storeAppendPrintf(sentry,
"%12s %15s %6s %12s\n",
"Alloc Size",
"Count",
"Delta",
"Alloc/sec");
770 malloc_statistics(info_get_mallstat, sentry);
780 double p = (i + 1) * 5 / 100.0;
808 double fct =
stats.count > 1 ?
stats.count * 1000.0 : 1000.0;
812 stats.http_requests5[i] / fct,
813 stats.http_requests60[i] / fct);
818 stats.cache_misses5[i] / fct,
819 stats.cache_misses60[i] / fct);
824 stats.cache_hits5[i] / fct,
825 stats.cache_hits60[i] / fct);
830 stats.near_hits5[i] / fct,
831 stats.near_hits60[i] / fct);
836 stats.not_modified_replies5[i] / fct,
837 stats.not_modified_replies60[i] / fct);
842 stats.dns_lookups5[i] / fct,
843 stats.dns_lookups60[i] / fct);
845 fct =
stats.count > 1 ?
stats.count * 1000000.0 : 1000000.0;
849 stats.icp_queries5[i] / fct,
850 stats.icp_queries60[i] / fct);
862#define XAVG(X) (dt ? (double) (f->X - l->X) / dt : 0.0)
871 assert(minutes > 0 || hours > 0);
875 if (minutes > 0 && hours == 0) {
882 }
else if (minutes == 0 && hours > 0) {
890 debugs(18,
DBG_IMPORTANT,
"ERROR: statAvgDump: Invalid args, minutes=" << minutes <<
", hours=" << hours);
900 stats.client_http_requests =
XAVG(client_http.requests);
901 stats.client_http_hits =
XAVG(client_http.hits);
902 stats.client_http_errors =
XAVG(client_http.errors);
903 stats.client_http_kbytes_in =
XAVG(client_http.kbytes_in.kb);
904 stats.client_http_kbytes_out =
XAVG(client_http.kbytes_out.kb);
937 stats.icp_pkts_sent =
XAVG(icp.pkts_sent);
938 stats.icp_pkts_recv =
XAVG(icp.pkts_recv);
939 stats.icp_queries_sent =
XAVG(icp.queries_sent);
940 stats.icp_replies_sent =
XAVG(icp.replies_sent);
941 stats.icp_queries_recv =
XAVG(icp.queries_recv);
942 stats.icp_replies_recv =
XAVG(icp.replies_recv);
943 stats.icp_replies_queued =
XAVG(icp.replies_queued);
944 stats.icp_query_timeouts =
XAVG(icp.query_timeouts);
945 stats.icp_kbytes_sent =
XAVG(icp.kbytes_sent.kb);
946 stats.icp_kbytes_recv =
XAVG(icp.kbytes_recv.kb);
947 stats.icp_q_kbytes_sent =
XAVG(icp.q_kbytes_sent.kb);
948 stats.icp_r_kbytes_sent =
XAVG(icp.r_kbytes_sent.kb);
949 stats.icp_q_kbytes_recv =
XAVG(icp.q_kbytes_recv.kb);
950 stats.icp_r_kbytes_recv =
XAVG(icp.r_kbytes_recv.kb);
959 stats.unlink_requests =
XAVG(unlink.requests);
969 stats.swap_files_cleaned =
XAVG(swap.files_cleaned);
970 stats.aborted_requests =
XAVG(aborted_requests);
972 stats.hitValidationAttempts =
XAVG(hitValidation.attempts);
973 stats.hitValidationRefusalsDueToLocking =
XAVG(hitValidation.refusalsDueToLocking);
974 stats.hitValidationRefusalsDueToZeroSize =
XAVG(hitValidation.refusalsDueToZeroSize);
975 stats.hitValidationRefusalsDueToTimeLimit =
XAVG(hitValidation.refusalsDueToTimeLimit);
976 stats.hitValidationFailures =
XAVG(hitValidation.failures);
978 stats.syscalls_disk_opens =
XAVG(syscalls.disk.opens);
979 stats.syscalls_disk_closes =
XAVG(syscalls.disk.closes);
980 stats.syscalls_disk_reads =
XAVG(syscalls.disk.reads);
981 stats.syscalls_disk_writes =
XAVG(syscalls.disk.writes);
982 stats.syscalls_disk_seeks =
XAVG(syscalls.disk.seeks);
983 stats.syscalls_disk_unlinks =
XAVG(syscalls.disk.unlinks);
984 stats.syscalls_sock_accepts =
XAVG(syscalls.sock.accepts);
985 stats.syscalls_sock_sockets =
XAVG(syscalls.sock.sockets);
986 stats.syscalls_sock_connects =
XAVG(syscalls.sock.connects);
987 stats.syscalls_sock_binds =
XAVG(syscalls.sock.binds);
988 stats.syscalls_sock_closes =
XAVG(syscalls.sock.closes);
989 stats.syscalls_sock_reads =
XAVG(syscalls.sock.reads);
990 stats.syscalls_sock_writes =
XAVG(syscalls.sock.writes);
991 stats.syscalls_sock_recvfroms =
XAVG(syscalls.sock.recvfroms);
992 stats.syscalls_sock_sendtos =
XAVG(syscalls.sock.sendtos);
993 stats.syscalls_selects =
XAVG(syscalls.selects);
996 stats.wall_time = dt;
1003 (
int)
stats.sample_start_time.tv_sec,
1004 (
int)
stats.sample_start_time.tv_usec,
1007 (
int)
stats.sample_end_time.tv_sec,
1008 (
int)
stats.sample_end_time.tv_usec,
1012 stats.client_http_requests);
1014 stats.client_http_hits);
1016 stats.client_http_errors);
1018 stats.client_http_kbytes_in);
1020 stats.client_http_kbytes_out);
1022 double fct =
stats.count > 1 ?
stats.count : 1.0;
1024 stats.client_http_all_median_svc_time / fct);
1026 stats.client_http_miss_median_svc_time / fct);
1028 stats.client_http_nm_median_svc_time / fct);
1030 stats.client_http_nh_median_svc_time / fct);
1032 stats.client_http_hit_median_svc_time / fct);
1035 stats.server_all_requests);
1037 stats.server_all_errors);
1039 stats.server_all_kbytes_in);
1041 stats.server_all_kbytes_out);
1044 stats.server_http_requests);
1046 stats.server_http_errors);
1048 stats.server_http_kbytes_in);
1050 stats.server_http_kbytes_out);
1053 stats.server_ftp_requests);
1055 stats.server_ftp_errors);
1057 stats.server_ftp_kbytes_in);
1059 stats.server_ftp_kbytes_out);
1062 stats.server_other_requests);
1064 stats.server_other_errors);
1066 stats.server_other_kbytes_in);
1068 stats.server_other_kbytes_out);
1071 stats.icp_pkts_sent);
1073 stats.icp_pkts_recv);
1075 stats.icp_queries_sent);
1077 stats.icp_replies_sent);
1079 stats.icp_queries_recv);
1081 stats.icp_replies_recv);
1083 stats.icp_replies_queued);
1085 stats.icp_query_timeouts);
1087 stats.icp_kbytes_sent);
1089 stats.icp_kbytes_recv);
1091 stats.icp_q_kbytes_sent);
1093 stats.icp_r_kbytes_sent);
1095 stats.icp_q_kbytes_recv);
1097 stats.icp_r_kbytes_recv);
1099 stats.icp_query_median_svc_time / fct);
1101 stats.icp_reply_median_svc_time / fct);
1103 stats.dns_median_svc_time / fct);
1105 stats.unlink_requests);
1109 stats.select_loops);
1113 stats.average_select_fd_period / fct);
1115 stats.median_select_fds / fct);
1121 stats.swap_files_cleaned);
1123 stats.aborted_requests);
1126 stats.hitValidationAttempts);
1128 stats.hitValidationRefusalsDueToLocking);
1130 stats.hitValidationRefusalsDueToZeroSize);
1131 storeAppendPrintf(sentry,
"hit_validation.refusals.due_to_timeLimit = %f/sec\n",
1132 stats.hitValidationRefusalsDueToTimeLimit);
1134 stats.hitValidationFailures);
1138#elif defined(USE_SELECT) || defined(USE_SELECT_WIN32)
1192 "Client-side Active Requests",
1196 "Active Cached Usernames",
1203 statGraphDump, 0, 1);
1214 C->client_http.allSvcTime.logInit(300, 0.0, 3600000.0 * 3.0);
1215 C->client_http.missSvcTime.logInit(300, 0.0, 3600000.0 * 3.0);
1216 C->client_http.nearMissSvcTime.logInit(300, 0.0, 3600000.0 * 3.0);
1217 C->client_http.nearHitSvcTime.logInit(300, 0.0, 3600000.0 * 3.0);
1218 C->client_http.hitSvcTime.logInit(300, 0.0, 3600000.0 * 3.0);
1222 C->icp.querySvcTime.logInit(300, 0.0, 1000000.0 * 60.0);
1223 C->icp.replySvcTime.logInit(300, 0.0, 1000000.0 * 60.0);
1227 C->dns.svcTime.logInit(300, 0.0, 60000.0 * 10.0);
1235 C->select_fds_hist.enumInit(256);
1250 debugs(18, 5,
"statInit: Initializing...");
1297 debugs(18,
DBG_CRITICAL,
"WARNING: Median response time is " << i <<
" milliseconds");
1304 if (i > 0 && dt > 0.0) {
1314#if HAVE_MSTATS && HAVE_GNUMALLOC_H
1315 struct mstats ms = mstats();
1319 debugs(18,
DBG_CRITICAL,
"WARNING: Memory usage at " << ((
unsigned long int)(i >> 20)) <<
" MB");
1407#if USE_CACHE_DIGESTS
1440 (
int)
stats.sample_time.tv_sec,
1441 (
int)
stats.sample_time.tv_usec,
1444 stats.client_http_requests);
1446 stats.client_http_hits);
1448 stats.client_http_errors);
1450 stats.client_http_kbytes_in);
1452 stats.client_http_kbytes_out);
1454 stats.client_http_hit_kbytes_out);
1457 stats.server_all_requests);
1459 stats.server_all_errors);
1461 stats.server_all_kbytes_in);
1463 stats.server_all_kbytes_out);
1466 stats.server_http_requests);
1468 stats.server_http_errors);
1470 stats.server_http_kbytes_in);
1472 stats.server_http_kbytes_out);
1475 stats.server_ftp_requests);
1477 stats.server_ftp_errors);
1479 stats.server_ftp_kbytes_in);
1481 stats.server_ftp_kbytes_out);
1484 stats.server_other_requests);
1486 stats.server_other_errors);
1488 stats.server_other_kbytes_in);
1490 stats.server_other_kbytes_out);
1493 stats.icp_pkts_sent);
1495 stats.icp_pkts_recv);
1497 stats.icp_queries_sent);
1499 stats.icp_replies_sent);
1501 stats.icp_queries_recv);
1503 stats.icp_replies_recv);
1505 stats.icp_query_timeouts);
1507 stats.icp_replies_queued);
1509 stats.icp_kbytes_sent);
1511 stats.icp_kbytes_recv);
1513 stats.icp_q_kbytes_sent);
1515 stats.icp_r_kbytes_sent);
1517 stats.icp_q_kbytes_recv);
1519 stats.icp_r_kbytes_recv);
1521#if USE_CACHE_DIGESTS
1524 stats.icp_times_used);
1526 stats.cd_times_used);
1528 stats.cd_msgs_sent);
1530 stats.cd_msgs_recv);
1534 stats.cd_local_memory);
1536 stats.cd_kbytes_sent);
1538 stats.cd_kbytes_recv);
1542 stats.unlink_requests);
1546 stats.select_loops);
1556 stats.swap_files_cleaned);
1558 stats.aborted_requests);
1561 stats.hitValidationAttempts);
1563 stats.hitValidationRefusalsDueToLocking);
1565 stats.hitValidationRefusalsDueToZeroSize);
1567 stats.hitValidationRefusalsDueToTimeLimit);
1569 stats.hitValidationFailures);
1575#if USE_CACHE_DIGESTS
1581 static const SBuf label(
"all peers");
1604 storeAppendPrintf(sentry,
"peer digests are disabled; no stats is available.\n");
1673 debugs(49, 5,
"statPctileSvc: unknown type.");
1736#if USE_CACHE_DIGESTS
1744#if USE_CACHE_DIGESTS
1776 const char *p =
nullptr;
1782 if (
conn !=
nullptr) {
1783 const int fd =
conn->clientConnection->fd;
1788 conn->inBuf.rawContent(), (
long int)
conn->inBuf.length(), (
long int)
conn->inBuf.spaceSize());
1816 if (!p &&
conn !=
nullptr &&
conn->clientConnection->rfc931[0])
1817 p =
conn->clientConnection->rfc931;
1842#define GRAPH_PER_MIN(Y) \
1843 for (i=0;i<(N_COUNT_HIST-2);++i) { \
1844 dt = tvSubDsec(CountHist[i+1].timestamp, CountHist[i].timestamp); \
1847 storeAppendPrintf(e, "%lu,%0.2f:", \
1848 CountHist[i].timestamp.tv_sec, \
1849 ((CountHist[i].Y - CountHist[i+1].Y) / dt)); \
1852#define GRAPH_PER_HOUR(Y) \
1853 for (i=0;i<(N_COUNT_HOUR_HIST-2);++i) { \
1854 dt = tvSubDsec(CountHourHist[i+1].timestamp, CountHourHist[i].timestamp); \
1857 storeAppendPrintf(e, "%lu,%0.2f:", \
1858 CountHourHist[i].timestamp.tv_sec, \
1859 ((CountHourHist[i].Y - CountHourHist[i+1].Y) / dt)); \
1862#define GRAPH_TITLE(X,Y) storeAppendPrintf(e,"%s\t%s\t",X,Y);
1863#define GRAPH_END storeAppendPrintf(e,"\n");
1865#define GENGRAPH(X,Y,Z) \
1877 GENGRAPH(client_http.requests,
"client_http.requests",
"Client HTTP requests/sec");
1878 GENGRAPH(client_http.hits,
"client_http.hits",
"Client HTTP hits/sec");
1879 GENGRAPH(client_http.errors,
"client_http.errors",
"Client HTTP errors/sec");
1880 GENGRAPH(client_http.kbytes_in.kb,
"client_http.kbytes_in",
"Client HTTP kbytes_in/sec");
1881 GENGRAPH(client_http.kbytes_out.kb,
"client_http.kbytes_out",
"Client HTTP kbytes_out/sec");
1885 GENGRAPH(
server.all.requests,
"server.all.requests",
"Server requests/sec");
1886 GENGRAPH(
server.all.errors,
"server.all.errors",
"Server errors/sec");
1887 GENGRAPH(
server.all.kbytes_in.kb,
"server.all.kbytes_in",
"Server total kbytes_in/sec");
1888 GENGRAPH(
server.all.kbytes_out.kb,
"server.all.kbytes_out",
"Server total kbytes_out/sec");
1890 GENGRAPH(
server.http.requests,
"server.http.requests",
"Server HTTP requests/sec");
1891 GENGRAPH(
server.http.errors,
"server.http.errors",
"Server HTTP errors/sec");
1892 GENGRAPH(
server.http.kbytes_in.kb,
"server.http.kbytes_in",
"Server HTTP kbytes_in/sec");
1893 GENGRAPH(
server.http.kbytes_out.kb,
"server.http.kbytes_out",
"Server HTTP kbytes_out/sec");
1895 GENGRAPH(
server.ftp.requests,
"server.ftp.requests",
"Server FTP requests/sec");
1896 GENGRAPH(
server.ftp.errors,
"server.ftp.errors",
"Server FTP errors/sec");
1897 GENGRAPH(
server.ftp.kbytes_in.kb,
"server.ftp.kbytes_in",
"Server FTP kbytes_in/sec");
1898 GENGRAPH(
server.ftp.kbytes_out.kb,
"server.ftp.kbytes_out",
"Server FTP kbytes_out/sec");
1900 GENGRAPH(
server.other.requests,
"server.other.requests",
"Server other requests/sec");
1901 GENGRAPH(
server.other.errors,
"server.other.errors",
"Server other errors/sec");
1902 GENGRAPH(
server.other.kbytes_in.kb,
"server.other.kbytes_in",
"Server other kbytes_in/sec");
1903 GENGRAPH(
server.other.kbytes_out.kb,
"server.other.kbytes_out",
"Server other kbytes_out/sec");
1905 GENGRAPH(icp.pkts_sent,
"icp.pkts_sent",
"ICP packets sent/sec");
1906 GENGRAPH(icp.pkts_recv,
"icp.pkts_recv",
"ICP packets received/sec");
1907 GENGRAPH(icp.kbytes_sent.kb,
"icp.kbytes_sent",
"ICP kbytes_sent/sec");
1908 GENGRAPH(icp.kbytes_recv.kb,
"icp.kbytes_recv",
"ICP kbytes_received/sec");
1913 GENGRAPH(unlink.requests,
"unlink.requests",
"Cache File unlink requests/sec");
1914 GENGRAPH(page_faults,
"page_faults",
"System Page Faults/sec");
1915 GENGRAPH(select_loops,
"select_loops",
"System Select Loop calls/sec");
1916 GENGRAPH(cputime,
"cputime",
"CPU utilisation");
void cacheDigestGuessStatsReport(const CacheDigestGuessStats *stats, StoreEntry *sentry, const SBuf &label)
#define SQUIDSBUFPRINT(s)
double statHistDeltaMedian(const StatHist &A, const StatHist &B)
double statHistDeltaPctile(const StatHist &A, const StatHist &B, double pctile)
int conn
the current server connection FD
static char server[MAXLINE]
#define CBDATA_CLASS_INIT(type)
#define CBDATA_CLASS(type)
struct timeval start_time
The time the master transaction started.
class AccessLogEntry::CacheDetails cache
char const * username() const
static void CredentialsCacheStats(StoreEntry *output)
struct ClientHttpRequest::Out out
HttpRequest *const request
ConnStateData * getConn() const
size_t req_sz
raw request size on input, not current request size
StoreEntry * storeEntry() const
const LogTags & loggingTags() const
the processing tags associated with this request transaction.
const AccessLogEntry::Pointer al
access.log entry
static DelayId DelayClient(ClientHttpRequest *, HttpReply *reply=nullptr)
Auth::UserRequest::Pointer auth_user_request
static const int histSize
void append(const char *c, int sz) override
void init(mb_size_t szInit, mb_size_t szMax)
StoreIOState::Pointer sio
void stat(MemBuf *mb) const
ssize_t currentLevel() const
store traffic and resource counters
static Pointer Create(const CommandPointer &cmd)
static Pointer Create(const CommandPointer &cmd)
static Pointer Create60min(const CommandPointer &cmd)
static Pointer Create5min(const CommandPointer &cmd)
store size histograms of network read() from peer server
static Pointer Create(const CommandPointer &cmd)
store service times for 5 and 60 min
static Pointer Create(const CommandPointer &cmd)
void appendf(const char *fmt,...) PRINTF_FORMAT_ARG2
Append operation with printf-style arguments.
struct SquidConfig::@116 warnings
struct SquidConfig::@106 onoff
struct SquidConfig::@104 Store
struct StatCounters::@127 unlink
struct StatCounters::@129 cd
struct StatCounters::@124 server
CacheDigestGuessStats guess
ByteCounter r_kbytes_sent
struct StatCounters::@124::@134 ftp
struct StatCounters::@132 swap
unsigned long int select_loops
uint64_t refusalsDueToZeroSize
uint64_t refusalsDueToTimeLimit
struct StatCounters::@125 icp
ByteCounter q_kbytes_sent
struct StatCounters::@123 client_http
struct StatCounters::@124::@134 all
ByteCounter q_kbytes_recv
struct StatCounters::@124::@134 other
struct StatCounters::@124::@134 http
ByteCounter r_kbytes_recv
struct StatCounters::@128 dns
ByteCounter hit_kbytes_out
struct StatCounters::@133 hitValidation
struct StatCounters::@126 htcp
uint64_t refusalsDueToLocking
void dump(StoreEntry *sentry, StatHistBinDumper *bd) const
StoreSearchPointer theSearch
int locks() const
returns a local concurrent use counter, for debugging
int unlock(const char *context)
swap_status_t swap_status
void lock(const char *context)
bool checkDeferRead(int fd) const
const char * describeTimestamps() const
const char * getMD5Text() const
sfileno swap_filen
unique ID inside a cache_dir for swapped out entries; -1 for others
ping_status_t ping_status
void append(char const *, int) override
Appends a c-string to existing packed data.
store_status_t store_status
virtual StoreEntry * currentItem()=0
virtual bool isDone() const =0
void getStats(StoreInfoStats &stats) const override
collect statistics
char const * termedBuf() const
static void DumpStats(StoreEntry *)
#define debugs(SECTION, LEVEL, CONTENT)
#define N_COUNT_HOUR_HIST
#define EBIT_TEST(flag, bit)
dlink_list ClientActiveRequests
@ RELEASE_REQUEST
prohibits making the key public
@ ENTRY_REVALIDATE_ALWAYS
void eventAdd(const char *name, EVH *func, void *arg, double when, int weight, bool cbdata)
const char * swapStatusStr[]
struct timeval squid_start
const char * pingStatusStr[]
int CacheDigestHashFuncCount
const char * memStatusStr[]
const char * version_string
CacheDigest * store_digest
const char * storeStatusStr[]
double request_failure_ratio
const char * sslGetUserEmail(SSL *ssl)
#define MAX_IPSTRLEN
Length of buffer that needs to be allocated to old a null-terminated IP-string.
bool IsConnOpen(const Comm::ConnectionPointer &conn)
double doublePercent(const double, const double)
size_t GlobalStats(PoolStats &)
void RegisterAction(char const *action, char const *desc, OBJH *handler, int pw_req_flag, int atomic)
class Ping::pingStats_ stats
Controller & Root()
safely access controller singleton
const char * FormatRfc1123(time_t)
CachePeer * getNextPeer(CachePeer *p)
CachePeer * getFirstPeer(void)
void peerDigestStatsReport(const PeerDigest *pd, StoreEntry *e)
#define LOCAL_ARRAY(type, name, size)
static int statObjectsOpenfdFilter(const StoreEntry *e)
static double statPctileSvc(double, int, int)
unsigned int mem_pool_alloc_calls
static OBJH statClientRequests
int stat5minClientRequests(void)
void DumpInfo(Mgr::InfoActionData &stats, StoreEntry *sentry)
void GetInfo(Mgr::InfoActionData &stats)
static OBJH stat_objects_get
static void statAvgDump(StoreEntry *, int minutes, int hours)
void GetServiceTimesStats(Mgr::ServiceTimesActionData &stats)
StatCounters * snmpStatGet(int minutes)
double statRequestHitMemoryRatio(int minutes)
static OBJH stat_vmobjects_get
static void statRegisterWithCacheManager(void)
static OBJH statDigestBlob
static OBJH statUtilization
void DumpServiceTimesStats(Mgr::ServiceTimesActionData &stats, StoreEntry *sentry)
static void statObjectsStart(StoreEntry *sentry, STOBJFLT *filter)
double statRequestHitRatio(int minutes)
static void statCountersInit(StatCounters *C)
void GetAvgStat(Mgr::IntervalActionData &stats, int minutes, int hours)
static StatCounters CountHourHist[N_COUNT_HOUR_HIST]
static OBJH statCountersHistograms
void GetIoStats(Mgr::IoActionData &stats)
double statByteHitRatio(int minutes)
StatCounters CountHist[N_COUNT_HIST]
static OBJH statPeerSelect
void DumpIoStats(Mgr::IoActionData &stats, StoreEntry *sentry)
int STOBJFLT(const StoreEntry *)
static void statStoreEntry(MemBuf *mb, StoreEntry *e)
static int statObjectsVmFilter(const StoreEntry *e)
double statRequestHitDiskRatio(int minutes)
void GetCountersStats(Mgr::CountersActionData &stats)
void DumpMallocStatistics(StoreEntry *sentry)
static void statCountersInitSpecial(StatCounters *C)
static int NCountHourHist
const char * storeEntryFlags(const StoreEntry *entry)
void DumpAvgStat(Mgr::IntervalActionData &stats, StoreEntry *sentry)
void DumpCountersStats(Mgr::CountersActionData &stats, StoreEntry *sentry)
static OBJH statOpenfdObj
static const char * describeStatuses(const StoreEntry *)
static void statAvgTick(void *notused)
static double statCPUUsage(int minutes)
static OBJH statCountersDump
unsigned int mem_pool_free_calls
void storeAppendPrintf(StoreEntry *e, const char *fmt,...)
int storePendingNClients(const StoreEntry *e)
void storeDigestReport(StoreEntry *e)
uint64_t size
Response header and body bytes written to the client connection.
double current_dtime
the current UNIX time in seconds (with microsecond precision)
double tvSubDsec(struct timeval t1, struct timeval t2)
struct timeval current_time
the current UNIX time in timeval {seconds, microseconds} format
SQUIDCEXTERN int xpercentInt(double part, double whole)
SQUIDCEXTERN double xdiv(double nom, double denom)