aboutsummaryrefslogtreecommitdiffstats
path: root/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp')
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp28
1 files changed, 26 insertions, 2 deletions
diff --git a/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp b/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp
index a5b0df67b77..35d6973e34b 100644
--- a/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp
+++ b/searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp
@@ -20,7 +20,7 @@ shouldUseConservativeMode(const ResourceUsageState &resourceState,
}
void
-MemoryFlushConfigUpdater::considerUseConservativeDiskMode(const LockGuard &,
+MemoryFlushConfigUpdater::considerUseConservativeDiskMode(const LockGuard &guard,
MemoryFlush::Config &newConfig)
{
if (shouldUseConservativeMode(_currState.diskState(), _useConservativeDiskMode,
@@ -30,6 +30,9 @@ MemoryFlushConfigUpdater::considerUseConservativeDiskMode(const LockGuard &,
_useConservativeDiskMode = true;
} else {
_useConservativeDiskMode = false;
+ if (_nodeRetired) {
+ considerUseRelaxedDiskMode(guard, newConfig);
+ }
}
}
@@ -49,6 +52,18 @@ MemoryFlushConfigUpdater::considerUseConservativeMemoryMode(const LockGuard &,
}
void
+MemoryFlushConfigUpdater::considerUseRelaxedDiskMode(const LockGuard &, MemoryFlush::Config &newConfig)
+{
+ double utilization = _currState.diskState().utilization();
+ double bloatMargin = _currConfig.conservative.lowwatermarkfactor - utilization;
+ if (bloatMargin > 0.0) {
+ // Node retired and disk utiliation is below low mater mark factor.
+ newConfig.diskBloatFactor = 1.0;
+ newConfig.globalDiskBloatFactor = std::max(bloatMargin * 0.8, _currConfig.diskbloatfactor);
+ }
+}
+
+void
MemoryFlushConfigUpdater::updateFlushStrategy(const LockGuard &guard)
{
MemoryFlush::Config newConfig = convertConfig(_currConfig, _memory);
@@ -66,7 +81,8 @@ MemoryFlushConfigUpdater::MemoryFlushConfigUpdater(const MemoryFlush::SP &flushS
_memory(memory),
_currState(),
_useConservativeDiskMode(false),
- _useConservativeMemoryMode(false)
+ _useConservativeMemoryMode(false),
+ _nodeRetired(false)
{
}
@@ -86,6 +102,14 @@ MemoryFlushConfigUpdater::notifyDiskMemUsage(DiskMemUsageState newState)
updateFlushStrategy(guard);
}
+void
+MemoryFlushConfigUpdater::setNodeRetired(bool nodeRetired)
+{
+ LockGuard guard(_mutex);
+ _nodeRetired = nodeRetired;
+ updateFlushStrategy(guard);
+}
+
namespace {
size_t