summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2021-06-23 13:20:53 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2021-06-23 13:20:53 +0000
commitc62cacfcf3092ebb3cb473574d793015e27a3a71 (patch)
treec5f71726e34f35809378b13b92e0da48747fe3c4
parente348c1c325e0f92d7e638a80e67ba4027b950347 (diff)
Only log when config actually changes.
-rw-r--r--searchcore/src/tests/proton/server/memory_flush_config_updater/memory_flush_config_updater_test.cpp29
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/memory_flush_config_updater.cpp17
-rw-r--r--searchcore/src/vespa/searchcore/proton/server/memoryflush.h8
3 files changed, 47 insertions, 7 deletions
diff --git a/searchcore/src/tests/proton/server/memory_flush_config_updater/memory_flush_config_updater_test.cpp b/searchcore/src/tests/proton/server/memory_flush_config_updater/memory_flush_config_updater_test.cpp
index f918ebe9179..0e06e5d28ed 100644
--- a/searchcore/src/tests/proton/server/memory_flush_config_updater/memory_flush_config_updater_test.cpp
+++ b/searchcore/src/tests/proton/server/memory_flush_config_updater/memory_flush_config_updater_test.cpp
@@ -75,6 +75,35 @@ TEST_F("require that strategy is updated when setting new config", Fixture)
TEST_DO(f.assertStrategyConfig(6, 3, 30));
}
+TEST("require that MemoryFlush::Config equal is correct") {
+ MemoryFlush::Config a, b;
+ EXPECT_TRUE(a.equal(b) && b.equal(a));
+ a.maxGlobalMemory = 7;
+ EXPECT_FALSE(a.equal(b) || b.equal(a));
+ b.maxGlobalMemory = 7;
+ EXPECT_TRUE(a.equal(b) && b.equal(a));
+ a.maxMemoryGain = 8;
+ EXPECT_FALSE(a.equal(b) || b.equal(a));
+ b.maxMemoryGain = 8;
+ EXPECT_TRUE(a.equal(b) && b.equal(a));
+ a.maxGlobalTlsSize = 9;
+ EXPECT_FALSE(a.equal(b) || b.equal(a));
+ b.maxGlobalTlsSize = 9;
+ EXPECT_TRUE(a.equal(b) && b.equal(a));
+ a.maxTimeGain = 10us;
+ EXPECT_FALSE(a.equal(b) || b.equal(a));
+ b.maxTimeGain = 10us;
+ EXPECT_TRUE(a.equal(b) && b.equal(a));
+ a.globalDiskBloatFactor = 11;
+ EXPECT_FALSE(a.equal(b) || b.equal(a));
+ b.globalDiskBloatFactor = 11;
+ EXPECT_TRUE(a.equal(b) && b.equal(a));
+ a.diskBloatFactor = 12;
+ EXPECT_FALSE(a.equal(b) || b.equal(a));
+ b.diskBloatFactor = 12;
+ EXPECT_TRUE(a.equal(b) && b.equal(a));
+}
+
TEST("require that we use configured memory limits") {
auto cfg = MemoryFlushConfigUpdater::convertConfig(getConfig(6, 3, 30), defaultMemory);
EXPECT_EQUAL(cfg.maxGlobalMemory, 6u);
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 cf51c7be518..1600ec21756 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
@@ -74,13 +74,16 @@ MemoryFlushConfigUpdater::updateFlushStrategy(const LockGuard &guard, const char
MemoryFlush::Config newConfig = convertConfig(_currConfig, _memory);
considerUseConservativeDiskMode(guard, newConfig);
considerUseConservativeMemoryMode(guard, newConfig);
- _flushStrategy->setConfig(newConfig);
- LOG(info, "Due to %s (conservative-disk=%d, conservative-memory=%d, retired=%d) flush config updated to "
- "global-disk-bloat(%1.2f), max-tls-size(%" PRIu64 "),"
- "max-global-memory(%" PRIu64 "), max-memory-gain(%" PRIu64 ")",
- why, _useConservativeDiskMode, _useConservativeMemoryMode, _nodeRetired,
- newConfig.globalDiskBloatFactor, newConfig.maxGlobalTlsSize,
- newConfig.maxGlobalMemory, newConfig.maxMemoryGain);
+ MemoryFlush::Config currentConfig = _flushStrategy->getConfig();
+ if ( ! currentConfig.equal(newConfig) ) {
+ _flushStrategy->setConfig(newConfig);
+ LOG(info, "Due to %s (conservative-disk=%d, conservative-memory=%d, retired=%d) flush config updated to "
+ "global-disk-bloat(%1.2f), max-tls-size(%" PRIu64 "),"
+ "max-global-memory(%" PRIu64 "), max-memory-gain(%" PRIu64 ")",
+ why, _useConservativeDiskMode, _useConservativeMemoryMode, _nodeRetired,
+ newConfig.globalDiskBloatFactor, newConfig.maxGlobalTlsSize,
+ newConfig.maxGlobalMemory, newConfig.maxMemoryGain);
+ }
}
MemoryFlushConfigUpdater::MemoryFlushConfigUpdater(const MemoryFlush::SP &flushStrategy,
diff --git a/searchcore/src/vespa/searchcore/proton/server/memoryflush.h b/searchcore/src/vespa/searchcore/proton/server/memoryflush.h
index 82cf3397ef0..1fac4800d95 100644
--- a/searchcore/src/vespa/searchcore/proton/server/memoryflush.h
+++ b/searchcore/src/vespa/searchcore/proton/server/memoryflush.h
@@ -34,6 +34,14 @@ public:
uint64_t maxMemoryGain_in,
double diskBloatFactor_in,
vespalib::duration maxTimeGain_in);
+ bool equal(const Config & rhs) const {
+ return (maxGlobalMemory == rhs.maxGlobalMemory) &&
+ (maxGlobalTlsSize == rhs.maxGlobalTlsSize) &&
+ (globalDiskBloatFactor == rhs.globalDiskBloatFactor) &&
+ (maxMemoryGain == rhs.maxMemoryGain) &&
+ (maxTimeGain == rhs.maxTimeGain) &&
+ (diskBloatFactor == rhs. diskBloatFactor);
+ }
};
enum OrderType { DEFAULT, MAXAGE, DISKBLOAT, TLSSIZE, MEMORY };