aboutsummaryrefslogtreecommitdiff
path: root/src/zenstore
diff options
context:
space:
mode:
Diffstat (limited to 'src/zenstore')
-rw-r--r--src/zenstore/cidstore.cpp20
-rw-r--r--src/zenstore/include/zenstore/cidstore.h23
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;