From 5e2d92bc512bec1b8d95a80ef2face5aacc54883 Mon Sep 17 00:00:00 2001 From: Igor Gaponenko Date: Mon, 18 Dec 2023 19:21:57 +0000 Subject: [PATCH] Added "relaxed" memory management mode at Qserv worker The memory management node is a variation of MemManNone except it won't report a failure to (memory) lock tables where such locking is required. With this mode, the scheduler would not enforce additional restrictions on the number of queries that are processed in parallel. In case of using the non-relaxed manager MemManNone the processing concurrency is forced to be 1 per queue regardles of what's specified in the worker's configuration or the number of the hardware threads on a machine. --- src/admin/templates/xrootd/etc/xrdssi.cf.jinja | 3 ++- src/xrdsvc/SsiService.cc | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/admin/templates/xrootd/etc/xrdssi.cf.jinja b/src/admin/templates/xrootd/etc/xrdssi.cf.jinja index 440d30518..1d2ff4d2a 100644 --- a/src/admin/templates/xrootd/etc/xrdssi.cf.jinja +++ b/src/admin/templates/xrootd/etc/xrdssi.cf.jinja @@ -15,8 +15,9 @@ password = [memman] # MemMan class to use for managing memory for tables -# can be "MemManReal" or "MemManNone" +# can be "MemManReal", "MemManNone" or "MemManNoneRelaxed" # class = MemManReal +class = MemManNoneRelaxed # Memory available for locking tables, in MB # memory = 1000 diff --git a/src/xrdsvc/SsiService.cc b/src/xrdsvc/SsiService.cc index 2217c20ac..a7c206bf0 100644 --- a/src/xrdsvc/SsiService.cc +++ b/src/xrdsvc/SsiService.cc @@ -168,6 +168,9 @@ SsiService::SsiService(XrdSsiLogger* log) { memman::MemMan::create(memManSize, workerConfig->getMemManLocation())); } else if (cfgMemMan == "MemManNone") { memMan = make_shared(1, false); + } else if (cfgMemMan == "MemManNoneRelaxed") { + bool const alwaysLock = true; + memMan = make_shared(1, alwaysLock); } else { LOGS(_log, LOG_LVL_ERROR, "Unrecognized memory manager " << cfgMemMan); throw wconfig::WorkerConfigError("Unrecognized memory manager.");