Squid Web Cache
master
Loading...
Searching...
No Matches
IntervalAction.cc
Go to the documentation of this file.
1
/*
2
* Copyright (C) 1996-2025 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 "
ipc/Messages.h
"
14
#include "
ipc/TypedMsgHdr.h
"
15
#include "
mgr/IntervalAction.h
"
16
#include "
SquidMath.h
"
17
#include "
Store.h
"
18
#include "tools.h"
19
20
void
GetAvgStat
(
Mgr::IntervalActionData
& stats,
int
minutes,
int
hours);
21
void
DumpAvgStat
(
Mgr::IntervalActionData
& stats,
StoreEntry
* sentry);
22
23
Mgr::IntervalActionData::IntervalActionData
()
24
{
25
memset(
this
, 0,
sizeof
(*
this
));
26
}
27
28
Mgr::IntervalActionData
&
29
Mgr::IntervalActionData::operator +=
(
const
IntervalActionData
& stats)
30
{
31
if
(!
timerisset
(&sample_start_time) ||
timercmp
(&sample_start_time, &stats.
sample_start_time
, >))
32
sample_start_time = stats.
sample_start_time
;
33
if
(
timercmp
(&sample_end_time, &stats.
sample_end_time
, <))
34
sample_end_time = stats.
sample_end_time
;
35
client_http_requests += stats.
client_http_requests
;
36
client_http_hits += stats.
client_http_hits
;
37
client_http_errors += stats.
client_http_errors
;
38
client_http_kbytes_in += stats.
client_http_kbytes_in
;
39
client_http_kbytes_out += stats.
client_http_kbytes_out
;
40
client_http_all_median_svc_time += stats.
client_http_all_median_svc_time
;
41
client_http_miss_median_svc_time += stats.
client_http_miss_median_svc_time
;
42
client_http_nm_median_svc_time += stats.
client_http_nm_median_svc_time
;
43
client_http_nh_median_svc_time += stats.
client_http_nh_median_svc_time
;
44
client_http_hit_median_svc_time += stats.
client_http_hit_median_svc_time
;
45
server_all_requests += stats.
server_all_requests
;
46
server_all_errors += stats.
server_all_errors
;
47
server_all_kbytes_in += stats.
server_all_kbytes_in
;
48
server_all_kbytes_out += stats.
server_all_kbytes_out
;
49
server_http_requests += stats.
server_http_requests
;
50
server_http_errors += stats.
server_http_errors
;
51
server_http_kbytes_in += stats.
server_http_kbytes_in
;
52
server_http_kbytes_out += stats.
server_http_kbytes_out
;
53
server_ftp_requests += stats.
server_ftp_requests
;
54
server_ftp_errors += stats.
server_ftp_errors
;
55
server_ftp_kbytes_in += stats.
server_ftp_kbytes_in
;
56
server_ftp_kbytes_out += stats.
server_ftp_kbytes_out
;
57
server_other_requests += stats.
server_other_requests
;
58
server_other_errors += stats.
server_other_errors
;
59
server_other_kbytes_in += stats.
server_other_kbytes_in
;
60
server_other_kbytes_out += stats.
server_other_kbytes_out
;
61
icp_pkts_sent += stats.
icp_pkts_sent
;
62
icp_pkts_recv += stats.
icp_pkts_recv
;
63
icp_queries_sent += stats.
icp_queries_sent
;
64
icp_replies_sent += stats.
icp_replies_sent
;
65
icp_queries_recv += stats.
icp_queries_recv
;
66
icp_replies_recv += stats.
icp_replies_recv
;
67
icp_replies_queued += stats.
icp_replies_queued
;
68
icp_query_timeouts += stats.
icp_query_timeouts
;
69
icp_kbytes_sent += stats.
icp_kbytes_sent
;
70
icp_kbytes_recv += stats.
icp_kbytes_recv
;
71
icp_q_kbytes_sent += stats.
icp_q_kbytes_sent
;
72
icp_r_kbytes_sent += stats.
icp_r_kbytes_sent
;
73
icp_q_kbytes_recv += stats.
icp_q_kbytes_recv
;
74
icp_r_kbytes_recv += stats.
icp_r_kbytes_recv
;
75
icp_query_median_svc_time += stats.
icp_query_median_svc_time
;
76
icp_reply_median_svc_time += stats.
icp_reply_median_svc_time
;
77
dns_median_svc_time += stats.
dns_median_svc_time
;
78
unlink_requests += stats.
unlink_requests
;
79
page_faults += stats.
page_faults
;
80
select_loops += stats.
select_loops
;
81
select_fds += stats.
select_fds
;
82
average_select_fd_period += stats.
average_select_fd_period
;
83
median_select_fds += stats.
median_select_fds
;
84
swap_outs += stats.
swap_outs
;
85
swap_ins += stats.
swap_ins
;
86
swap_files_cleaned += stats.
swap_files_cleaned
;
87
aborted_requests += stats.
aborted_requests
;
88
hitValidationAttempts += stats.
hitValidationAttempts
;
89
hitValidationRefusalsDueToLocking += stats.
hitValidationRefusalsDueToLocking
;
90
hitValidationRefusalsDueToZeroSize += stats.
hitValidationRefusalsDueToZeroSize
;
91
hitValidationRefusalsDueToTimeLimit += stats.
hitValidationRefusalsDueToTimeLimit
;
92
hitValidationFailures += stats.
hitValidationFailures
;
93
syscalls_disk_opens += stats.
syscalls_disk_opens
;
94
syscalls_disk_closes += stats.
syscalls_disk_closes
;
95
syscalls_disk_reads += stats.
syscalls_disk_reads
;
96
syscalls_disk_writes += stats.
syscalls_disk_writes
;
97
syscalls_disk_seeks += stats.
syscalls_disk_seeks
;
98
syscalls_disk_unlinks += stats.
syscalls_disk_unlinks
;
99
syscalls_sock_accepts += stats.
syscalls_sock_accepts
;
100
syscalls_sock_sockets += stats.
syscalls_sock_sockets
;
101
syscalls_sock_connects += stats.
syscalls_sock_connects
;
102
syscalls_sock_binds += stats.
syscalls_sock_binds
;
103
syscalls_sock_closes += stats.
syscalls_sock_closes
;
104
syscalls_sock_reads += stats.
syscalls_sock_reads
;
105
syscalls_sock_writes += stats.
syscalls_sock_writes
;
106
syscalls_sock_recvfroms += stats.
syscalls_sock_recvfroms
;
107
syscalls_sock_sendtos += stats.
syscalls_sock_sendtos
;
108
syscalls_selects += stats.
syscalls_selects
;
109
cpu_time += stats.
cpu_time
;
110
wall_time += stats.
wall_time
;
111
++count;
112
113
return
*
this
;
114
}
115
116
Mgr::IntervalAction::Pointer
117
Mgr::IntervalAction::Create5min
(
const
CommandPointer
&cmd)
118
{
119
return
new
IntervalAction
(cmd, 5, 0);
120
}
121
122
Mgr::IntervalAction::Pointer
123
Mgr::IntervalAction::Create60min
(
const
CommandPointer
&cmd)
124
{
125
return
new
IntervalAction
(cmd, 60, 0);
126
}
127
128
Mgr::IntervalAction::IntervalAction
(
const
CommandPointer
&aCmd,
int
aMinutes,
int
aHours):
129
Action
(aCmd), minutes(aMinutes), hours(aHours), data()
130
{
131
debugs
(16, 5,
MYNAME
);
132
}
133
134
void
135
Mgr::IntervalAction::add
(
const
Action
& action)
136
{
137
debugs
(16, 5,
MYNAME
);
138
data +=
dynamic_cast<
const
IntervalAction
&
>
(action).data;
139
}
140
141
void
142
Mgr::IntervalAction::collect
()
143
{
144
GetAvgStat
(data, minutes, hours);
145
}
146
147
void
148
Mgr::IntervalAction::dump
(
StoreEntry
* entry)
149
{
150
debugs
(16, 5,
MYNAME
);
151
Must
(entry !=
nullptr
);
152
DumpAvgStat
(data, entry);
153
}
154
155
void
156
Mgr::IntervalAction::pack
(
Ipc::TypedMsgHdr
& msg)
const
157
{
158
msg.
setType
(
Ipc::mtCacheMgrResponse
);
159
msg.
putPod
(data);
160
}
161
162
void
163
Mgr::IntervalAction::unpack
(
const
Ipc::TypedMsgHdr
& msg)
164
{
165
msg.
checkType
(
Ipc::mtCacheMgrResponse
);
166
msg.
getPod
(data);
167
}
168
GetAvgStat
void GetAvgStat(Mgr::IntervalActionData &stats, int minutes, int hours)
Definition
stat.cc:864
DumpAvgStat
void DumpAvgStat(Mgr::IntervalActionData &stats, StoreEntry *sentry)
Definition
stat.cc:1000
IntervalAction.h
SquidMath.h
Store.h
TextException.h
Must
#define Must(condition)
Definition
TextException.h:75
TypedMsgHdr.h
Ipc::TypedMsgHdr
struct msghdr with a known type, fixed-size I/O and control buffers
Definition
TypedMsgHdr.h:35
Ipc::TypedMsgHdr::getPod
void getPod(Pod &pod) const
load POD
Definition
TypedMsgHdr.h:118
Ipc::TypedMsgHdr::checkType
void checkType(int aType) const
Definition
TypedMsgHdr.cc:94
Ipc::TypedMsgHdr::putPod
void putPod(const Pod &pod)
store POD
Definition
TypedMsgHdr.h:126
Ipc::TypedMsgHdr::setType
void setType(int aType)
sets message type; use MessageType enum
Definition
TypedMsgHdr.cc:100
Mgr::Action
Definition
Action.h:26
Mgr::IntervalActionData
Definition
IntervalAction.h:22
Mgr::IntervalActionData::icp_q_kbytes_sent
double icp_q_kbytes_sent
Definition
IntervalAction.h:66
Mgr::IntervalActionData::server_other_requests
double server_other_requests
Definition
IntervalAction.h:52
Mgr::IntervalActionData::client_http_kbytes_in
double client_http_kbytes_in
Definition
IntervalAction.h:33
Mgr::IntervalActionData::icp_reply_median_svc_time
double icp_reply_median_svc_time
Definition
IntervalAction.h:71
Mgr::IntervalActionData::syscalls_sock_accepts
double syscalls_sock_accepts
Definition
IntervalAction.h:94
Mgr::IntervalActionData::syscalls_sock_closes
double syscalls_sock_closes
Definition
IntervalAction.h:98
Mgr::IntervalActionData::client_http_kbytes_out
double client_http_kbytes_out
Definition
IntervalAction.h:34
Mgr::IntervalActionData::dns_median_svc_time
double dns_median_svc_time
Definition
IntervalAction.h:72
Mgr::IntervalActionData::server_ftp_requests
double server_ftp_requests
Definition
IntervalAction.h:48
Mgr::IntervalActionData::icp_pkts_sent
double icp_pkts_sent
Definition
IntervalAction.h:56
Mgr::IntervalActionData::icp_replies_queued
double icp_replies_queued
Definition
IntervalAction.h:62
Mgr::IntervalActionData::client_http_nm_median_svc_time
double client_http_nm_median_svc_time
Definition
IntervalAction.h:37
Mgr::IntervalActionData::server_other_kbytes_out
double server_other_kbytes_out
Definition
IntervalAction.h:55
Mgr::IntervalActionData::icp_replies_sent
double icp_replies_sent
Definition
IntervalAction.h:59
Mgr::IntervalActionData::swap_ins
double swap_ins
Definition
IntervalAction.h:80
Mgr::IntervalActionData::syscalls_disk_unlinks
double syscalls_disk_unlinks
Definition
IntervalAction.h:93
Mgr::IntervalActionData::icp_r_kbytes_recv
double icp_r_kbytes_recv
Definition
IntervalAction.h:69
Mgr::IntervalActionData::syscalls_sock_reads
double syscalls_sock_reads
Definition
IntervalAction.h:99
Mgr::IntervalActionData::syscalls_selects
double syscalls_selects
Definition
IntervalAction.h:103
Mgr::IntervalActionData::hitValidationRefusalsDueToTimeLimit
double hitValidationRefusalsDueToTimeLimit
Definition
IntervalAction.h:86
Mgr::IntervalActionData::server_http_errors
double server_http_errors
Definition
IntervalAction.h:45
Mgr::IntervalActionData::syscalls_sock_connects
double syscalls_sock_connects
Definition
IntervalAction.h:96
Mgr::IntervalActionData::icp_queries_recv
double icp_queries_recv
Definition
IntervalAction.h:60
Mgr::IntervalActionData::unlink_requests
double unlink_requests
Definition
IntervalAction.h:73
Mgr::IntervalActionData::icp_queries_sent
double icp_queries_sent
Definition
IntervalAction.h:58
Mgr::IntervalActionData::server_ftp_errors
double server_ftp_errors
Definition
IntervalAction.h:49
Mgr::IntervalActionData::server_all_kbytes_in
double server_all_kbytes_in
Definition
IntervalAction.h:42
Mgr::IntervalActionData::sample_start_time
struct timeval sample_start_time
Definition
IntervalAction.h:28
Mgr::IntervalActionData::hitValidationRefusalsDueToZeroSize
double hitValidationRefusalsDueToZeroSize
Definition
IntervalAction.h:85
Mgr::IntervalActionData::operator+=
IntervalActionData & operator+=(const IntervalActionData &stats)
Definition
IntervalAction.cc:29
Mgr::IntervalActionData::client_http_hits
double client_http_hits
Definition
IntervalAction.h:31
Mgr::IntervalActionData::server_http_kbytes_in
double server_http_kbytes_in
Definition
IntervalAction.h:46
Mgr::IntervalActionData::swap_files_cleaned
double swap_files_cleaned
Definition
IntervalAction.h:81
Mgr::IntervalActionData::client_http_hit_median_svc_time
double client_http_hit_median_svc_time
Definition
IntervalAction.h:39
Mgr::IntervalActionData::icp_r_kbytes_sent
double icp_r_kbytes_sent
Definition
IntervalAction.h:67
Mgr::IntervalActionData::wall_time
double wall_time
Definition
IntervalAction.h:105
Mgr::IntervalActionData::client_http_all_median_svc_time
double client_http_all_median_svc_time
Definition
IntervalAction.h:35
Mgr::IntervalActionData::sample_end_time
struct timeval sample_end_time
Definition
IntervalAction.h:29
Mgr::IntervalActionData::client_http_errors
double client_http_errors
Definition
IntervalAction.h:32
Mgr::IntervalActionData::syscalls_disk_seeks
double syscalls_disk_seeks
Definition
IntervalAction.h:92
Mgr::IntervalActionData::server_ftp_kbytes_out
double server_ftp_kbytes_out
Definition
IntervalAction.h:51
Mgr::IntervalActionData::select_loops
double select_loops
Definition
IntervalAction.h:75
Mgr::IntervalActionData::hitValidationRefusalsDueToLocking
double hitValidationRefusalsDueToLocking
Definition
IntervalAction.h:84
Mgr::IntervalActionData::swap_outs
double swap_outs
Definition
IntervalAction.h:79
Mgr::IntervalActionData::server_http_kbytes_out
double server_http_kbytes_out
Definition
IntervalAction.h:47
Mgr::IntervalActionData::IntervalActionData
IntervalActionData()
Definition
IntervalAction.cc:23
Mgr::IntervalActionData::client_http_nh_median_svc_time
double client_http_nh_median_svc_time
Definition
IntervalAction.h:38
Mgr::IntervalActionData::icp_q_kbytes_recv
double icp_q_kbytes_recv
Definition
IntervalAction.h:68
Mgr::IntervalActionData::cpu_time
double cpu_time
Definition
IntervalAction.h:104
Mgr::IntervalActionData::icp_kbytes_sent
double icp_kbytes_sent
Definition
IntervalAction.h:64
Mgr::IntervalActionData::icp_replies_recv
double icp_replies_recv
Definition
IntervalAction.h:61
Mgr::IntervalActionData::server_all_requests
double server_all_requests
Definition
IntervalAction.h:40
Mgr::IntervalActionData::client_http_requests
double client_http_requests
Definition
IntervalAction.h:30
Mgr::IntervalActionData::server_all_errors
double server_all_errors
Definition
IntervalAction.h:41
Mgr::IntervalActionData::hitValidationAttempts
double hitValidationAttempts
Definition
IntervalAction.h:83
Mgr::IntervalActionData::syscalls_disk_reads
double syscalls_disk_reads
Definition
IntervalAction.h:90
Mgr::IntervalActionData::server_other_kbytes_in
double server_other_kbytes_in
Definition
IntervalAction.h:54
Mgr::IntervalActionData::hitValidationFailures
double hitValidationFailures
Definition
IntervalAction.h:87
Mgr::IntervalActionData::syscalls_disk_opens
double syscalls_disk_opens
Definition
IntervalAction.h:88
Mgr::IntervalActionData::syscalls_sock_sockets
double syscalls_sock_sockets
Definition
IntervalAction.h:95
Mgr::IntervalActionData::client_http_miss_median_svc_time
double client_http_miss_median_svc_time
Definition
IntervalAction.h:36
Mgr::IntervalActionData::server_other_errors
double server_other_errors
Definition
IntervalAction.h:53
Mgr::IntervalActionData::server_all_kbytes_out
double server_all_kbytes_out
Definition
IntervalAction.h:43
Mgr::IntervalActionData::median_select_fds
double median_select_fds
Definition
IntervalAction.h:78
Mgr::IntervalActionData::server_ftp_kbytes_in
double server_ftp_kbytes_in
Definition
IntervalAction.h:50
Mgr::IntervalActionData::syscalls_sock_writes
double syscalls_sock_writes
Definition
IntervalAction.h:100
Mgr::IntervalActionData::icp_pkts_recv
double icp_pkts_recv
Definition
IntervalAction.h:57
Mgr::IntervalActionData::server_http_requests
double server_http_requests
Definition
IntervalAction.h:44
Mgr::IntervalActionData::syscalls_sock_binds
double syscalls_sock_binds
Definition
IntervalAction.h:97
Mgr::IntervalActionData::average_select_fd_period
double average_select_fd_period
Definition
IntervalAction.h:77
Mgr::IntervalActionData::syscalls_disk_closes
double syscalls_disk_closes
Definition
IntervalAction.h:89
Mgr::IntervalActionData::icp_kbytes_recv
double icp_kbytes_recv
Definition
IntervalAction.h:65
Mgr::IntervalActionData::icp_query_median_svc_time
double icp_query_median_svc_time
Definition
IntervalAction.h:70
Mgr::IntervalActionData::page_faults
double page_faults
Definition
IntervalAction.h:74
Mgr::IntervalActionData::aborted_requests
double aborted_requests
Definition
IntervalAction.h:82
Mgr::IntervalActionData::syscalls_sock_recvfroms
double syscalls_sock_recvfroms
Definition
IntervalAction.h:101
Mgr::IntervalActionData::icp_query_timeouts
double icp_query_timeouts
Definition
IntervalAction.h:63
Mgr::IntervalActionData::select_fds
double select_fds
Definition
IntervalAction.h:76
Mgr::IntervalActionData::syscalls_disk_writes
double syscalls_disk_writes
Definition
IntervalAction.h:91
Mgr::IntervalActionData::syscalls_sock_sendtos
double syscalls_sock_sendtos
Definition
IntervalAction.h:102
Mgr::IntervalAction
implement aggregated interval actions
Definition
IntervalAction.h:111
Mgr::IntervalAction::Create60min
static Pointer Create60min(const CommandPointer &cmd)
Definition
IntervalAction.cc:123
Mgr::IntervalAction::Create5min
static Pointer Create5min(const CommandPointer &cmd)
Definition
IntervalAction.cc:117
Mgr::IntervalAction::add
void add(const Action &action) override
incrementally merge in remote information (of the same action type)
Definition
IntervalAction.cc:135
Mgr::IntervalAction::pack
void pack(Ipc::TypedMsgHdr &msg) const override
pack collected action info into a message to be sent to Coordinator
Definition
IntervalAction.cc:156
Mgr::IntervalAction::unpack
void unpack(const Ipc::TypedMsgHdr &msg) override
unpack action info from the message received by Coordinator
Definition
IntervalAction.cc:163
Mgr::IntervalAction::IntervalAction
IntervalAction(const CommandPointer &cmd, int aMinutes, int aHours)
Definition
IntervalAction.cc:128
Mgr::IntervalAction::dump
void dump(StoreEntry *entry) override
Definition
IntervalAction.cc:148
Mgr::IntervalAction::collect
void collect() override
calculate and keep local action-specific information
Definition
IntervalAction.cc:142
RefCount< Action >
StoreEntry
Definition
Store.h:38
MYNAME
#define MYNAME
Definition
Stream.h:219
debugs
#define debugs(SECTION, LEVEL, CONTENT)
Definition
Stream.h:192
Messages.h
Ipc::mtCacheMgrResponse
@ mtCacheMgrResponse
Definition
Messages.h:36
timerisset
#define timerisset(tvp)
Definition
snmp_api_util.h:85
timercmp
#define timercmp(tvp, uvp, cmp)
Definition
snmp_api_util.h:76
squid.h
squid
src
mgr
IntervalAction.cc
Generated by
1.9.8