aboutsummaryrefslogtreecommitdiff
path: root/src/zenstore/gc.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2023-11-29 09:14:57 -0500
committerGitHub <[email protected]>2023-11-29 15:14:57 +0100
commit68b3382ef7e0f7795b9a601aae73adc2f8ef9873 (patch)
treea8460fa497195575505e14f7beef069ecee31ef7 /src/zenstore/gc.cpp
parentfixed file logger pattern (#579) (diff)
downloadzen-68b3382ef7e0f7795b9a601aae73adc2f8ef9873.tar.xz
zen-68b3382ef7e0f7795b9a601aae73adc2f8ef9873.zip
global thread worker pools (#577)
- Improvement: Use two global worker thread pools instead of ad-hoc creation of worker pools
Diffstat (limited to 'src/zenstore/gc.cpp')
-rw-r--r--src/zenstore/gc.cpp14
1 files changed, 4 insertions, 10 deletions
diff --git a/src/zenstore/gc.cpp b/src/zenstore/gc.cpp
index b53ca4bab..e2ab34d1e 100644
--- a/src/zenstore/gc.cpp
+++ b/src/zenstore/gc.cpp
@@ -18,6 +18,7 @@
#include <zencore/workthreadpool.h>
#include <zenstore/cidstore.h>
#include <zenstore/scrubcontext.h>
+#include <zenutil/workerpools.h>
#include "cas.h"
@@ -610,18 +611,11 @@ GcManager::CollectGarbage(const GcSettings& Settings)
RwLock::SharedLockScope GcLock(m_Lock);
- int WorkerThreadPoolCount = 0;
- if (!Settings.SingleThread)
- {
- const size_t MaxHwTreadUse = Max((std::thread::hardware_concurrency() / 4u), 1u);
- WorkerThreadPoolCount = gsl::narrow<int>(Min(MaxHwTreadUse, m_GcReferencers.size()));
- }
-
Result.ReferencerStats.resize(m_GcReferencers.size());
std::unordered_map<std::unique_ptr<GcStoreCompactor>, GcCompactStoreStats*> StoreCompactors;
RwLock StoreCompactorsLock;
- WorkerThreadPool ThreadPool(WorkerThreadPoolCount, "GCV2");
+ WorkerThreadPool& ThreadPool = Settings.SingleThread ? GetSyncWorkerPool() : GetSmallWorkerPool();
ZEN_INFO("GCV2: Removing expired data from {} referencers", m_GcReferencers.size());
if (!m_GcReferencers.empty())
@@ -1932,8 +1926,8 @@ GcScheduler::ScrubStorage(bool DoDelete, std::chrono::seconds TimeSlice)
Stopwatch Timer;
ZEN_INFO("scrubbing STARTING (delete mode => {})", DoDelete);
- WorkerThreadPool ThreadPool{4, "scrubber"};
- ScrubContext Ctx{ThreadPool, Deadline};
+ WorkerThreadPool& ThreadPool = GetSmallWorkerPool();
+ ScrubContext Ctx{ThreadPool, Deadline};
try
{