From ef8cb5f11168183be77b1c121a9171b2ea9fbaab Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Fri, 1 Apr 2022 15:20:42 +0200 Subject: Make gc reserve a global resource --- zenserver/config.cpp | 8 ++++++++ zenserver/config.h | 1 + zenserver/zenserver.cpp | 1 + 3 files changed, 10 insertions(+) (limited to 'zenserver') diff --git a/zenserver/config.cpp b/zenserver/config.cpp index b7fc18b4e..ac0f863cc 100644 --- a/zenserver/config.cpp +++ b/zenserver/config.cpp @@ -428,6 +428,13 @@ ParseCliOptions(int argc, char* argv[], ZenServerOptions& ServerOptions) "Max duration in seconds before Z$ entries get evicted.", cxxopts::value(ServerOptions.GcConfig.Cache.MaxDurationSeconds)->default_value("86400"), ""); + + options.add_option("gc", + "", + "disk-reserve-size", + "Size of gc disk reserve in bytes.", + cxxopts::value(ServerOptions.GcConfig.DiskReserveSize)->default_value("268435456"), + ""); try { auto result = options.parse(argc, argv); @@ -699,6 +706,7 @@ ParseConfigFile(const std::filesystem::path& Path, ZenServerOptions& ServerOptio if (sol::optional GcConfig = lua["gc"]) { ServerOptions.GcConfig.IntervalSeconds = GcConfig.value().get_or("intervalseconds", 0); + ServerOptions.GcConfig.DiskReserveSize = GcConfig.value().get_or("diskreservesize", uint64_t(1u << 28)); if (sol::optional CacheGcConfig = GcConfig.value()["cache"]) { diff --git a/zenserver/config.h b/zenserver/config.h index a61a7f89f..9f1b3645c 100644 --- a/zenserver/config.h +++ b/zenserver/config.h @@ -91,6 +91,7 @@ struct ZenGcConfig int32_t IntervalSeconds = 0; bool CollectSmallObjects = true; bool Enabled = true; + uint64_t DiskReserveSize = 1ul << 28; }; struct ZenServerOptions diff --git a/zenserver/zenserver.cpp b/zenserver/zenserver.cpp index 667bcd317..f81deb167 100644 --- a/zenserver/zenserver.cpp +++ b/zenserver/zenserver.cpp @@ -369,6 +369,7 @@ public: .MaxCacheDuration = std::chrono::seconds(ServerOptions.GcConfig.Cache.MaxDurationSeconds), .CollectSmallObjects = ServerOptions.GcConfig.CollectSmallObjects, .Enabled = ServerOptions.GcConfig.Enabled, + .DiskReserveSize = ServerOptions.GcConfig.DiskReserveSize, }; m_GcScheduler.Initialize(GcConfig); -- cgit v1.2.3