Skip to content

Commit

Permalink
add interface to get blk alloc hints for chunks on same pg (#70)
Browse files Browse the repository at this point in the history
* add interface to get blk alloc hints for chunks on same pg.
Specifically we bind PG to single PDEV,  the `chunk_to_hint` will check the pdev of pass-in chunk and fills the hint with pdev id of the pass-in chunk
  • Loading branch information
zichanglai authored Sep 26, 2023
1 parent 07ee920 commit c262887
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
14 changes: 13 additions & 1 deletion src/lib/homestore/heap_chunk_selector.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,4 +117,16 @@ void HeapChunkSelector::build_per_dev_chunk_heap(const std::unordered_set< chunk
if (excludingChunks.find(p.first) == excludingChunks.end()) { add_chunk_internal(p.first); }
};
}
} // namespace homeobject

homestore::blk_alloc_hints HeapChunkSelector::chunk_to_hints(chunk_num_t chunk_id) const {
auto iter = m_chunks.find(chunk_id);
if (iter == m_chunks.end()) {
LOGWARNMOD(homeobject, "No chunk found for chunk_id {}, will return default blk alloc hints", chunk_id);
return homestore::blk_alloc_hints();
}
homestore::blk_alloc_hints hints;
hints.pdev_id_hint = VChunk(iter->second).get_pdev_id();
return hints;
}

} // namespace homeobject
6 changes: 5 additions & 1 deletion src/lib/homestore/heap_chunk_selector.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#pragma once

#include "homeobject/common.hpp"

#include <homestore/chunk_selector.h>
#include <homestore/vchunk.h>
#include <homestore/homestore_decl.hpp>
Expand Down Expand Up @@ -46,6 +48,8 @@ class HeapChunkSelector : public homestore::ChunkSelector {
// this should be called after ShardManager is initialized and get all the open shards
void build_per_dev_chunk_heap(const std::unordered_set< chunk_num_t >& excludingChunks);

homestore::blk_alloc_hints chunk_to_hints(chunk_num_t chunk_id) const;

private:
std::unordered_map< uint32_t, std::shared_ptr< PerDevHeap > > m_per_dev_heap;

Expand All @@ -54,4 +58,4 @@ class HeapChunkSelector : public homestore::ChunkSelector {

void add_chunk_internal(const chunk_num_t);
};
} // namespace homeobject
} // namespace homeobject

0 comments on commit c262887

Please sign in to comment.