diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2021-01-22 11:52:17 +0100 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2021-01-22 12:14:47 +0100 |
commit | bffcd72abdf3a8b6996367c7ce6cfda4bc40e17c (patch) | |
tree | 76729f43c0ef2587a869fa7a79a08b6d0cdaf380 /persistence | |
parent | 3736ac79a115a0b37225d9c358718f1c74026380 (diff) |
Track attribute resource usage.
Diffstat (limited to 'persistence')
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); } - |