1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef NET_DISK_CACHE_BLOCKFILE_STATS_H_
6 #define NET_DISK_CACHE_BLOCKFILE_STATS_H_
11 #include "base/basictypes.h"
12 #include "net/disk_cache/blockfile/addr.h"
15 class HistogramSamples
;
18 namespace disk_cache
{
20 typedef std::vector
<std::pair
<std::string
, std::string
> > StatsItems
;
22 // This class stores cache-specific usage information, for tunning purposes.
25 static const int kDataSizesLength
= 28;
28 OPEN_MISS
= MIN_COUNTER
,
38 OPEN_ENTRIES
, // Average number of open entries.
39 MAX_ENTRIES
, // Maximum number of open entries.
43 OPEN_RANKINGS
, // An entry has to be read just to modify rankings.
44 GET_RANKINGS
, // We got the ranking info without reading the whole entry.
46 LAST_REPORT
, // Time of the last time we sent a report.
47 LAST_REPORT_TIMER
, // Timer count of the last time we sent a report.
48 DOOM_RECENT
, // The cache was partially cleared.
49 UNUSED
, // Was: ga.js was evicted from the cache.
56 // Initializes this object with |data| from disk.
57 bool Init(void* data
, int num_bytes
, Addr address
);
59 // Generates a size distribution histogram.
60 void InitSizeHistogram();
62 // Returns the number of bytes needed to store the stats on disk.
65 // Tracks changes to the stoage space used by an entry.
66 void ModifyStorageStats(int32 old_size
, int32 new_size
);
68 // Tracks general events.
69 void OnEvent(Counters an_event
);
70 void SetCounter(Counters counter
, int64 value
);
71 int64
GetCounter(Counters counter
) const;
73 void GetItems(StatsItems
* items
);
74 int GetHitRatio() const;
75 int GetResurrectRatio() const;
78 // Returns the lower bound of the space used by entries bigger than 512 KB.
79 int GetLargeEntriesSize();
81 // Writes the stats into |data|, to be stored at the given cache address.
82 // Returns the number of bytes copied.
83 int SerializeStats(void* data
, int num_bytes
, Addr
* address
);
86 // Supports generation of SizeStats histogram data.
87 int GetBucketRange(size_t i
) const;
88 int GetStatsBucket(int32 size
);
89 int GetRatio(Counters hit
, Counters miss
) const;
92 int data_sizes_
[kDataSizesLength
];
93 int64 counters_
[MAX_COUNTER
];
95 DISALLOW_COPY_AND_ASSIGN(Stats
);
98 } // namespace disk_cache
100 #endif // NET_DISK_CACHE_BLOCKFILE_STATS_H_