diff options
Diffstat (limited to 'src/zenstore')
| -rw-r--r-- | src/zenstore/cidstore.cpp | 20 | ||||
| -rw-r--r-- | src/zenstore/include/zenstore/cidstore.h | 23 |
2 files changed, 32 insertions, 11 deletions
diff --git a/src/zenstore/cidstore.cpp b/src/zenstore/cidstore.cpp index f6560fcff..67b7e95ac 100644 --- a/src/zenstore/cidstore.cpp +++ b/src/zenstore/cidstore.cpp @@ -99,13 +99,26 @@ struct CidStore::Impl }; } + void ReportMetrics(StatsMetrics& Statsd) + { + const CidStoreStats Now = Stats(); + const CidStoreStats& Old = m_LastReportedMetrics; + + Statsd.Meter("zen.cas_hits", Now.HitCount - Old.HitCount); + Statsd.Meter("zen.cas_misses", Now.MissCount - Old.MissCount); + Statsd.Meter("zen.cas_writes", Now.WriteCount - Old.WriteCount); + + m_LastReportedMetrics = Now; + } + std::atomic_uint64_t m_HitCount{}; std::atomic_uint64_t m_MissCount{}; std::atomic_uint64_t m_WriteCount{}; metrics::RequestStats m_AddChunkOps; metrics::RequestStats m_FindChunkOps; - // metrics::OperationTiming m_ContainChunkOps; + + CidStoreStats m_LastReportedMetrics; uint64_t m_LastScrubTime = 0; }; @@ -174,4 +187,9 @@ CidStore::Stats() const return m_Impl->Stats(); } +void +CidStore::ReportMetrics(StatsMetrics& Statsd) +{ + return m_Impl->ReportMetrics(Statsd); +} } // namespace zen diff --git a/src/zenstore/include/zenstore/cidstore.h b/src/zenstore/include/zenstore/cidstore.h index 1c8d79158..319683dcb 100644 --- a/src/zenstore/include/zenstore/cidstore.h +++ b/src/zenstore/include/zenstore/cidstore.h @@ -7,6 +7,7 @@ #include <zencore/iohash.h> #include <zencore/stats.h> #include <zenstore/hashkeyset.h> +#include <zenutil/statsreporter.h> ZEN_THIRD_PARTY_INCLUDES_START #include <tsl/robin_map.h> @@ -60,7 +61,7 @@ struct CidStoreConfiguration * */ -class CidStore final : public ChunkResolver +class CidStore final : public ChunkResolver, public StatsProvider { public: CidStore(GcManager& Gc); @@ -76,15 +77,17 @@ public: kMayBeMovedInPlace }; - void Initialize(const CidStoreConfiguration& Config); - InsertResult AddChunk(const IoBuffer& ChunkData, const IoHash& RawHash, InsertMode Mode = InsertMode::kMayBeMovedInPlace); - IoBuffer FindChunkByCid(const IoHash& DecompressedId); - bool ContainsChunk(const IoHash& DecompressedId); - void FilterChunks(HashKeySet& InOutChunks); - void Flush(); - void ScrubStorage(ScrubContext& Ctx); - CidStoreSize TotalSize() const; - CidStoreStats Stats() const; + void Initialize(const CidStoreConfiguration& Config); + InsertResult AddChunk(const IoBuffer& ChunkData, const IoHash& RawHash, InsertMode Mode = InsertMode::kMayBeMovedInPlace); + virtual IoBuffer FindChunkByCid(const IoHash& DecompressedId) override; + bool ContainsChunk(const IoHash& DecompressedId); + void FilterChunks(HashKeySet& InOutChunks); + void Flush(); + void ScrubStorage(ScrubContext& Ctx); + CidStoreSize TotalSize() const; + CidStoreStats Stats() const; + + virtual void ReportMetrics(StatsMetrics& Statsd) override; private: struct Impl; |