logalloc: count evicted memory
Signed-off-by: Michael Livshin <michael.livshin@scylladb.com>
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user