mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-07 01:28:27 +08:00
enhance: expr: [2.6] only prefetch chunks once (#45555)
issue: https://github.com/milvus-io/milvus/issues/43611 pr: #45554 Signed-off-by: Shawn Wang <shawn.wang@zilliz.com>
This commit is contained in:
parent
c33d6a0f49
commit
aa5cd951a1
@ -762,12 +762,15 @@ class SegmentExpr : public Expr {
|
|||||||
size_t start_chunk = process_all_chunks ? 0 : current_data_chunk_;
|
size_t start_chunk = process_all_chunks ? 0 : current_data_chunk_;
|
||||||
|
|
||||||
// prefetch chunks to reduce cache miss latency
|
// prefetch chunks to reduce cache miss latency
|
||||||
std::vector<int64_t> pf_chunk_ids;
|
if (!prefetched_) {
|
||||||
pf_chunk_ids.reserve(num_data_chunk_ - start_chunk);
|
std::vector<int64_t> pf_chunk_ids;
|
||||||
for (size_t i = start_chunk; i < num_data_chunk_; i++) {
|
pf_chunk_ids.reserve(num_data_chunk_ - start_chunk);
|
||||||
pf_chunk_ids.push_back(i);
|
for (size_t i = start_chunk; i < num_data_chunk_; i++) {
|
||||||
|
pf_chunk_ids.push_back(i);
|
||||||
|
}
|
||||||
|
segment_->prefetch_chunks(op_ctx_, field_id_, pf_chunk_ids);
|
||||||
|
prefetched_ = true;
|
||||||
}
|
}
|
||||||
segment_->prefetch_chunks(op_ctx_, field_id_, pf_chunk_ids);
|
|
||||||
|
|
||||||
for (size_t i = start_chunk; i < num_data_chunk_; i++) {
|
for (size_t i = start_chunk; i < num_data_chunk_; i++) {
|
||||||
auto data_pos =
|
auto data_pos =
|
||||||
@ -1456,6 +1459,8 @@ class SegmentExpr : public Expr {
|
|||||||
// sometimes need to skip index and using raw data
|
// sometimes need to skip index and using raw data
|
||||||
// default true means use index as much as possible
|
// default true means use index as much as possible
|
||||||
bool use_index_{true};
|
bool use_index_{true};
|
||||||
|
// used for reducing cache miss latency in tiered storage
|
||||||
|
bool prefetched_{false};
|
||||||
std::vector<PinWrapper<const index::IndexBase*>> pinned_index_{};
|
std::vector<PinWrapper<const index::IndexBase*>> pinned_index_{};
|
||||||
|
|
||||||
int64_t active_count_{0};
|
int64_t active_count_{0};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user