Skip to content

Commit

Permalink
Added "relaxed" memory management mode at Qserv worker
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
iagaponenko committed Feb 3, 2024
1 parent 6e91abe commit 2cb57ae
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/admin/templates/xrootd/etc/xrdssi.cf.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ password =
[memman]

# MemMan class to use for managing memory for tables
# can be "MemManReal" or "MemManNone"
# can be "MemManReal", "MemManNone" or "MemManNoneRelaxed"
# class = MemManReal

# Memory available for locking tables, in MB
Expand Down
3 changes: 3 additions & 0 deletions src/xrdsvc/SsiService.cc
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,9 @@ SsiService::SsiService(XrdSsiLogger* log) {
memman::MemMan::create(memManSize, workerConfig->getMemManLocation()));
} else if (cfgMemMan == "MemManNone") {
memMan = make_shared<memman::MemManNone>(1, false);
} else if (cfgMemMan == "MemManNoneRelaxed") {
bool const alwaysLock = true;
memMan = make_shared<memman::MemManNone>(1, alwaysLock);
} else {
LOGS(_log, LOG_LVL_ERROR, "Unrecognized memory manager " << cfgMemMan);
throw wconfig::WorkerConfigError("Unrecognized memory manager.");
Expand Down

0 comments on commit 2cb57ae

Please sign in to comment.