diff options
| author | Dan Engelbrecht <[email protected]> | 2024-08-07 13:46:34 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2024-08-07 13:46:34 +0200 |
| commit | 159f1cb99647f936ed6946586b7541ea0c65efec (patch) | |
| tree | f18302ea2c8d900dae6b98d6528412d2e6dfd03b /src/zenstore | |
| parent | stop exceptions from leaking on threaded work (#102) (diff) | |
| download | zen-159f1cb99647f936ed6946586b7541ea0c65efec.tar.xz zen-159f1cb99647f936ed6946586b7541ea0c65efec.zip | |
add gc single threaded option (#104)
* add option to force gcv2 to run single threaded
Diffstat (limited to 'src/zenstore')
| -rw-r--r-- | src/zenstore/gc.cpp | 13 | ||||
| -rw-r--r-- | src/zenstore/include/zenstore/gc.h | 5 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/zenstore/gc.cpp b/src/zenstore/gc.cpp index 8db34b9c5..dc75a29f2 100644 --- a/src/zenstore/gc.cpp +++ b/src/zenstore/gc.cpp @@ -1767,6 +1767,7 @@ GcScheduler::SchedulerThread() GcVersion UseGCVersion = m_Config.UseGCVersion; uint32_t CompactBlockUsageThresholdPercent = m_Config.CompactBlockUsageThresholdPercent; bool Verbose = m_Config.Verbose; + bool SingleThreaded = m_Config.SingleThreaded; bool DiskSpaceGCTriggered = false; bool TimeBasedGCTriggered = false; @@ -1803,8 +1804,9 @@ GcScheduler::SchedulerThread() UseGCVersion = TriggerParams.ForceGCVersion.value_or(UseGCVersion); CompactBlockUsageThresholdPercent = TriggerParams.CompactBlockUsageThresholdPercent.value_or(CompactBlockUsageThresholdPercent); - Verbose = TriggerParams.Verbose.value_or(Verbose); - DoGc = true; + Verbose = TriggerParams.Verbose.value_or(Verbose); + SingleThreaded = TriggerParams.SingleThreaded.value_or(SingleThreaded); + DoGc = true; } if (m_TriggerScrubParams) @@ -2021,7 +2023,8 @@ GcScheduler::SchedulerThread() SkipCid, UseGCVersion, CompactBlockUsageThresholdPercent, - Verbose); + Verbose, + SingleThreaded); m_GcManager.SetCancelGC(false); @@ -2108,7 +2111,8 @@ GcScheduler::CollectGarbage(const GcClock::TimePoint& CacheExpireTime, bool SkipCid, GcVersion UseGCVersion, uint32_t CompactBlockUsageThresholdPercent, - bool Verbose) + bool Verbose, + bool SingleThreaded) { ZEN_TRACE_CPU("GcScheduler::CollectGarbage"); @@ -2177,6 +2181,7 @@ GcScheduler::CollectGarbage(const GcClock::TimePoint& CacheExpireTime, .IsDeleteMode = Delete, .SkipCidDelete = SkipCid, .Verbose = Verbose, + .SingleThread = SingleThreaded, .CompactBlockUsageThresholdPercent = CompactBlockUsageThresholdPercent, .DiskReservePath = m_Config.RootDirectory / "reserve.gc"}; GcClock::TimePoint GcStartTime = GcClock::Now(); diff --git a/src/zenstore/include/zenstore/gc.h b/src/zenstore/include/zenstore/gc.h index c3a71baa6..2edb5e0a5 100644 --- a/src/zenstore/include/zenstore/gc.h +++ b/src/zenstore/include/zenstore/gc.h @@ -444,6 +444,7 @@ struct GcSchedulerConfig GcVersion UseGCVersion = GcVersion::kV1; uint32_t CompactBlockUsageThresholdPercent = 90; bool Verbose = false; + bool SingleThreaded = false; }; struct GcSchedulerState @@ -517,6 +518,7 @@ public: std::optional<GcVersion> ForceGCVersion; std::optional<uint32_t> CompactBlockUsageThresholdPercent; std::optional<bool> Verbose; + std::optional<bool> SingleThreaded; }; bool TriggerGc(const TriggerGcParams& Params); @@ -542,7 +544,8 @@ private: bool SkipCid, GcVersion UseGCVersion, uint32_t CompactBlockUsageThresholdPercent, - bool Verbose); + bool Verbose, + bool SingleThreaded); void ScrubStorage(bool DoDelete, bool SkipCid, std::chrono::seconds TimeSlice); LoggerRef Log() { return m_Log; } virtual bool AreDiskWritesAllowed() const override { return !m_AreDiskWritesBlocked.load(); } |