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
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;
38 client_http_clients += stats.client_http_clients;
39 client_http_requests += stats.client_http_requests;
40 icp_pkts_recv += stats.icp_pkts_recv;
41 icp_pkts_sent += stats.icp_pkts_sent;
42 icp_replies_queued += stats.icp_replies_queued;
43#if USE_HTCP
44 htcp_pkts_recv += stats.htcp_pkts_recv;
45 htcp_pkts_sent += stats.htcp_pkts_sent;
46#endif
47 request_failure_ratio += stats.request_failure_ratio;
48 avg_client_http_requests += stats.avg_client_http_requests;
49 avg_icp_messages += stats.avg_icp_messages;
50 select_loops += stats.select_loops;
51 avg_loop_time += stats.avg_loop_time;
52 request_hit_ratio5 += stats.request_hit_ratio5;
53 request_hit_ratio60 += stats.request_hit_ratio60;
54 byte_hit_ratio5 += stats.byte_hit_ratio5;
55 byte_hit_ratio60 += stats.byte_hit_ratio60;
56 request_hit_mem_ratio5 += stats.request_hit_mem_ratio5;
57 request_hit_mem_ratio60 += stats.request_hit_mem_ratio60;
58 request_hit_disk_ratio5 += stats.request_hit_disk_ratio5;
59 request_hit_disk_ratio60 += stats.request_hit_disk_ratio60;
60
61 store += stats.store;
62
63 unlink_requests += stats.unlink_requests;
64 http_requests5 += stats.http_requests5;
65 http_requests60 += stats.http_requests60;
66 cache_misses5 += stats.cache_misses5;
67 cache_misses60 += stats.cache_misses60;
68 cache_hits5 += stats.cache_hits5;
69 cache_hits60 += stats.cache_hits60;
70 near_hits5 += stats.near_hits5;
71 near_hits60 += stats.near_hits60;
72 not_modified_replies5 += stats.not_modified_replies5;
73 not_modified_replies60 += stats.not_modified_replies60;
74 dns_lookups5 += stats.dns_lookups5;
75 dns_lookups60 += stats.dns_lookups60;
76 icp_queries5 += stats.icp_queries5;
77 icp_queries60 += stats.icp_queries60;
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
90 total_accounted += stats.total_accounted;
91 gb_saved_count += stats.gb_saved_count;
92 gb_freed_count += stats.gb_freed_count;
93 max_fd += stats.max_fd;
94 biggest_fd = max(biggest_fd, stats.biggest_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
116void
118{
119 debugs(16, 5, MYNAME);
120 data += dynamic_cast<const InfoAction&>(action).data;
121}
122
123void
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
133void
135{
136 GetInfo(data);
137}
138
139void
141{
142 debugs(16, 5, MYNAME);
143 Must(entry != nullptr);
144
145#if XMALLOC_STATISTICS
146 if (UsingSmp())
147 storeAppendPrintf(entry, "by kid%d {\n", KidIdentifier);
149 if (UsingSmp())
150 storeAppendPrintf(entry, "} by kid%d\n\n", KidIdentifier);
151#endif
152 if (IamPrimaryProcess())
153 DumpInfo(data, entry);
154}
155
156void
158{
160 msg.putPod(data);
161}
162
163void
165{
167 msg.getPod(data);
168}
169
void DumpInfo(Mgr::InfoActionData &stats, StoreEntry *sentry)
Definition: stat.cc:554
void GetInfo(Mgr::InfoActionData &stats)
Definition: stat.cc:431
void DumpMallocStatistics(StoreEntry *sentry)
Definition: stat.cc:764
#define Must(condition)
Definition: TextException.h:75
static void Start(const Pointer &job)
Definition: AsyncJob.cc:37
RequestId requestId
matches the request[or] with the response
Definition: Request.h:38
struct msghdr with a known type, fixed-size I/O and control buffers
Definition: TypedMsgHdr.h:35
void getPod(Pod &pod) const
load POD
Definition: TypedMsgHdr.h:118
void checkType(int aType) const
Definition: TypedMsgHdr.cc:94
void putPod(const Pod &pod)
store POD
Definition: TypedMsgHdr.h:126
void setType(int aType)
sets message type; use MessageType enum
Definition: TypedMsgHdr.cc:100
provides Coordinator with a local cache manager response
Definition: Filler.h:24
double avg_icp_messages
Definition: InfoAction.h:41
double client_http_clients
Definition: InfoAction.h:30
double not_modified_replies60
Definition: InfoAction.h:65
double request_hit_mem_ratio5
Definition: InfoAction.h:48
double request_hit_disk_ratio60
Definition: InfoAction.h:51
double request_hit_mem_ratio60
Definition: InfoAction.h:49
double request_failure_ratio
Definition: InfoAction.h:39
double request_hit_ratio60
Definition: InfoAction.h:45
double avg_client_http_requests
Definition: InfoAction.h:40
double request_hit_ratio5
Definition: InfoAction.h:44
double client_http_requests
Definition: InfoAction.h:31
struct timeval squid_start
Definition: InfoAction.h:28
double not_modified_replies5
Definition: InfoAction.h:64
double byte_hit_ratio5
Definition: InfoAction.h:46
double unlink_requests
Definition: InfoAction.h:55
double icp_replies_queued
Definition: InfoAction.h:34
double request_hit_disk_ratio5
Definition: InfoAction.h:50
double byte_hit_ratio60
Definition: InfoAction.h:47
StoreInfoStats store
disk and memory cache statistics
Definition: InfoAction.h:53
struct timeval current_time
Definition: InfoAction.h:29
double total_accounted
Definition: InfoAction.h:81
double http_requests60
Definition: InfoAction.h:57
unsigned int count
Definition: InfoAction.h:90
InfoActionData & operator+=(const InfoActionData &stats)
Definition: InfoAction.cc:32
implement aggregated 'info' action
Definition: InfoAction.h:95
static Pointer Create(const CommandPointer &cmd)
Definition: InfoAction.cc:105
void dump(StoreEntry *entry) override
Definition: InfoAction.cc:140
void respond(const Request &request) override
respond to Coordinator request; default is to collect and sendResponse
Definition: InfoAction.cc:124
void pack(Ipc::TypedMsgHdr &msg) const override
pack collected action info into a message to be sent to Coordinator
Definition: InfoAction.cc:157
InfoAction(const CommandPointer &cmd)
Definition: InfoAction.cc:110
void add(const Action &action) override
incrementally merge in remote information (of the same action type)
Definition: InfoAction.cc:117
void unpack(const Ipc::TypedMsgHdr &msg) override
unpack action info from the message received by Coordinator
Definition: InfoAction.cc:164
void collect() override
calculate and keep local action-specific information
Definition: InfoAction.cc:134
cache manager request
Definition: Request.h:24
Comm::ConnectionPointer conn
HTTP client connection descriptor.
Definition: Request.h:35
A const & max(A const &lhs, A const &rhs)
#define MYNAME
Definition: Stream.h:236
#define debugs(SECTION, LEVEL, CONTENT)
Definition: Stream.h:194
int KidIdentifier
bool IsConnOpen(const Comm::ConnectionPointer &conn)
Definition: Connection.cc:27
@ fdnHttpSocket
Definition: FdNotes.h:20
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
@ mtCacheMgrResponse
Definition: Messages.h:36
class Ping::pingStats_ stats
static bool action(int fd, size_t metasize, const char *fn, const char *url, const SquidMetaList &meta)
Definition: purge.cc:315
#define timerisset(tvp)
Definition: snmp_api_util.h:85
#define timercmp(tvp, uvp, cmp)
Definition: snmp_api_util.h:76
void storeAppendPrintf(StoreEntry *e, const char *fmt,...)
Definition: store.cc:841
bool IamPrimaryProcess()
Definition: tools.cc:708
bool UsingSmp()
Whether there should be more than one worker process running.
Definition: tools.cc:696

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors