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/zenserver | |
| 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/zenserver')
| -rw-r--r-- | src/zenserver/admin/admin.cpp | 6 | ||||
| -rw-r--r-- | src/zenserver/config.cpp | 8 | ||||
| -rw-r--r-- | src/zenserver/config.h | 1 | ||||
| -rw-r--r-- | src/zenserver/zenserver.cpp | 3 |
4 files changed, 17 insertions, 1 deletions
diff --git a/src/zenserver/admin/admin.cpp b/src/zenserver/admin/admin.cpp index 75ff03912..1eeb5637a 100644 --- a/src/zenserver/admin/admin.cpp +++ b/src/zenserver/admin/admin.cpp @@ -290,6 +290,7 @@ HttpAdminService::HttpAdminService(GcScheduler& Scheduler, Response << "UseGCVersion" << ((State.Config.UseGCVersion == GcVersion::kV1) ? "1" : "2"); Response << "CompactBlockUsageThresholdPercent" << State.Config.CompactBlockUsageThresholdPercent; Response << "Verbose" << State.Config.Verbose; + Response << "SingleThreaded" << State.Config.SingleThreaded; } Response.EndObject(); Response << "AreDiskWritesBlocked" << State.AreDiskWritesBlocked; @@ -410,6 +411,11 @@ HttpAdminService::HttpAdminService(GcScheduler& Scheduler, GcParams.Verbose = Param == "true"sv; } + if (auto Param = Params.GetValue("singlethreaded"); Param.empty() == false) + { + GcParams.SingleThreaded = Param == "true"sv; + } + const bool Started = m_GcScheduler.TriggerGc(GcParams); CbObjectWriter Response; diff --git a/src/zenserver/config.cpp b/src/zenserver/config.cpp index 56d14b4a9..55c90cbe1 100644 --- a/src/zenserver/config.cpp +++ b/src/zenserver/config.cpp @@ -517,6 +517,7 @@ ParseConfigFile(const std::filesystem::path& Path, ServerOptions.GcConfig.CompactBlockUsageThresholdPercent, "gc-compactblock-threshold"sv); LuaOptions.AddOption("gc.verbose"sv, ServerOptions.GcConfig.Verbose, "gc-verbose"sv); + LuaOptions.AddOption("gc.single-threaded"sv, ServerOptions.GcConfig.SingleThreaded, "gc-single-threaded"sv); ////// gc LuaOptions.AddOption("gc.cache.maxdurationseconds"sv, ServerOptions.GcConfig.Cache.MaxDurationSeconds, "gc-cache-duration-seconds"sv); @@ -982,6 +983,13 @@ ParseCliOptions(int argc, char* argv[], ZenServerOptions& ServerOptions) cxxopts::value<bool>(ServerOptions.GcConfig.Verbose)->default_value("false"), ""); + options.add_option("gc", + "", + "gc-single-threaded", + "Force GC to run single threaded.", + cxxopts::value<bool>(ServerOptions.GcConfig.SingleThreaded)->default_value("false"), + ""); + options.add_option("objectstore", "", "objectstore-enabled", diff --git a/src/zenserver/config.h b/src/zenserver/config.h index fec871a0e..41e05c7ea 100644 --- a/src/zenserver/config.h +++ b/src/zenserver/config.h @@ -75,6 +75,7 @@ struct ZenGcConfig bool UseGCV2 = false; uint32_t CompactBlockUsageThresholdPercent = 90; bool Verbose = false; + bool SingleThreaded = false; }; struct ZenOpenIdProviderConfig diff --git a/src/zenserver/zenserver.cpp b/src/zenserver/zenserver.cpp index 48ea89204..62c9227fe 100644 --- a/src/zenserver/zenserver.cpp +++ b/src/zenserver/zenserver.cpp @@ -312,7 +312,8 @@ ZenServer::Initialize(const ZenServerOptions& ServerOptions, ZenServerState::Zen .LightweightInterval = std::chrono::seconds(ServerOptions.GcConfig.LightweightIntervalSeconds), .UseGCVersion = ServerOptions.GcConfig.UseGCV2 ? GcVersion::kV2 : GcVersion::kV1, .CompactBlockUsageThresholdPercent = ServerOptions.GcConfig.CompactBlockUsageThresholdPercent, - .Verbose = ServerOptions.GcConfig.Verbose}; + .Verbose = ServerOptions.GcConfig.Verbose, + .SingleThreaded = ServerOptions.GcConfig.SingleThreaded}; m_GcScheduler.Initialize(GcConfig); // Create and register admin interface last to make sure all is properly initialized |