diff --git a/memtable.hh b/memtable.hh index da0c994d93..51085bc6bd 100644 --- a/memtable.hh +++ b/memtable.hh @@ -70,6 +70,14 @@ public: return allocator.object_memory_size_in_allocator(this) + external_memory_usage_without_rows(); } + size_t size_in_allocator(allocation_strategy& allocator) { + auto size = size_in_allocator_without_rows(allocator); + for (auto&& v : _pe.versions()) { + size += v.size_in_allocator(allocator); + } + return size; + } + struct compare { dht::decorated_key::less_comparator _c; diff --git a/partition_version.cc b/partition_version.cc index ef66d34e57..5e05e182d4 100644 --- a/partition_version.cc +++ b/partition_version.cc @@ -63,6 +63,11 @@ partition_version::~partition_version() } } +size_t partition_version::size_in_allocator(allocation_strategy& allocator) const { + return allocator.object_memory_size_in_allocator(this) + + partition().external_memory_usage(); +} + namespace { GCC6_CONCEPT( diff --git a/partition_version.hh b/partition_version.hh index dae916e802..89140e9ffa 100644 --- a/partition_version.hh +++ b/partition_version.hh @@ -130,6 +130,8 @@ public: bool is_referenced() const { return _backref; } partition_version_ref& back_reference() { return *_backref; } + + size_t size_in_allocator(allocation_strategy& allocator) const; }; using partition_version_range = anchorless_list_base_hook::range;