summaryrefslogtreecommitdiffstats
path: root/storage
diff options
context:
space:
mode:
authorGeir Storli <geirst@verizonmedia.com>2021-08-20 10:41:12 +0000
committerGeir Storli <geirst@verizonmedia.com>2021-08-20 11:03:59 +0000
commit3cf0428b6865f0efc68e39d4137279ee404b88e0 (patch)
tree1313fd5d37762feefdd638ed7ac5efe420fc76dd /storage
parenteadf49cb8c1feff72098a5f2b6a44bfe82702812 (diff)
Report max address space used in attribute vector components from content nodes (proton) to the cluster controller.
This is more generic than explicit address space values for enum store and multi value. This is used in the cluster controller to determine whether to block external feed.
Diffstat (limited to 'storage')
-rw-r--r--storage/src/tests/persistence/filestorage/service_layer_host_info_reporter_test.cpp44
-rw-r--r--storage/src/vespa/storage/persistence/filestorage/service_layer_host_info_reporter.cpp21
2 files changed, 22 insertions, 43 deletions
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();