diff options
| author | Dan Engelbrecht <[email protected]> | 2023-11-28 07:54:05 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-11-28 13:54:05 +0100 |
| commit | dcaeaac4ebc6255cb210ce54a18b1cd01b9eeaf8 (patch) | |
| tree | 766d03bad3262643653dcd08a20e0dbad57e2f01 /src | |
| parent | Don't call spdlog::drop_all, spdlog::shutdown will do that for us in a contro... (diff) | |
| download | zen-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.cpp | 20 | ||||
| -rw-r--r-- | src/zenserver/cache/cachedisklayer.cpp | 14 | ||||
| -rw-r--r-- | src/zenserver/projectstore/projectstore.cpp | 12 | ||||
| -rw-r--r-- | src/zenstore/compactcas.cpp | 6 | ||||
| -rw-r--r-- | src/zenstore/filecas.cpp | 6 | ||||
| -rw-r--r-- | src/zenstore/gc.cpp | 12 |
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)) { |