summaryrefslogtreecommitdiffstats
path: root/persistence
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2021-01-22 11:52:17 +0100
committerTor Egge <Tor.Egge@broadpark.no>2021-01-22 12:14:47 +0100
commitbffcd72abdf3a8b6996367c7ce6cfda4bc40e17c (patch)
tree76729f43c0ef2587a869fa7a79a08b6d0cdaf380 /persistence
parent3736ac79a115a0b37225d9c358718f1c74026380 (diff)
Track attribute resource usage.
Diffstat (limited to 'persistence')
-rw-r--r--persistence/src/vespa/persistence/spi/CMakeLists.txt1
-rw-r--r--persistence/src/vespa/persistence/spi/attribute_resource_usage.cpp15
-rw-r--r--persistence/src/vespa/persistence/spi/attribute_resource_usage.h44
-rw-r--r--persistence/src/vespa/persistence/spi/resource_usage.cpp6
-rw-r--r--persistence/src/vespa/persistence/spi/resource_usage.h30
5 files changed, 89 insertions, 7 deletions
diff --git a/persistence/src/vespa/persistence/spi/CMakeLists.txt b/persistence/src/vespa/persistence/spi/CMakeLists.txt
index ef871c2584f..c621b838371 100644
--- a/persistence/src/vespa/persistence/spi/CMakeLists.txt
+++ b/persistence/src/vespa/persistence/spi/CMakeLists.txt
@@ -2,6 +2,7 @@
vespa_add_library(persistence_spi OBJECT
SOURCES
abstractpersistenceprovider.cpp
+ attribute_resource_usage.cpp
bucket.cpp
bucketinfo.cpp
clusterstate.cpp
diff --git a/persistence/src/vespa/persistence/spi/attribute_resource_usage.cpp b/persistence/src/vespa/persistence/spi/attribute_resource_usage.cpp
new file mode 100644
index 00000000000..42979be6d86
--- /dev/null
+++ b/persistence/src/vespa/persistence/spi/attribute_resource_usage.cpp
@@ -0,0 +1,15 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "attribute_resource_usage.h"
+#include <iostream>
+
+namespace storage::spi {
+
+std::ostream& operator<<(std::ostream& out, const AttributeResourceUsage& attribute_resource_usage)
+{
+ out << "{usage=" << attribute_resource_usage.get_usage() <<
+ ", name=" << attribute_resource_usage.get_name() << "}";
+ return out;
+}
+
+}
diff --git a/persistence/src/vespa/persistence/spi/attribute_resource_usage.h b/persistence/src/vespa/persistence/spi/attribute_resource_usage.h
new file mode 100644
index 00000000000..8d28370e504
--- /dev/null
+++ b/persistence/src/vespa/persistence/spi/attribute_resource_usage.h
@@ -0,0 +1,44 @@
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vespalib/stllike/string.h>
+
+namespace storage::spi {
+
+/*
+ * Class representing attribute resource usage for persistence provider.
+ * Numbers are normalized to be between 0.0 and 1.0
+ */
+class AttributeResourceUsage
+{
+ double _usage;
+ vespalib::string _name; // document_type.subdb.attribute
+public:
+
+ AttributeResourceUsage(double usage, const vespalib::string& name)
+ : _usage(usage),
+ _name(name)
+ {
+ }
+
+ AttributeResourceUsage()
+ : AttributeResourceUsage(0.0, "")
+ {
+ }
+
+ double get_usage() const noexcept { return _usage; }
+ const vespalib::string& get_name() const noexcept { return _name; }
+
+ bool operator==(const AttributeResourceUsage& rhs) const noexcept {
+ return ((_usage == rhs._usage) && (_name == rhs._name));
+ }
+
+ bool operator!=(const AttributeResourceUsage& rhs) const noexcept {
+ return !operator==(rhs);
+ }
+};
+
+std::ostream& operator<<(std::ostream& out, const AttributeResourceUsage& attribute_resource_usage);
+
+}
diff --git a/persistence/src/vespa/persistence/spi/resource_usage.cpp b/persistence/src/vespa/persistence/spi/resource_usage.cpp
index 77ef19ea006..a77de33104f 100644
--- a/persistence/src/vespa/persistence/spi/resource_usage.cpp
+++ b/persistence/src/vespa/persistence/spi/resource_usage.cpp
@@ -5,10 +5,14 @@
namespace storage::spi {
+ResourceUsage::~ResourceUsage() = default;
+
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() << "}";
+ ", 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() << "}";
return out;
}
diff --git a/persistence/src/vespa/persistence/spi/resource_usage.h b/persistence/src/vespa/persistence/spi/resource_usage.h
index defdaab2fba..92d24c57eed 100644
--- a/persistence/src/vespa/persistence/spi/resource_usage.h
+++ b/persistence/src/vespa/persistence/spi/resource_usage.h
@@ -2,7 +2,7 @@
#pragma once
-#include <iosfwd>
+#include "attribute_resource_usage.h"
namespace storage::spi {
@@ -14,11 +14,21 @@ class ResourceUsage
{
double _disk_usage;
double _memory_usage;
+ AttributeResourceUsage _attribute_enum_store_usage;
+ AttributeResourceUsage _attribute_multivalue_usage;
+
public:
- ResourceUsage(double disk_usage, double memory_usage)
+ ResourceUsage(double disk_usage, double memory_usage, const AttributeResourceUsage &attribute_enum_store_usage, const AttributeResourceUsage &attribute_multivalue_usage)
: _disk_usage(disk_usage),
- _memory_usage(memory_usage)
+ _memory_usage(memory_usage),
+ _attribute_enum_store_usage(attribute_enum_store_usage),
+ _attribute_multivalue_usage(attribute_multivalue_usage)
+ {
+ }
+
+ ResourceUsage(double disk_usage, double memory_usage)
+ : ResourceUsage(disk_usage, memory_usage, AttributeResourceUsage(), AttributeResourceUsage())
{
}
@@ -27,16 +37,24 @@ public:
{
}
+ ~ResourceUsage();
+
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; }
bool operator==(const ResourceUsage &rhs) const noexcept {
- return (_disk_usage == rhs._disk_usage) &&
- (_memory_usage == rhs._memory_usage);
+ 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));
+ }
+ bool operator!=(const ResourceUsage &rhs) const noexcept {
+ return !operator==(rhs);
}
};
std::ostream& operator<<(std::ostream& out, const ResourceUsage& resource_usage);
}
-