diff options
11 files changed, 74 insertions, 109 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ResourceLimits.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ResourceLimits.java index a12e183b409..cd9a0c89bf8 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/content/ResourceLimits.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ResourceLimits.java @@ -37,8 +37,7 @@ public class ResourceLimits implements FleetcontrollerConfig.Producer, ProtonCon // storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.cpp builder.cluster_feed_block_limit.put("memory", memoryLimit.orElse(0.8)); builder.cluster_feed_block_limit.put("disk", diskLimit.orElse(0.8)); - builder.cluster_feed_block_limit.put("attribute-enum-store", 0.89); - builder.cluster_feed_block_limit.put("attribute-multi-value", 0.89); + builder.cluster_feed_block_limit.put("attribute-address-space", 0.89); } @Override diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchClusterTest.java index 46bd005deb6..b9a98dab432 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchClusterTest.java @@ -99,7 +99,7 @@ public class ContentSearchClusterTest { private static void assertClusterControllerResourceLimits(double expDiskLimit, double expMemoryLimit, ContentCluster cluster) { var limits = getFleetcontrollerConfig(cluster).cluster_feed_block_limit(); - assertEquals(4, limits.size()); + assertEquals(3, limits.size()); assertEquals(expDiskLimit, limits.get("disk"), EPSILON); assertEquals(expMemoryLimit, limits.get("memory"), EPSILON); } diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java index d17f2d36b9c..cc1b96dc588 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java @@ -124,11 +124,10 @@ public class FleetControllerClusterTest { private void assertLimits(double expDisk, double expMemory, FleetcontrollerConfig config) { var limits = config.cluster_feed_block_limit(); - assertEquals(4, limits.size()); + assertEquals(3, limits.size()); assertEquals(expDisk, limits.get("disk"), DELTA); assertEquals(expMemory, limits.get("memory"), DELTA); - assertEquals(0.89, limits.get("attribute-enum-store"), DELTA); - assertEquals(0.89, limits.get("attribute-multi-value"), DELTA); + assertEquals(0.89, limits.get("attribute-address-space"), DELTA); } private FleetcontrollerConfig getConfigForResourceLimitsTuning(Double diskLimit, Double memoryLimit) { diff --git a/persistence/src/vespa/persistence/spi/attribute_resource_usage.h b/persistence/src/vespa/persistence/spi/attribute_resource_usage.h index 02e0c248e3d..5cd8c93890f 100644 --- a/persistence/src/vespa/persistence/spi/attribute_resource_usage.h +++ b/persistence/src/vespa/persistence/spi/attribute_resource_usage.h @@ -13,7 +13,7 @@ namespace storage::spi { class AttributeResourceUsage { double _usage; - vespalib::string _name; // document_type.subdb.attribute + vespalib::string _name; // document_type.subdb.attribute.component public: AttributeResourceUsage(double usage, const vespalib::string& name) diff --git a/persistence/src/vespa/persistence/spi/resource_usage.cpp b/persistence/src/vespa/persistence/spi/resource_usage.cpp index 517a45a3d41..3dfc026c714 100644 --- a/persistence/src/vespa/persistence/spi/resource_usage.cpp +++ b/persistence/src/vespa/persistence/spi/resource_usage.cpp @@ -21,8 +21,7 @@ std::ostream& operator<<(std::ostream& out, const ResourceUsage& resource_usage) { out << "{disk_usage=" << resource_usage.get_disk_usage() << ", memory_usage=" << resource_usage.get_memory_usage() << - ", attribute_enum_store_usage=" << resource_usage.get_attribute_enum_store_usage() << - ", attribute_multivalue_usage=" << resource_usage.get_attribute_multivalue_usage() << "}"; + ", attribute_address_space_usage=" << resource_usage.get_attribute_address_space_usage() << "}"; return out; } diff --git a/persistence/src/vespa/persistence/spi/resource_usage.h b/persistence/src/vespa/persistence/spi/resource_usage.h index 921da8bbf06..82ff889c03e 100644 --- a/persistence/src/vespa/persistence/spi/resource_usage.h +++ b/persistence/src/vespa/persistence/spi/resource_usage.h @@ -14,21 +14,20 @@ class ResourceUsage { double _disk_usage; double _memory_usage; - AttributeResourceUsage _attribute_enum_store_usage; - AttributeResourceUsage _attribute_multivalue_usage; + AttributeResourceUsage _attribute_address_space_usage; public: - ResourceUsage(double disk_usage, double memory_usage, const AttributeResourceUsage &attribute_enum_store_usage, const AttributeResourceUsage &attribute_multivalue_usage) + ResourceUsage(double disk_usage, double memory_usage, + const AttributeResourceUsage &attribute_address_space_usage) : _disk_usage(disk_usage), _memory_usage(memory_usage), - _attribute_enum_store_usage(attribute_enum_store_usage), - _attribute_multivalue_usage(attribute_multivalue_usage) + _attribute_address_space_usage(attribute_address_space_usage) { } ResourceUsage(double disk_usage, double memory_usage) - : ResourceUsage(disk_usage, memory_usage, AttributeResourceUsage(), AttributeResourceUsage()) + : ResourceUsage(disk_usage, memory_usage, AttributeResourceUsage()) { } @@ -49,14 +48,12 @@ public: double get_disk_usage() const noexcept { return _disk_usage; } double get_memory_usage() const noexcept { return _memory_usage; } - const AttributeResourceUsage& get_attribute_enum_store_usage() const noexcept { return _attribute_enum_store_usage; } - const AttributeResourceUsage& get_attribute_multivalue_usage() const noexcept { return _attribute_multivalue_usage; } + const AttributeResourceUsage& get_attribute_address_space_usage() const noexcept { return _attribute_address_space_usage; } bool operator==(const ResourceUsage &rhs) const noexcept { return ((_disk_usage == rhs._disk_usage) && (_memory_usage == rhs._memory_usage) && - (_attribute_enum_store_usage == rhs._attribute_enum_store_usage) && - (_attribute_multivalue_usage == rhs._attribute_multivalue_usage)); + (_attribute_address_space_usage == rhs._attribute_address_space_usage)); } bool operator!=(const ResourceUsage &rhs) const noexcept { return !operator==(rhs); diff --git a/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp b/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp index 4144b87c61d..7e1cf89ccdf 100644 --- a/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp +++ b/searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp @@ -1,11 +1,12 @@ // Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/persistence/spi/resource_usage_listener.h> #include <vespa/persistence/spi/resource_usage.h> +#include <vespa/persistence/spi/resource_usage_listener.h> #include <vespa/searchcore/proton/attribute/attribute_usage_stats.h> #include <vespa/searchcore/proton/attribute/i_attribute_usage_listener.h> #include <vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h> #include <vespa/searchcore/proton/test/disk_mem_usage_notifier.h> +#include <vespa/searchlib/attribute/address_space_components.h> #include <vespa/vespalib/gtest/gtest.h> #include <vespa/vespalib/util/idestructorcallback.h> #include <atomic> @@ -131,7 +132,7 @@ struct AttributeUsageStatsBuilder ~AttributeUsageStatsBuilder(); AttributeUsageStatsBuilder& reset() { stats = AttributeUsageStats(); return *this; } - AttributeUsageStatsBuilder& merge(const NamedAttribute& named_attribute, size_t used_enum_store, size_t used_multivalue); + AttributeUsageStatsBuilder& merge(const NamedAttribute& named_attribute, size_t used_address_space); AttributeUsageStats build() { return stats; } @@ -140,11 +141,11 @@ struct AttributeUsageStatsBuilder AttributeUsageStatsBuilder::~AttributeUsageStatsBuilder() = default; AttributeUsageStatsBuilder& -AttributeUsageStatsBuilder::merge(const NamedAttribute& named_attribute, size_t used_enum_store, size_t used_multivalue) +AttributeUsageStatsBuilder::merge(const NamedAttribute& named_attribute, size_t used_address_space) { - vespalib::AddressSpace enum_store_usage(used_enum_store, 0, usage_limit); - vespalib::AddressSpace multivalue_usage(used_multivalue, 0, usage_limit); - search::AddressSpaceUsage as_usage(enum_store_usage, multivalue_usage); + vespalib::AddressSpace address_space_usage(used_address_space, 0, usage_limit); + search::AddressSpaceUsage as_usage; + as_usage.set("comp", address_space_usage); stats.merge(as_usage, named_attribute.attribute, named_attribute.subdb); return *this; } @@ -153,11 +154,10 @@ double rel_usage(size_t usage) noexcept { return (double) usage / (double) usage_limit; } -ResourceUsage make_resource_usage(const vespalib::string& enum_store_name, size_t used_enum_store, const vespalib::string &multivalue_name, size_t used_multivalue) +ResourceUsage make_resource_usage(const vespalib::string& attr_name, size_t used_address_space) { - AttributeResourceUsage enum_store_usage(rel_usage(used_enum_store), enum_store_name); - AttributeResourceUsage multivalue_usage(rel_usage(used_multivalue), multivalue_name); - return ResourceUsage(0.0, 0.0, enum_store_usage, multivalue_usage); + AttributeResourceUsage address_space_usage(rel_usage(used_address_space), attr_name); + return ResourceUsage(0.0, 0.0, address_space_usage); } } @@ -170,24 +170,24 @@ TEST_F(ResourceUsageTrackerTest, aggregates_attribute_usage) auto aul2 = _tracker->make_attribute_usage_listener("doctype2"); AttributeUsageStatsBuilder b1; AttributeUsageStatsBuilder b2; - b1.merge(ready_a1, 10, 20).merge(ready_a2, 5, 30); - b2.merge(ready_a1, 15, 15); + b1.merge(ready_a1, 10).merge(ready_a2, 5); + b2.merge(ready_a1, 15); aul1->notify_attribute_usage(b1.build()); aul2->notify_attribute_usage(b2.build()); - EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1", 15, "doctype1.0.ready.a2", 30), get_usage()); - b1.merge(notready_a1, 5, 31); + EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1.comp", 15), get_usage()); + b1.merge(notready_a1, 16); aul1->notify_attribute_usage(b1.build()); - EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1", 15, "doctype1.2.notready.a1", 31), get_usage()); - b1.reset().merge(ready_a1, 10, 20).merge(ready_a2, 5, 30); + EXPECT_EQ(make_resource_usage("doctype1.2.notready.a1.comp", 16), get_usage()); + b1.reset().merge(ready_a1, 10).merge(ready_a2, 5); aul1->notify_attribute_usage(b1.build()); - EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1", 15, "doctype1.0.ready.a2", 30), get_usage()); + EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1.comp", 15), get_usage()); aul2.reset(); - EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1", 10, "doctype1.0.ready.a2", 30), get_usage()); + EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1.comp", 10), get_usage()); aul1.reset(); - EXPECT_EQ(make_resource_usage("", 0, "", 0), get_usage()); + EXPECT_EQ(make_resource_usage("", 0), get_usage()); aul2 = _tracker->make_attribute_usage_listener("doctype2"); aul2->notify_attribute_usage(b2.build()); - EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1", 15, "doctype2.0.ready.a1", 15), get_usage()); + EXPECT_EQ(make_resource_usage("doctype2.0.ready.a1.comp", 15), get_usage()); } TEST_F(ResourceUsageTrackerTest, can_skip_scan_when_aggregating_attributes) @@ -198,16 +198,16 @@ TEST_F(ResourceUsageTrackerTest, can_skip_scan_when_aggregating_attributes) auto aul2 = _tracker->make_attribute_usage_listener("doctype2"); AttributeUsageStatsBuilder b1; AttributeUsageStatsBuilder b2; - b1.merge(ready_a1, 20, 20).merge(ready_a2, 5, 30); - b2.merge(ready_a1, 15, 15); + b1.merge(ready_a1, 20).merge(ready_a2, 5); + b2.merge(ready_a1, 15); aul1->notify_attribute_usage(b1.build()); - EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1", 20, "doctype1.0.ready.a2", 30), get_usage()); + EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1.comp", 20), get_usage()); EXPECT_EQ(2u, get_update_count()); aul1->notify_attribute_usage(b1.build()); - EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1", 20, "doctype1.0.ready.a2", 30), get_usage()); + EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1.comp", 20), get_usage()); EXPECT_EQ(2u, get_update_count()); // usage for doctype1 has not changed aul2->notify_attribute_usage(b2.build()); - EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1", 20, "doctype1.0.ready.a2", 30), get_usage()); + EXPECT_EQ(make_resource_usage("doctype1.0.ready.a1.comp", 20), get_usage()); EXPECT_EQ(2u, get_update_count()); // usage for doctype2 is less than usage for doctype1 aul2.reset(); aul1.reset(); diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.cpp b/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.cpp index 9791b55f7b7..9f1c6e66b5c 100644 --- a/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.cpp +++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.cpp @@ -73,8 +73,7 @@ ResourceUsageTracker::ResourceUsageTracker(IDiskMemUsageNotifier& disk_mem_usage _listener(nullptr), _disk_mem_usage_notifier(disk_mem_usage_notifier), _attribute_usage(), - _attribute_enum_store_max_document_type(), - _attribute_multivalue_max_document_type() + _attribute_address_space_max_document_type() { _disk_mem_usage_notifier.addDiskMemUsageListener(this); } @@ -88,7 +87,7 @@ void ResourceUsageTracker::notifyDiskMemUsage(DiskMemUsageState state) { std::lock_guard guard(_lock); - _resource_usage = ResourceUsage(state.diskState().usage(), state.memoryState().usage(), _resource_usage.get_attribute_enum_store_usage(), _resource_usage.get_attribute_multivalue_usage()); + _resource_usage = ResourceUsage(state.diskState().usage(), state.memoryState().usage(), _resource_usage.get_attribute_address_space_usage()); if (_listener != nullptr) { _listener->update_resource_usage(_resource_usage); } @@ -125,6 +124,7 @@ namespace { bool same_usage(const AddressSpaceUsageStats &lhs, const AddressSpaceUsageStats &rhs) { return ((lhs.getUsage().usage() == rhs.getUsage().usage()) && + (lhs.get_component_name() == rhs.get_component_name()) && (lhs.getAttributeName() == rhs.getAttributeName()) && (lhs.getSubDbName() == rhs.getSubDbName())); } @@ -140,18 +140,15 @@ ResourceUsageTracker::notify_attribute_usage(const vespalib::string &document_ty { std::lock_guard guard(_lock); auto& old_usage = _attribute_usage[document_type]; - if (same_usage(old_usage.enumStoreUsage(), attribute_usage.enumStoreUsage()) && - same_usage(old_usage.multiValueUsage(), attribute_usage.multiValueUsage())) { + if (same_usage(old_usage.max_address_space_usage(), attribute_usage.max_address_space_usage())) { return; // usage for document type has not changed } old_usage = attribute_usage; - double enum_store_max = attribute_usage.enumStoreUsage().getUsage().usage(); - double multivalue_max = attribute_usage.multiValueUsage().getUsage().usage(); - double old_enum_store_max = _resource_usage.get_attribute_enum_store_usage().get_usage(); - double old_multivalue_max = _resource_usage.get_attribute_multivalue_usage().get_usage(); + double address_space_max = attribute_usage.max_address_space_usage().getUsage().usage(); + double old_address_space_max = _resource_usage.get_attribute_address_space_usage().get_usage(); - if (can_skip_scan(enum_store_max, old_enum_store_max, document_type == _attribute_enum_store_max_document_type) && - can_skip_scan(multivalue_max, old_multivalue_max, document_type == _attribute_multivalue_max_document_type)) { + if (can_skip_scan(address_space_max, old_address_space_max, + document_type == _attribute_address_space_max_document_type)) { return; // usage for document type is less than or equal to usage for other document types } if (scan_attribute_usage(false, guard) && _listener != nullptr) { @@ -168,7 +165,7 @@ class MaxAttributeUsage double _max_usage; vespalib::string get_name() const { - return *_document_type + "." + _max->getSubDbName() + "." + _max->getAttributeName(); + return *_document_type + "." + _max->getSubDbName() + "." + _max->getAttributeName() + "." + _max->get_component_name(); } public: @@ -203,23 +200,19 @@ public: bool ResourceUsageTracker::scan_attribute_usage(bool force_changed, std::lock_guard<std::mutex>&) { - MaxAttributeUsage enum_store_max; - MaxAttributeUsage multivalue_max; + MaxAttributeUsage address_space_max; for (const auto& kv : _attribute_usage) { - enum_store_max.sample(kv.first, kv.second.enumStoreUsage()); - multivalue_max.sample(kv.first, kv.second.multiValueUsage()); + address_space_max.sample(kv.first, kv.second.max_address_space_usage()); } ResourceUsage new_resource_usage(_resource_usage.get_disk_usage(), _resource_usage.get_memory_usage(), - enum_store_max.get_max_resource_usage(), - multivalue_max.get_max_resource_usage()); + address_space_max.get_max_resource_usage()); bool changed = (new_resource_usage != _resource_usage) || force_changed; if (changed) { _resource_usage = std::move(new_resource_usage); - _attribute_enum_store_max_document_type = enum_store_max.get_document_type(); - _attribute_multivalue_max_document_type = multivalue_max.get_document_type(); + _attribute_address_space_max_document_type = address_space_max.get_document_type(); } return changed; } diff --git a/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h b/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h index 879e60aeeac..40d8598a8da 100644 --- a/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h +++ b/searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h @@ -31,8 +31,7 @@ class ResourceUsageTracker : public std::enable_shared_from_this<ResourceUsageTr storage::spi::IResourceUsageListener* _listener; IDiskMemUsageNotifier& _disk_mem_usage_notifier; vespalib::hash_map<vespalib::string, AttributeUsageStats> _attribute_usage; - vespalib::string _attribute_enum_store_max_document_type; - vespalib::string _attribute_multivalue_max_document_type; + vespalib::string _attribute_address_space_max_document_type; void remove_listener(); void remove_document_type(const vespalib::string &document_type); void notify_attribute_usage(const vespalib::string &document_type, const AttributeUsageStats &attribute_usage); diff --git a/storage/src/tests/persistence/filestorage/service_layer_host_info_reporter_test.cpp b/storage/src/tests/persistence/filestorage/service_layer_host_info_reporter_test.cpp index e5ba04f789b..0b984eabea8 100644 --- a/storage/src/tests/persistence/filestorage/service_layer_host_info_reporter_test.cpp +++ b/storage/src/tests/persistence/filestorage/service_layer_host_info_reporter_test.cpp @@ -30,8 +30,7 @@ get_attribute_usage_element(const vespalib::Slime& root, const vespalib::string& return AttributeResourceUsage(usage, name.make_string()); } -const vespalib::string attr_es_name("doctype.subdb.esattr"); -const vespalib::string attr_mv_name("doctype.subdb.mvattr"); +const vespalib::string attr_name("doctype.subdb.attr.enum-store"); } @@ -43,12 +42,12 @@ struct ServiceLayerHostInfoReporterTest : ::testing::Test { ServiceLayerHostInfoReporterTest(); ~ServiceLayerHostInfoReporterTest(); - void notify(double disk_usage, double memory_usage, const AttributeResourceUsage &attribute_enum_store_usage, const AttributeResourceUsage &attribute_multivalue_usage) { + void notify(double disk_usage, double memory_usage, const AttributeResourceUsage &attribute_address_space_usage) { auto& listener = static_cast<spi::IResourceUsageListener&>(_reporter); - listener.update_resource_usage(ResourceUsage(disk_usage, memory_usage, attribute_enum_store_usage, attribute_multivalue_usage)); + listener.update_resource_usage(ResourceUsage(disk_usage, memory_usage, attribute_address_space_usage)); } void notify(double disk_usage, double memory_usage) { - notify(disk_usage, memory_usage, {0.0, ""}, {0.0, ""}); + notify(disk_usage, memory_usage, {0.0, ""}); } void set_noise_level(double level) { _reporter.set_noise_level(level); @@ -60,7 +59,8 @@ struct ServiceLayerHostInfoReporterTest : ::testing::Test { ResourceUsage get_slime_usage() { vespalib::Slime root; util::reporterToSlime(_reporter, root); - return ResourceUsage(get_usage_element(root, "disk"), get_usage_element(root, "memory"), get_attribute_usage_element(root, "attribute-enum-store"), get_attribute_usage_element(root, "attribute-multi-value")); + return ResourceUsage(get_usage_element(root, "disk"), get_usage_element(root, "memory"), + get_attribute_usage_element(root, "attribute-address-space")); } }; @@ -97,12 +97,9 @@ TEST_F(ServiceLayerHostInfoReporterTest, request_almost_immediate_node_state_as_ EXPECT_EQ(3, requested_almost_immediate_replies()); EXPECT_EQ(ResourceUsage(0.8, 0.7), get_old_usage()); EXPECT_EQ(ResourceUsage(0.7999, 0.6999), get_usage()); - notify(0.8, 0.7, {0.1, attr_es_name}, {}); - EXPECT_EQ(ResourceUsage(0.8, 0.7, {0.1, attr_es_name}, {}), get_old_usage()); - EXPECT_EQ(ResourceUsage(0.8, 0.7, {0.1, attr_es_name}, {}), get_usage()); - notify(0.8, 0.7, {0.1, attr_es_name}, {0.2, attr_mv_name}); - EXPECT_EQ(ResourceUsage(0.8, 0.7, {0.1, attr_es_name}, {0.2, attr_mv_name}), get_old_usage()); - EXPECT_EQ(ResourceUsage(0.8, 0.7, {0.1, attr_es_name}, {0.2, attr_mv_name}), get_usage()); + notify(0.8, 0.7, {0.1, attr_name}); + EXPECT_EQ(ResourceUsage(0.8, 0.7, {0.1, attr_name}), get_old_usage()); + EXPECT_EQ(ResourceUsage(0.8, 0.7, {0.1, attr_name}), get_usage()); } TEST_F(ServiceLayerHostInfoReporterTest, can_set_noise_level) @@ -125,25 +122,14 @@ TEST_F(ServiceLayerHostInfoReporterTest, can_set_noise_level) } TEST_F(ServiceLayerHostInfoReporterTest, - first_valid_attribute_enum_store_sample_triggers_immediate_node_state_when_below_noise_level) + first_valid_attribute_address_space_sample_triggers_immediate_node_state_when_below_noise_level) { set_noise_level(0.02); constexpr double usage_below_noise_level = 0.019; - notify(0.0, 0.0, {usage_below_noise_level, attr_es_name}, {}); + notify(0.0, 0.0, {usage_below_noise_level, attr_name}); EXPECT_EQ(1, requested_almost_immediate_replies()); - EXPECT_EQ(ResourceUsage(0.0, 0.0, {usage_below_noise_level, attr_es_name}, {}), get_old_usage()); - EXPECT_EQ(ResourceUsage(0.0, 0.0, {usage_below_noise_level, attr_es_name}, {}), get_usage()); -} - -TEST_F(ServiceLayerHostInfoReporterTest, - first_valid_attribute_multi_value_sample_triggers_immediate_node_state_when_below_noise_level) -{ - set_noise_level(0.02); - constexpr double usage_below_noise_level = 0.019; - notify(0.0, 0.0, {}, {usage_below_noise_level, attr_mv_name}); - EXPECT_EQ(1, requested_almost_immediate_replies()); - EXPECT_EQ(ResourceUsage(0.0, 0.0, {}, {usage_below_noise_level, attr_mv_name}), get_old_usage()); - EXPECT_EQ(ResourceUsage(0.0, 0.0, {}, {usage_below_noise_level, attr_mv_name}), get_usage()); + EXPECT_EQ(ResourceUsage(0.0, 0.0, {usage_below_noise_level, attr_name}), get_old_usage()); + EXPECT_EQ(ResourceUsage(0.0, 0.0, {usage_below_noise_level, attr_name}), get_usage()); } TEST_F(ServiceLayerHostInfoReporterTest, json_report_generated) @@ -151,8 +137,8 @@ TEST_F(ServiceLayerHostInfoReporterTest, json_report_generated) EXPECT_EQ(ResourceUsage(0.0, 0.0), get_slime_usage()); notify(0.5, 0.4); EXPECT_EQ(ResourceUsage(0.5, 0.4), get_slime_usage()); - notify(0.5, 0.4, {0.3, attr_es_name}, {0.2, attr_mv_name}); - EXPECT_EQ(ResourceUsage(0.5, 0.4, {0.3, attr_es_name}, {0.2, attr_mv_name}), get_slime_usage()); + notify(0.5, 0.4, {0.3, attr_name}); + EXPECT_EQ(ResourceUsage(0.5, 0.4, {0.3, attr_name}), get_slime_usage()); } } diff --git a/storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.cpp b/storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.cpp index 97244582f50..67668d8ea55 100644 --- a/storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.cpp +++ b/storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.cpp @@ -18,8 +18,7 @@ namespace { const vespalib::string memory_label("memory"); const vespalib::string disk_label("disk"); -const vespalib::string attribute_enum_store_label("attribute-enum-store"); -const vespalib::string attribute_multi_value_label("attribute-multi-value"); +const vespalib::string attribute_address_space_label("attribute-address-space"); void write_usage(vespalib::JsonStream& output, const vespalib::string &label, double value) { @@ -40,18 +39,13 @@ bool want_immediate_report(const spi::ResourceUsage& old_usage, const spi::Resou { auto disk_usage_diff = fabs(new_usage.get_disk_usage() - old_usage.get_disk_usage()); auto memory_usage_diff = fabs(new_usage.get_memory_usage() - old_usage.get_memory_usage()); - auto enum_store_diff = fabs(new_usage.get_attribute_enum_store_usage().get_usage() - old_usage.get_attribute_enum_store_usage().get_usage()); - auto multivalue_diff = fabs(new_usage.get_attribute_multivalue_usage().get_usage() - old_usage.get_attribute_multivalue_usage().get_usage()); - bool enum_store_got_valid = !old_usage.get_attribute_enum_store_usage().valid() && - new_usage.get_attribute_enum_store_usage().valid(); - bool multivalue_got_valid = !old_usage.get_attribute_multivalue_usage().valid() && - new_usage.get_attribute_multivalue_usage().valid(); + auto address_space_diff = fabs(new_usage.get_attribute_address_space_usage().get_usage() - old_usage.get_attribute_address_space_usage().get_usage()); + bool address_space_got_valid = !old_usage.get_attribute_address_space_usage().valid() && + new_usage.get_attribute_address_space_usage().valid(); return ((disk_usage_diff > noise_level) || (memory_usage_diff > noise_level) || - (enum_store_diff > noise_level) || - (multivalue_diff > noise_level) || - enum_store_got_valid || - multivalue_got_valid); + (address_space_diff > noise_level) || + address_space_got_valid); } } @@ -121,8 +115,7 @@ ServiceLayerHostInfoReporter::report(vespalib::JsonStream& output) LOG(debug, "report(): usage=%s", to_string(usage).c_str()); write_usage(output, memory_label, usage.get_memory_usage()); write_usage(output, disk_label, usage.get_disk_usage()); - write_attribute_usage(output, attribute_enum_store_label, usage.get_attribute_enum_store_usage()); - write_attribute_usage(output, attribute_multi_value_label, usage.get_attribute_multivalue_usage()); + write_attribute_usage(output, attribute_address_space_label, usage.get_attribute_address_space_usage()); } output << End(); output << End(); |