diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2021-06-23 13:20:53 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2021-06-23 13:20:53 +0000 |
commit | c62cacfcf3092ebb3cb473574d793015e27a3a71 (patch) | |
tree | c5f71726e34f35809378b13b92e0da48747fe3c4 | |
parent | e348c1c325e0f92d7e638a80e67ba4027b950347 (diff) |
Only log when config actually changes.
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 }; |