2 * Copyright (C) 1996-2022 The Squid Software Foundation and contributors
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.
9 /* DEBUG: section 16 Cache Manager API */
12 #include "base/TextException.h"
13 #include "ipc/Messages.h"
14 #include "ipc/TypedMsgHdr.h"
15 #include "mgr/CountersAction.h"
19 void GetCountersStats(Mgr::CountersActionData
& stats
);
20 void DumpCountersStats(Mgr::CountersActionData
& stats
, StoreEntry
* sentry
);
22 Mgr::CountersActionData::CountersActionData()
24 memset(this, 0, sizeof(*this));
27 Mgr::CountersActionData
&
28 Mgr::CountersActionData::operator += (const CountersActionData
& stats
)
30 if (timercmp(&sample_time
, &stats
.sample_time
, <))
31 sample_time
= stats
.sample_time
;
32 client_http_requests
+= stats
.client_http_requests
;
33 client_http_hits
+= stats
.client_http_hits
;
34 client_http_errors
+= stats
.client_http_errors
;
35 client_http_kbytes_in
+= stats
.client_http_kbytes_in
;
36 client_http_kbytes_out
+= stats
.client_http_kbytes_out
;
37 client_http_hit_kbytes_out
+= stats
.client_http_hit_kbytes_out
;
38 server_all_requests
+= stats
.server_all_requests
;
39 server_all_errors
+= stats
.server_all_errors
;
40 server_all_kbytes_in
+= stats
.server_all_kbytes_in
;
41 server_all_kbytes_out
+= stats
.server_all_kbytes_out
;
42 server_http_requests
+= stats
.server_http_requests
;
43 server_http_errors
+= stats
.server_http_errors
;
44 server_http_kbytes_in
+= stats
.server_http_kbytes_in
;
45 server_http_kbytes_out
+= stats
.server_http_kbytes_out
;
46 server_ftp_requests
+= stats
.server_ftp_requests
;
47 server_ftp_errors
+= stats
.server_ftp_errors
;
48 server_ftp_kbytes_in
+= stats
.server_ftp_kbytes_in
;
49 server_ftp_kbytes_out
+= stats
.server_ftp_kbytes_out
;
50 server_other_requests
+= stats
.server_other_requests
;
51 server_other_errors
+= stats
.server_other_errors
;
52 server_other_kbytes_in
+= stats
.server_other_kbytes_in
;
53 server_other_kbytes_out
+= stats
.server_other_kbytes_out
;
54 icp_pkts_sent
+= stats
.icp_pkts_sent
;
55 icp_pkts_recv
+= stats
.icp_pkts_recv
;
56 icp_queries_sent
+= stats
.icp_queries_sent
;
57 icp_replies_sent
+= stats
.icp_replies_sent
;
58 icp_queries_recv
+= stats
.icp_queries_recv
;
59 icp_replies_recv
+= stats
.icp_replies_recv
;
60 icp_replies_queued
+= stats
.icp_replies_queued
;
61 icp_query_timeouts
+= stats
.icp_query_timeouts
;
62 icp_kbytes_sent
+= stats
.icp_kbytes_sent
;
63 icp_kbytes_recv
+= stats
.icp_kbytes_recv
;
64 icp_q_kbytes_sent
+= stats
.icp_q_kbytes_sent
;
65 icp_r_kbytes_sent
+= stats
.icp_r_kbytes_sent
;
66 icp_q_kbytes_recv
+= stats
.icp_q_kbytes_recv
;
67 icp_r_kbytes_recv
+= stats
.icp_r_kbytes_recv
;
69 icp_times_used
+= stats
.icp_times_used
;
70 cd_times_used
+= stats
.cd_times_used
;
71 cd_msgs_sent
+= stats
.cd_msgs_sent
;
72 cd_msgs_recv
+= stats
.cd_msgs_recv
;
73 cd_memory
+= stats
.cd_memory
;
74 cd_local_memory
+= stats
.cd_local_memory
;
75 cd_kbytes_sent
+= stats
.cd_kbytes_sent
;
76 cd_kbytes_recv
+= stats
.cd_kbytes_recv
;
78 unlink_requests
+= stats
.unlink_requests
;
79 page_faults
+= stats
.page_faults
;
80 select_loops
+= stats
.select_loops
;
81 cpu_time
+= stats
.cpu_time
;
82 wall_time
+= stats
.wall_time
;
83 swap_outs
+= stats
.swap_outs
;
84 swap_ins
+= stats
.swap_ins
;
85 swap_files_cleaned
+= stats
.swap_files_cleaned
;
86 aborted_requests
+= stats
.aborted_requests
;
87 hitValidationAttempts
+= stats
.hitValidationAttempts
;
88 hitValidationRefusalsDueToLocking
+= stats
.hitValidationRefusalsDueToLocking
;
89 hitValidationRefusalsDueToZeroSize
+= stats
.hitValidationRefusalsDueToZeroSize
;
90 hitValidationRefusalsDueToTimeLimit
+= stats
.hitValidationRefusalsDueToTimeLimit
;
91 hitValidationFailures
+= stats
.hitValidationFailures
;
96 Mgr::CountersAction::Pointer
97 Mgr::CountersAction::Create(const CommandPointer
&cmd
)
99 return new CountersAction(cmd
);
102 Mgr::CountersAction::CountersAction(const CommandPointer
&aCmd
):
105 debugs(16, 5, MYNAME
);
109 Mgr::CountersAction::add(const Action
& action
)
111 debugs(16, 5, MYNAME
);
112 data
+= dynamic_cast<const CountersAction
&>(action
).data
;
116 Mgr::CountersAction::collect()
118 debugs(16, 5, MYNAME
);
119 GetCountersStats(data
);
123 Mgr::CountersAction::dump(StoreEntry
* entry
)
125 debugs(16, 5, MYNAME
);
126 Must(entry
!= nullptr);
127 DumpCountersStats(data
, entry
);
131 Mgr::CountersAction::pack(Ipc::TypedMsgHdr
& msg
) const
133 msg
.setType(Ipc::mtCacheMgrResponse
);
138 Mgr::CountersAction::unpack(const Ipc::TypedMsgHdr
& msg
)
140 msg
.checkType(Ipc::mtCacheMgrResponse
);