]> git.ipfire.org Git - thirdparty/squid.git/blob - src/StoreStats.cc
Source Format Enforcement (#1234)
[thirdparty/squid.git] / src / StoreStats.cc
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 20 Storage Manager Statistics */
10
11 #include "squid.h"
12 #include "StoreStats.h"
13 #include "tools.h"
14
15 StoreInfoStats &
16 StoreInfoStats::operator +=(const StoreInfoStats &stats)
17 {
18 swap.size += stats.swap.size;
19 swap.capacity += stats.swap.capacity;
20 swap.count += stats.swap.count;
21 swap.open_disk_fd += stats.swap.open_disk_fd;
22
23 // Assume that either all workers use shared memory cache or none do.
24 // It is possible but difficult to report correct stats for an arbitrary
25 // mix, and only rather unusual deployments can benefit from mixing.
26
27 // If workers share memory, we will get shared stats from those workers
28 // and non-shared stats from other processes. Ignore order and also
29 // ignore other processes stats because they are zero in most setups.
30 if (stats.mem.shared) { // workers share memory
31 // use the latest reported stats, they all should be about the same
32 mem.shared = true;
33 mem.size = stats.mem.size;
34 mem.capacity = stats.mem.capacity;
35 mem.count = stats.mem.count;
36 } else if (!mem.shared) { // do not corrupt shared stats, if any
37 // workers do not share so we must add everything up
38 mem.size += stats.mem.size;
39 mem.capacity += stats.mem.capacity;
40 mem.count += stats.mem.count;
41 }
42
43 store_entry_count += stats.store_entry_count;
44 mem_object_count += stats.mem_object_count;
45
46 return *this;
47 }
48
49 /* StoreIoStats */
50
51 StoreIoStats::StoreIoStats()
52 {
53 memset(this, 0, sizeof(*this));
54 }
55