aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2023-11-28 07:54:05 -0500
committerGitHub <[email protected]>2023-11-28 13:54:05 +0100
commitdcaeaac4ebc6255cb210ce54a18b1cd01b9eeaf8 (patch)
tree766d03bad3262643653dcd08a20e0dbad57e2f01 /src
parentDon't call spdlog::drop_all, spdlog::shutdown will do that for us in a contro... (diff)
downloadzen-dcaeaac4ebc6255cb210ce54a18b1cd01b9eeaf8.tar.xz
zen-dcaeaac4ebc6255cb210ce54a18b1cd01b9eeaf8.zip
tracing for gcv2 (#574)
- Improvement: Added more trace scopes for GCv2 - Bugfix: Make sure we can override flags to "false" when running `zen gc` commmand - `smallobjects`, `skipcid`, `skipdelete`, `verbose`
Diffstat (limited to 'src')
-rw-r--r--src/zen/cmds/admin_cmd.cpp20
-rw-r--r--src/zenserver/cache/cachedisklayer.cpp14
-rw-r--r--src/zenserver/projectstore/projectstore.cpp12
-rw-r--r--src/zenstore/compactcas.cpp6
-rw-r--r--src/zenstore/filecas.cpp6
-rw-r--r--src/zenstore/gc.cpp12
6 files changed, 53 insertions, 17 deletions
diff --git a/src/zen/cmds/admin_cmd.cpp b/src/zen/cmds/admin_cmd.cpp
index 86a180d54..50510ce03 100644
--- a/src/zen/cmds/admin_cmd.cpp
+++ b/src/zen/cmds/admin_cmd.cpp
@@ -132,10 +132,7 @@ GcCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
}
cpr::Parameters Params;
- if (m_SmallObjects)
- {
- Params.Add({"smallobjects", "true"});
- }
+ Params.Add({"smallobjects", m_SmallObjects ? "true" : "false"});
if (m_MaxCacheDuration != 0)
{
Params.Add({"maxcacheduration", fmt::format("{}", m_MaxCacheDuration)});
@@ -144,14 +141,8 @@ GcCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
Params.Add({"disksizesoftlimit", fmt::format("{}", m_DiskSizeSoftLimit)});
}
- if (m_SkipCid)
- {
- Params.Add({"skipcid", "true"});
- }
- if (m_SkipDelete)
- {
- Params.Add({"skipdelete", "true"});
- }
+ Params.Add({"skipcid", m_SkipCid ? "true" : "false"});
+ Params.Add({"skipdelete", m_SkipDelete ? "true" : "false"});
if (m_ForceUseGCV1)
{
if (m_ForceUseGCV2)
@@ -168,10 +159,7 @@ GcCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
{
Params.Add({"compactblockthreshold", fmt::format("{}", m_CompactBlockThreshold)});
}
- if (m_Verbose)
- {
- Params.Add({"verbose", "true"});
- }
+ Params.Add({"verbose", m_Verbose ? "true" : "false"});
cpr::Session Session;
Session.SetHeader(cpr::Header{{"Accept", "application/json"}});
diff --git a/src/zenserver/cache/cachedisklayer.cpp b/src/zenserver/cache/cachedisklayer.cpp
index 0767086ce..c8bc3871a 100644
--- a/src/zenserver/cache/cachedisklayer.cpp
+++ b/src/zenserver/cache/cachedisklayer.cpp
@@ -2703,6 +2703,8 @@ public:
virtual void CompactStore(GcCtx& Ctx, GcCompactStoreStats& Stats, const std::function<uint64_t()>& ClaimDiskReserveCallback) override
{
+ ZEN_TRACE_CPU("Z$::Disk::Bucket::CompactStore");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
Reset(m_ExpiredStandaloneKeys);
@@ -2916,6 +2918,8 @@ private:
GcStoreCompactor*
ZenCacheDiskLayer::CacheBucket::RemoveExpiredData(GcCtx& Ctx, GcStats& Stats)
{
+ ZEN_TRACE_CPU("Z$::Disk::Bucket::RemoveExpiredData");
+
size_t TotalEntries = 0;
Stopwatch Timer;
@@ -3038,6 +3042,8 @@ public:
virtual void LockState(GcCtx& Ctx) override
{
+ ZEN_TRACE_CPU("Z$::Disk::Bucket::RemoveExpiredData");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
if (!Ctx.Settings.Verbose)
@@ -3102,6 +3108,8 @@ public:
virtual void RemoveUsedReferencesFromSet(GcCtx& Ctx, HashSet& IoCids) override
{
+ ZEN_TRACE_CPU("Z$::Disk::Bucket::RemoveUsedReferencesFromSet");
+
ZEN_ASSERT(m_IndexLock);
size_t InitialCount = IoCids.size();
Stopwatch Timer;
@@ -3135,6 +3143,8 @@ public:
std::vector<GcReferenceChecker*>
ZenCacheDiskLayer::CacheBucket::CreateReferenceCheckers(GcCtx& Ctx)
{
+ ZEN_TRACE_CPU("Z$::Disk::Bucket::CreateReferenceCheckers");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
if (!Ctx.Settings.Verbose)
@@ -3267,6 +3277,8 @@ ZenCacheDiskLayer::CacheBucket::CreateReferenceCheckers(GcCtx& Ctx)
void
ZenCacheDiskLayer::CacheBucket::CompactReferences(RwLock::ExclusiveLockScope&)
{
+ ZEN_TRACE_CPU("Z$::Disk::Bucket::CompactReferences");
+
std::vector<ReferenceIndex> FirstReferenceIndex;
std::vector<IoHash> NewReferenceHashes;
std::vector<ReferenceIndex> NewNextReferenceHashesIndexes;
@@ -3447,6 +3459,8 @@ ZenCacheDiskLayer::CacheBucket::CompactState(std::vector<BucketPayload>& Payloa
IndexMap& Index,
RwLock::ExclusiveLockScope& IndexLock)
{
+ ZEN_TRACE_CPU("Z$::Disk::Bucket::CompactState");
+
size_t EntryCount = m_Index.size();
Payloads.reserve(EntryCount);
AccessTimes.reserve(EntryCount);
diff --git a/src/zenserver/projectstore/projectstore.cpp b/src/zenserver/projectstore/projectstore.cpp
index 882d78c7e..dde824b6f 100644
--- a/src/zenserver/projectstore/projectstore.cpp
+++ b/src/zenserver/projectstore/projectstore.cpp
@@ -3099,6 +3099,8 @@ public:
virtual void CompactStore(GcCtx& Ctx, GcCompactStoreStats& Stats, const std::function<uint64_t()>&)
{
+ ZEN_TRACE_CPU("Store::CompactStore");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
if (!Ctx.Settings.Verbose)
@@ -3168,6 +3170,8 @@ private:
GcStoreCompactor*
ProjectStore::RemoveExpiredData(GcCtx& Ctx, GcStats& Stats)
{
+ ZEN_TRACE_CPU("Store::RemoveExpiredData");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
if (!Ctx.Settings.Verbose)
@@ -3311,6 +3315,8 @@ public:
{
if (PreCache)
{
+ ZEN_TRACE_CPU("Store::ReferencesPreCache");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
if (!Ctx.Settings.Verbose)
@@ -3336,6 +3342,8 @@ public:
virtual void LockState(GcCtx& Ctx) override
{
+ ZEN_TRACE_CPU("Store::LockState");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
if (!Ctx.Settings.Verbose)
@@ -3363,6 +3371,8 @@ public:
virtual void RemoveUsedReferencesFromSet(GcCtx& Ctx, HashSet& IoCids) override
{
+ ZEN_TRACE_CPU("Store::RemoveUsedReferencesFromSet");
+
ZEN_ASSERT(m_OplogLock);
size_t InitialCount = IoCids.size();
@@ -3393,6 +3403,8 @@ public:
std::vector<GcReferenceChecker*>
ProjectStore::CreateReferenceCheckers(GcCtx& Ctx)
{
+ ZEN_TRACE_CPU("Store::CreateReferenceCheckers");
+
size_t ProjectCount = 0;
size_t OplogCount = 0;
diff --git a/src/zenstore/compactcas.cpp b/src/zenstore/compactcas.cpp
index c4f9ff2c6..e9a0a437b 100644
--- a/src/zenstore/compactcas.cpp
+++ b/src/zenstore/compactcas.cpp
@@ -560,6 +560,8 @@ public:
virtual void CompactStore(GcCtx& Ctx, GcCompactStoreStats& Stats, const std::function<uint64_t()>& ClaimDiskReserveCallback) override
{
+ ZEN_TRACE_CPU("CasContainer::CompactStore");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
if (!Ctx.Settings.Verbose)
@@ -701,6 +703,8 @@ public:
virtual GcStoreCompactor* RemoveUnreferencedData(GcCtx& Ctx, GcStats& Stats, const GetUnusedReferencesFunc& GetUnusedReferences)
{
+ ZEN_TRACE_CPU("CasContainer::RemoveUnreferencedData");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
if (!Ctx.Settings.Verbose)
@@ -780,6 +784,8 @@ CasContainerStrategy::GetGcName(GcCtx&)
GcReferencePruner*
CasContainerStrategy::CreateReferencePruner(GcCtx& Ctx, GcReferenceStoreStats&)
{
+ ZEN_TRACE_CPU("CasContainer::CreateReferencePruner");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
if (!Ctx.Settings.Verbose)
diff --git a/src/zenstore/filecas.cpp b/src/zenstore/filecas.cpp
index bf12a0c1a..aeca01dd1 100644
--- a/src/zenstore/filecas.cpp
+++ b/src/zenstore/filecas.cpp
@@ -1355,6 +1355,8 @@ public:
virtual void CompactStore(GcCtx& Ctx, GcCompactStoreStats& Stats, const std::function<uint64_t()>&)
{
+ ZEN_TRACE_CPU("FileCas::CompactStore");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
Reset(m_ReferencesToClean);
@@ -1451,6 +1453,8 @@ public:
virtual GcStoreCompactor* RemoveUnreferencedData(GcCtx& Ctx, GcStats& Stats, const GetUnusedReferencesFunc& GetUnusedReferences)
{
+ ZEN_TRACE_CPU("FileCas::RemoveUnreferencedData");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
if (!Ctx.Settings.Verbose)
@@ -1523,6 +1527,8 @@ FileCasStrategy::GetGcName(GcCtx&)
GcReferencePruner*
FileCasStrategy::CreateReferencePruner(GcCtx& Ctx, GcReferenceStoreStats&)
{
+ ZEN_TRACE_CPU("FileCas::CreateReferencePruner");
+
Stopwatch Timer;
const auto _ = MakeGuard([&] {
if (!Ctx.Settings.Verbose)
diff --git a/src/zenstore/gc.cpp b/src/zenstore/gc.cpp
index 262c94feb..b53ca4bab 100644
--- a/src/zenstore/gc.cpp
+++ b/src/zenstore/gc.cpp
@@ -599,7 +599,7 @@ GcManager::RemoveGcReferenceStore(GcReferenceStore& ReferenceStore)
GcResult
GcManager::CollectGarbage(const GcSettings& Settings)
{
- ZEN_TRACE_CPU("Gc::CollectGarbage(v2)");
+ ZEN_TRACE_CPU("GcV2::CollectGarbage");
GcCtx Ctx{.Settings = Settings, .IsCancelledFlag = m_CancelGC};
GcResult Result;
@@ -630,6 +630,7 @@ GcManager::CollectGarbage(const GcSettings& Settings)
{
return Sum(Result, true);
}
+ ZEN_TRACE_CPU("GcV2::RemoveExpiredData");
Latch WorkLeft(1);
{
@@ -681,6 +682,8 @@ GcManager::CollectGarbage(const GcSettings& Settings)
std::unordered_map<size_t, std::unique_ptr<GcReferencePruner>> ReferencePruners;
if (!m_GcReferenceStores.empty())
{
+ ZEN_TRACE_CPU("GcV2::CreateReferencePruners");
+
ReferencePruners.reserve(m_GcReferenceStores.size());
Latch WorkLeft(1);
RwLock ReferencePrunersLock;
@@ -740,6 +743,8 @@ GcManager::CollectGarbage(const GcSettings& Settings)
std::unordered_map<std::unique_ptr<GcReferenceChecker>, size_t> ReferenceCheckers;
if (!m_GcReferencers.empty())
{
+ ZEN_TRACE_CPU("GcV2::CreateReferenceCheckers");
+
ReferenceCheckers.reserve(m_GcReferencers.size());
Latch WorkLeft(1);
RwLock ReferenceCheckersLock;
@@ -813,6 +818,7 @@ GcManager::CollectGarbage(const GcSettings& Settings)
{
return Sum(Result, true);
}
+ ZEN_TRACE_CPU("GcV2::LockState");
// Locking all references checkers so we have a steady state of which references are used
// From this point we have blocked all writes to all References (DiskBucket/ProjectStore) until
@@ -870,6 +876,8 @@ GcManager::CollectGarbage(const GcSettings& Settings)
// Ask stores to remove data that the ReferenceCheckers says are not referenced - this should be a lightweight
// operation that only updates in-memory index, actual disk changes should be done by the ReferenceStoreCompactors
+ ZEN_TRACE_CPU("GcV2::RemoveUnreferencedData");
+
Latch WorkLeft(1);
{
@@ -932,6 +940,8 @@ GcManager::CollectGarbage(const GcSettings& Settings)
return Sum(Result, true);
}
+ ZEN_TRACE_CPU("GcV2::CompactStores");
+
auto ClaimDiskReserve = [&]() -> uint64_t {
if (!std::filesystem::is_regular_file(Settings.DiskReservePath))
{