diff options
Diffstat (limited to 'include/framework/reconstruction/BackgroundTieringPolicy.h')
| -rw-r--r-- | include/framework/reconstruction/BackgroundTieringPolicy.h | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/include/framework/reconstruction/BackgroundTieringPolicy.h b/include/framework/reconstruction/BackgroundTieringPolicy.h index 36556a2..1c000b9 100644 --- a/include/framework/reconstruction/BackgroundTieringPolicy.h +++ b/include/framework/reconstruction/BackgroundTieringPolicy.h @@ -16,16 +16,20 @@ namespace de { template <ShardInterface ShardType, QueryInterface<ShardType> QueryType> -class BackgroundTieringPolicy : public ReconstructionPolicy<ShardType, QueryType> { +class BackgroundTieringPolicy + : public ReconstructionPolicy<ShardType, QueryType> { typedef std::vector<std::shared_ptr<InternalLevel<ShardType, QueryType>>> LevelVector; public: - BackgroundTieringPolicy(size_t scale_factor, size_t buffer_size, size_t size_modifier=0) - : m_scale_factor(scale_factor), m_buffer_size(buffer_size), m_size_modifier(size_modifier) {} - - std::vector<ReconstructionVector> get_reconstruction_tasks( - const Version<ShardType, QueryType> *version, LockManager &lock_mngr) const override { + BackgroundTieringPolicy(size_t scale_factor, size_t buffer_size, + size_t size_modifier = 0) + : m_scale_factor(scale_factor), m_buffer_size(buffer_size), + m_size_modifier(size_modifier) {} + + std::vector<ReconstructionVector> + get_reconstruction_tasks(const Version<ShardType, QueryType> *version, + LockManager &lock_mngr) const override { std::vector<ReconstructionVector> reconstructions; auto levels = version->get_structure()->get_level_vector(); @@ -34,7 +38,8 @@ public: return {}; } - level_index target_level = find_reconstruction_target(levels, version->get_structure()->get_record_count()); + level_index target_level = find_reconstruction_target( + levels, version->get_structure()->get_record_count()); assert(target_level != -1); level_index source_level = 0; @@ -44,19 +49,21 @@ public: } for (level_index i = target_level; i > source_level; i--) { - if (lock_mngr.take_lock(i-1, version->get_id())) { + if (lock_mngr.take_lock(i - 1, version->get_id())) { ReconstructionVector recon; size_t total_reccnt = levels[i - 1]->get_record_count(); std::vector<ShardID> shards; - for (ssize_t j=0; j<(ssize_t)levels[i-1]->get_shard_count(); j++) { - shards.push_back({i-1, j}); + for (ssize_t j = 0; j < (ssize_t)levels[i - 1]->get_shard_count(); + j++) { + shards.push_back({i - 1, j}); } - recon.add_reconstruction(shards, i, total_reccnt, ReconstructionType::Compact); + recon.add_reconstruction(shards, i, total_reccnt, + ReconstructionType::Compact); reconstructions.push_back(recon); } } - + return reconstructions; } @@ -68,7 +75,8 @@ public: } private: - level_index find_reconstruction_target(LevelVector &levels, size_t reccnt) const { + level_index find_reconstruction_target(LevelVector &levels, + size_t reccnt) const { level_index target_level = invalid_level_idx; for (level_index i = 1; i < (level_index)levels.size(); i++) { @@ -81,7 +89,9 @@ private: return target_level; } - inline size_t capacity(size_t reccnt) const { return m_scale_factor * std::pow(std::log(reccnt), m_size_modifier); } + inline size_t capacity(size_t reccnt) const { + return m_scale_factor * std::pow(std::log(reccnt), m_size_modifier); + } size_t m_scale_factor; size_t m_buffer_size; |