diff options
Diffstat (limited to 'src/zenserver/zenserver.cpp')
| -rw-r--r-- | src/zenserver/zenserver.cpp | 49 |
1 files changed, 36 insertions, 13 deletions
diff --git a/src/zenserver/zenserver.cpp b/src/zenserver/zenserver.cpp index ebc56d7d9..66b6cb858 100644 --- a/src/zenserver/zenserver.cpp +++ b/src/zenserver/zenserver.cpp @@ -54,8 +54,18 @@ ZEN_THIRD_PARTY_INCLUDES_END #include "config.h" #include "diag/logging.h" +#include <zencore/memory/llm.h> + namespace zen { +static const FLLMTag& +GetZenserverTag() +{ + static FLLMTag _("zenserver"); + + return _; +} + namespace utils { extern std::atomic_uint32_t SignalCounter[NSIG]; } @@ -117,6 +127,7 @@ ZenServer::OnReady() int ZenServer::Initialize(const ZenServerOptions& ServerOptions, ZenServerState::ZenServerEntry* ServerEntry) { + ZEN_MEMSCOPE(GetZenserverTag()); const std::string MutexName = fmt::format("zen_{}", ServerOptions.BasePort); if (NamedMutex::Exists(MutexName)) @@ -232,19 +243,22 @@ ZenServer::Initialize(const ZenServerOptions& ServerOptions, ZenServerState::Zen ZEN_INFO("instantiating project service"); - m_ProjectStore = - new ProjectStore(*m_CidStore, - m_DataRoot / "projects", - m_GcManager, - *m_JobQueue, - ProjectStore::Configuration{.StoreAttachmentMetaData = ServerOptions.ProjectStoreConfig.StoreAttachmentMetaData}); + m_ProjectStore = new ProjectStore(*m_CidStore, + m_DataRoot / "projects", + m_GcManager, + *m_JobQueue, + *m_OpenProcessCache, + ProjectStore::Configuration{}); m_HttpProjectService.reset(new HttpProjectService{*m_CidStore, m_ProjectStore, m_StatsService, *m_AuthMgr}); if (ServerOptions.WorksSpacesConfig.Enabled) { m_Workspaces.reset(new Workspaces()); m_HttpWorkspacesService.reset( - new HttpWorkspacesService(m_StatsService, {.SystemRootDir = ServerOptions.SystemRootDir}, *m_Workspaces)); + new HttpWorkspacesService(m_StatsService, + {.SystemRootDir = ServerOptions.SystemRootDir, + .AllowConfigurationChanges = ServerOptions.WorksSpacesConfig.AllowConfigurationChanges}, + *m_Workspaces)); } if (ServerOptions.StructuredCacheConfig.Enabled) @@ -318,10 +332,11 @@ ZenServer::Initialize(const ZenServerOptions& ServerOptions, ZenServerState::Zen .DiskSizeSoftLimit = ServerOptions.GcConfig.DiskSizeSoftLimit, .MinimumFreeDiskSpaceToAllowWrites = ServerOptions.GcConfig.MinimumFreeDiskSpaceToAllowWrites, .LightweightInterval = std::chrono::seconds(ServerOptions.GcConfig.LightweightIntervalSeconds), - .UseGCVersion = ServerOptions.GcConfig.UseGCV2 ? GcVersion::kV2 : GcVersion::kV1, + .UseGCVersion = ServerOptions.GcConfig.UseGCV2 ? GcVersion::kV2 : GcVersion::kV1_Deprecated, .CompactBlockUsageThresholdPercent = ServerOptions.GcConfig.CompactBlockUsageThresholdPercent, .Verbose = ServerOptions.GcConfig.Verbose, - .SingleThreaded = ServerOptions.GcConfig.SingleThreaded}; + .SingleThreaded = ServerOptions.GcConfig.SingleThreaded, + .AttachmentPassCount = ServerOptions.GcConfig.AttachmentPassCount}; m_GcScheduler.Initialize(GcConfig); // Create and register admin interface last to make sure all is properly initialized @@ -518,15 +533,14 @@ ZenServer::InitializeStructuredCache(const ZenServerOptions& ServerOptions) Config.NamespaceConfig.DiskLayerConfig.MemCacheTargetFootprintBytes = ServerOptions.StructuredCacheConfig.MemTargetFootprintBytes; Config.NamespaceConfig.DiskLayerConfig.MemCacheTrimIntervalSeconds = ServerOptions.StructuredCacheConfig.MemTrimIntervalSeconds; Config.NamespaceConfig.DiskLayerConfig.MemCacheMaxAgeSeconds = ServerOptions.StructuredCacheConfig.MemMaxAgeSeconds; - Config.NamespaceConfig.DiskLayerConfig.BucketConfig.StoreAttachmentMetaData = - ServerOptions.StructuredCacheConfig.StoreAttachmentMetaData; if (ServerOptions.IsDedicated) { Config.NamespaceConfig.DiskLayerConfig.BucketConfig.LargeObjectThreshold = 128 * 1024 * 1024; } - m_CacheStore = new ZenCacheStore(m_GcManager, *m_JobQueue, m_DataRoot / "cache", Config, m_GcManager.GetDiskWriteBlocker()); + m_CacheStore = new ZenCacheStore(m_GcManager, *m_JobQueue, m_DataRoot / "cache", Config, m_GcManager.GetDiskWriteBlocker()); + m_OpenProcessCache = std::make_unique<OpenProcessCache>(); const ZenUpstreamCacheConfig& UpstreamConfig = ServerOptions.UpstreamCacheConfig; @@ -608,7 +622,8 @@ ZenServer::InitializeStructuredCache(const ZenServerOptions& ServerOptions) m_StatsService, m_StatusService, *m_UpstreamCache, - m_GcManager.GetDiskWriteBlocker()); + m_GcManager.GetDiskWriteBlocker(), + *m_OpenProcessCache); m_Http->RegisterService(*m_StructuredCacheService); m_Http->RegisterService(*m_UpstreamService); @@ -789,6 +804,7 @@ ZenServer::Cleanup() m_UpstreamService.reset(); m_UpstreamCache.reset(); m_CacheStore = {}; + m_OpenProcessCache.reset(); m_HttpWorkspacesService.reset(); m_Workspaces.reset(); @@ -809,6 +825,7 @@ ZenServer::Cleanup() void ZenServer::EnsureIoRunner() { + ZEN_MEMSCOPE(GetZenserverTag()); if (!m_IoRunner.joinable()) { m_IoRunner = std::thread{[this] { @@ -821,6 +838,7 @@ ZenServer::EnsureIoRunner() void ZenServer::EnqueueProcessMonitorTimer() { + ZEN_MEMSCOPE(GetZenserverTag()); m_PidCheckTimer.expires_after(std::chrono::seconds(1)); m_PidCheckTimer.async_wait([this](const asio::error_code&) { CheckOwnerPid(); }); @@ -830,6 +848,7 @@ ZenServer::EnqueueProcessMonitorTimer() void ZenServer::EnqueueStateMarkerTimer() { + ZEN_MEMSCOPE(GetZenserverTag()); m_StateMakerTimer.expires_after(std::chrono::seconds(5)); m_StateMakerTimer.async_wait([this](const asio::error_code&) { CheckStateMarker(); }); EnsureIoRunner(); @@ -838,6 +857,7 @@ ZenServer::EnqueueStateMarkerTimer() void ZenServer::EnqueueSigIntTimer() { + ZEN_MEMSCOPE(GetZenserverTag()); m_SigIntTimer.expires_after(std::chrono::milliseconds(500)); m_SigIntTimer.async_wait([this](const asio::error_code&) { CheckSigInt(); }); EnsureIoRunner(); @@ -846,6 +866,7 @@ ZenServer::EnqueueSigIntTimer() void ZenServer::EnqueueStateExitFlagTimer() { + ZEN_MEMSCOPE(GetZenserverTag()); m_StateExitFlagTimer.expires_after(std::chrono::milliseconds(500)); m_StateExitFlagTimer.async_wait([this](const asio::error_code&) { CheckStateExitFlag(); }); EnsureIoRunner(); @@ -854,6 +875,7 @@ ZenServer::EnqueueStateExitFlagTimer() void ZenServer::EnqueueStatsReportingTimer() { + ZEN_MEMSCOPE(GetZenserverTag()); m_StatsReportingTimer.expires_after(std::chrono::milliseconds(500)); m_StatsReportingTimer.async_wait([this](const asio::error_code& Ec) { if (!Ec) @@ -868,6 +890,7 @@ ZenServer::EnqueueStatsReportingTimer() void ZenServer::CheckStateMarker() { + ZEN_MEMSCOPE(GetZenserverTag()); std::filesystem::path StateMarkerPath = m_DataRoot / "state_marker"; try { |