aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ResourceLimits.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ContentSearchClusterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java5
-rw-r--r--persistence/src/vespa/persistence/spi/attribute_resource_usage.h2
-rw-r--r--persistence/src/vespa/persistence/spi/resource_usage.cpp3
-rw-r--r--persistence/src/vespa/persistence/spi/resource_usage.h17
-rw-r--r--searchcore/src/tests/proton/persistenceengine/resource_usage_tracker/resource_usage_tracker_test.cpp50
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.cpp33
-rw-r--r--searchcore/src/vespa/searchcore/proton/persistenceengine/resource_usage_tracker.h3
-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
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();