logalloc: count evicted memory

Signed-off-by: Michael Livshin <michael.livshin@scylladb.com>
This commit is contained in:
Michael Livshin
2021-05-25 15:03:36 +03:00
parent 4bcd91a09a
commit a6283b322b
2 changed files with 15 additions and 1 deletions

View File

@@ -866,6 +866,7 @@ public:
uint64_t memory_allocated;
uint64_t memory_freed;
uint64_t memory_compacted;
uint64_t memory_evicted;
};
private:
stats _stats{};
@@ -874,6 +875,7 @@ public:
void on_segment_compaction(size_t used_size);
void on_memory_allocation(size_t size);
void on_memory_deallocation(size_t size);
void on_memory_eviction(size_t size);
size_t unreserved_free_segments() const { return _free_segments - std::min(_free_segments, _emergency_reserve_max); }
size_t free_segments() const { return _free_segments; }
};
@@ -1087,6 +1089,10 @@ void segment_pool::on_memory_deallocation(size_t size) {
_stats.memory_freed += size;
}
void segment_pool::on_memory_eviction(size_t size) {
_stats.memory_evicted += size;
}
// RAII wrapper to maintain segment_pool::current_emergency_reserve_goal()
class segment_pool::reservation_goal {
segment_pool& _sp;
@@ -1833,7 +1839,10 @@ public:
memory::reclaiming_result evict_some() {
++_invalidate_counter;
return _eviction_fn();
auto freed = shard_segment_pool.statistics().memory_freed;
auto ret = _eviction_fn();
shard_segment_pool.on_memory_eviction(shard_segment_pool.statistics().memory_freed - freed);
return ret;
}
void make_not_evictable() {
@@ -2631,6 +2640,10 @@ uint64_t memory_compacted() {
return shard_segment_pool.statistics().memory_compacted;
}
uint64_t memory_evicted() {
return shard_segment_pool.statistics().memory_evicted;
}
occupancy_stats lsa_global_occupancy_stats() {
return occupancy_stats(shard_segment_pool.total_free_memory(), shard_segment_pool.total_memory_in_use());
}

View File

@@ -839,6 +839,7 @@ future<> prime_segment_pool(size_t available_memory, size_t min_free_memory);
uint64_t memory_allocated();
uint64_t memory_freed();
uint64_t memory_compacted();
uint64_t memory_evicted();
occupancy_stats lsa_global_occupancy_stats();