InfoAction.cc
Go to the documentation of this file.
1 /*
2  * Copyright (C) 1996-2023 The Squid Software Foundation and contributors
3  *
4  * Squid software is distributed under GPLv2+ license and includes
5  * contributions from numerous individuals and organizations.
6  * Please see the COPYING and CONTRIBUTORS files for details.
7  */
8 
9 /* DEBUG: section 16 Cache Manager API */
10 
11 #include "squid.h"
12 #include "base/TextException.h"
13 #include "comm/Connection.h"
14 #include "globals.h"
15 #include "HttpReply.h"
16 #include "ipc/Messages.h"
17 #include "ipc/RequestId.h"
18 #include "ipc/TypedMsgHdr.h"
19 #include "ipc/UdsOp.h"
20 #include "mgr/Filler.h"
21 #include "mgr/InfoAction.h"
22 #include "mgr/Request.h"
23 #include "mgr/Response.h"
24 #include "Store.h"
25 #include "tools.h"
26 
27 void GetInfo(Mgr::InfoActionData& stats);
28 void DumpInfo(Mgr::InfoActionData& stats, StoreEntry* sentry);
29 void DumpMallocStatistics(StoreEntry* sentry);
30 
33 {
34  if (!timerisset(&squid_start) || timercmp(&squid_start, &stats.squid_start, >))
35  squid_start = stats.squid_start;
36  if (timercmp(&current_time, &stats.current_time, <))
37  current_time = stats.current_time;
43 #if USE_HTCP
46 #endif
50  select_loops += stats.select_loops;
60 
61  store += stats.store;
62 
68  cache_hits5 += stats.cache_hits5;
69  cache_hits60 += stats.cache_hits60;
70  near_hits5 += stats.near_hits5;
71  near_hits60 += stats.near_hits60;
74  dns_lookups5 += stats.dns_lookups5;
76  icp_queries5 += stats.icp_queries5;
78  if (stats.up_time > up_time)
79  up_time = stats.up_time;
80  cpu_time += stats.cpu_time;
81  cpu_usage += stats.cpu_usage;
82  cpu_usage5 += stats.cpu_usage5;
83  cpu_usage60 += stats.cpu_usage60;
84  maxrss += stats.maxrss;
85  page_faults += stats.page_faults;
86 #if HAVE_MSTATS && HAVE_GNUMALLOC_H
87  ms_bytes_total += stats.ms_bytes_total;
88  ms_bytes_free += stats.ms_bytes_free;
89 #endif
93  max_fd += stats.max_fd;
95  number_fd += stats.number_fd;
96  opening_fd += stats.opening_fd;
97  num_fd_free += stats.num_fd_free;
98  reserved_fd += stats.reserved_fd;
99  ++count;
100 
101  return *this;
102 }
103 
106 {
107  return new InfoAction(cmd);
108 }
109 
111  Action(aCmd), data()
112 {
113  debugs(16, 5, MYNAME);
114 }
115 
116 void
118 {
119  debugs(16, 5, MYNAME);
120  data += dynamic_cast<const InfoAction&>(action).data;
121 }
122 
123 void
125 {
126  debugs(16, 5, MYNAME);
127  Ipc::ImportFdIntoComm(request.conn, SOCK_STREAM, IPPROTO_TCP, Ipc::fdnHttpSocket);
128  Must(Comm::IsConnOpen(request.conn));
129  Must(request.requestId != 0);
130  AsyncJob::Start(new Mgr::Filler(this, request.conn, request.requestId));
131 }
132 
133 void
135 {
136  GetInfo(data);
137 }
138 
139 void
141 {
142  debugs(16, 5, MYNAME);
143  Must(entry != nullptr);
144 
145 #if XMALLOC_STATISTICS
146  // TODO: Move these stats into a new dedicated report.
148  DumpMallocStatistics(entry);
150 #endif
151  if (IamPrimaryProcess())
152  DumpInfo(data, entry);
153 }
154 
155 void
157 {
159  msg.putPod(data);
160 }
161 
162 void
164 {
166  msg.getPod(data);
167 }
168 
void GetInfo(Mgr::InfoActionData &stats)
Definition: stat.cc:430
void pack(Ipc::TypedMsgHdr &msg) const override
pack collected action info into a message to be sent to Coordinator
Definition: InfoAction.cc:156
void OpenKidSection(StoreEntry *, Format)
Definition: Action.cc:143
double request_hit_mem_ratio60
Definition: InfoAction.h:49
RequestId requestId
matches the request[or] with the response
Definition: Request.h:38
void setType(int aType)
sets message type; use MessageType enum
Definition: TypedMsgHdr.cc:100
void checkType(int aType) const
Definition: TypedMsgHdr.cc:94
double request_hit_disk_ratio60
Definition: InfoAction.h:51
@ mtCacheMgrResponse
Definition: Messages.h:36
double byte_hit_ratio60
Definition: InfoAction.h:47
const A & max(A const &lhs, A const &rhs)
InfoActionData & operator+=(const InfoActionData &stats)
Definition: InfoAction.cc:32
bool IsConnOpen(const Comm::ConnectionPointer &conn)
Definition: Connection.cc:27
double unlink_requests
Definition: InfoAction.h:55
void CloseKidSection(StoreEntry *, Format)
Definition: Action.cc:155
double icp_replies_queued
Definition: InfoAction.h:34
void unpack(const Ipc::TypedMsgHdr &msg) override
unpack action info from the message received by Coordinator
Definition: InfoAction.cc:163
void collect() override
calculate and keep local action-specific information
Definition: InfoAction.cc:134
#define timerisset(tvp)
Definition: snmp_api_util.h:85
#define timercmp(tvp, uvp, cmp)
Definition: snmp_api_util.h:76
void putPod(const Pod &pod)
store POD
Definition: TypedMsgHdr.h:126
InfoAction(const CommandPointer &cmd)
Definition: InfoAction.cc:110
unsigned int count
Definition: InfoAction.h:90
cache manager request
Definition: Request.h:23
double request_hit_ratio60
Definition: InfoAction.h:45
implement aggregated 'info' action
Definition: InfoAction.h:94
double client_http_requests
Definition: InfoAction.h:31
void add(const Action &action) override
incrementally merge in remote information (of the same action type)
Definition: InfoAction.cc:117
double client_http_clients
Definition: InfoAction.h:30
void dump(StoreEntry *entry) override
Definition: InfoAction.cc:140
double avg_icp_messages
Definition: InfoAction.h:41
double avg_client_http_requests
Definition: InfoAction.h:40
@ fdnHttpSocket
Definition: FdNotes.h:20
double request_failure_ratio
Definition: InfoAction.h:39
double http_requests60
Definition: InfoAction.h:57
double request_hit_ratio5
Definition: InfoAction.h:44
struct timeval current_time
Definition: InfoAction.h:29
double not_modified_replies60
Definition: InfoAction.h:65
StoreInfoStats store
disk and memory cache statistics
Definition: InfoAction.h:53
double total_accounted
Definition: InfoAction.h:81
static Pointer Create(const CommandPointer &cmd)
Definition: InfoAction.cc:105
#define Must(condition)
Definition: TextException.h:75
double byte_hit_ratio5
Definition: InfoAction.h:46
struct timeval squid_start
Definition: InfoAction.h:28
double not_modified_replies5
Definition: InfoAction.h:64
double request_hit_disk_ratio5
Definition: InfoAction.h:50
struct msghdr with a known type, fixed-size I/O and control buffers
Definition: TypedMsgHdr.h:34
#define MYNAME
Definition: Stream.h:219
provides Coordinator with a local cache manager response
Definition: Filler.h:23
double request_hit_mem_ratio5
Definition: InfoAction.h:48
const Comm::ConnectionPointer & ImportFdIntoComm(const Comm::ConnectionPointer &conn, int socktype, int protocol, FdNoteId noteId)
import socket fd from another strand into our Comm state
Definition: UdsOp.cc:194
void DumpMallocStatistics(StoreEntry *sentry)
Definition: stat.cc:763
void getPod(Pod &pod) const
load POD
Definition: TypedMsgHdr.h:118
#define debugs(SECTION, LEVEL, CONTENT)
Definition: Stream.h:192
void DumpInfo(Mgr::InfoActionData &stats, StoreEntry *sentry)
Definition: stat.cc:553
void respond(const Request &request) override
respond to Coordinator request; default is to collect and sendResponse
Definition: InfoAction.cc:124
bool IamPrimaryProcess()
Definition: tools.cc:708
static void Start(const Pointer &job)
Definition: AsyncJob.cc:37
Comm::ConnectionPointer conn
HTTP client connection descriptor.
Definition: Request.h:35

 

Introduction

Documentation

Support

Miscellaneous