mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-12 19:02:12 +00:00
sstables_manager: add new intrusive set to track the reclaimed sstables
The new set holds the sstables from where the memory has been reclaimed
and is sorted in ascending order of the total memory reclaimed.
Signed-off-by: Lakshmi Narayanan Sreethar <lakshmi.sreethar@scylladb.com>
(cherry picked from commit 2340ab63c6)
This commit is contained in:
@@ -87,6 +87,7 @@ void sstables_manager::increment_total_reclaimable_memory_and_maybe_reclaim(ssta
|
||||
auto memory_reclaimed = sst_with_max_memory->reclaim_memory_from_components();
|
||||
_total_memory_reclaimed += memory_reclaimed;
|
||||
_total_reclaimable_memory -= memory_reclaimed;
|
||||
_reclaimed.insert(*sst_with_max_memory);
|
||||
smlogger.info("Reclaimed {} bytes of memory from SSTable components. Total memory reclaimed so far is {} bytes", memory_reclaimed, _total_memory_reclaimed);
|
||||
}
|
||||
|
||||
@@ -98,6 +99,7 @@ void sstables_manager::deactivate(sstable* sst) {
|
||||
// Remove SSTable from the reclaimable memory tracking
|
||||
_total_reclaimable_memory -= sst->total_reclaimable_memory_size();
|
||||
_total_memory_reclaimed -= sst->total_memory_reclaimed();
|
||||
_reclaimed.erase(*sst);
|
||||
|
||||
// At this point, sst has a reference count of zero, since we got here from
|
||||
// lw_shared_ptr_deleter<sstables::sstable>::dispose().
|
||||
|
||||
@@ -47,6 +47,10 @@ class sstables_manager {
|
||||
using list_type = boost::intrusive::list<sstable,
|
||||
boost::intrusive::member_hook<sstable, sstable::manager_list_link_type, &sstable::_manager_list_link>,
|
||||
boost::intrusive::constant_time_size<false>>;
|
||||
using set_type = boost::intrusive::set<sstable,
|
||||
boost::intrusive::member_hook<sstable, sstable::manager_set_link_type, &sstable::_manager_set_link>,
|
||||
boost::intrusive::constant_time_size<false>,
|
||||
boost::intrusive::compare<sstable::lesser_reclaimed_memory>>;
|
||||
private:
|
||||
size_t _available_memory;
|
||||
db::large_data_handler& _large_data_handler;
|
||||
@@ -70,6 +74,8 @@ private:
|
||||
size_t _total_reclaimable_memory{0};
|
||||
// Total memory reclaimed so far across all sstables
|
||||
size_t _total_memory_reclaimed{0};
|
||||
// Set of sstables from which memory has been reclaimed
|
||||
set_type _reclaimed;
|
||||
|
||||
bool _closing = false;
|
||||
promise<> _done;
|
||||
|
||||
Reference in New Issue
Block a user