diff --git a/configs/milvus.yaml b/configs/milvus.yaml index b4a7c99f70..383e0642c0 100644 --- a/configs/milvus.yaml +++ b/configs/milvus.yaml @@ -464,7 +464,7 @@ queryNode: memoryLimit: 2147483648 # Deprecated: 2 GB, 2 * 1024 *1024 *1024 readAheadPolicy: willneed # The read ahead policy of chunk cache, options: `normal, random, sequential, willneed, dontneed` mmap: - vectorField: false # Enable mmap for loading vector data + vectorField: true # Enable mmap for loading vector data vectorIndex: false # Enable mmap for loading vector index scalarField: false # Enable mmap for loading scalar data scalarIndex: false # Enable mmap for loading scalar index diff --git a/internal/core/src/cachinglayer/CacheSlot.h b/internal/core/src/cachinglayer/CacheSlot.h index 0a3aea27fb..73697cf2a0 100644 --- a/internal/core/src/cachinglayer/CacheSlot.h +++ b/internal/core/src/cachinglayer/CacheSlot.h @@ -62,6 +62,8 @@ class CacheSlot final : public std::enable_shared_from_this> { .Increment(); internal::cache_cell_count(translator_->meta()->storage_type) .Increment(translator_->num_cells()); + internal::cache_memory_overhead_bytes(translator_->meta()->storage_type) + .Increment(memory_overhead()); } CacheSlot(const CacheSlot&) = delete; @@ -207,6 +209,8 @@ class CacheSlot final : public std::enable_shared_from_this> { .Decrement(); internal::cache_cell_count(translator_->meta()->storage_type) .Decrement(translator_->num_cells()); + internal::cache_memory_overhead_bytes(translator_->meta()->storage_type) + .Decrement(memory_overhead()); } private: @@ -365,6 +369,12 @@ class CacheSlot final : public std::enable_shared_from_this> { std::unique_ptr cell_{nullptr}; std::chrono::steady_clock::time_point life_start_{}; }; + + size_t + memory_overhead() const { + return sizeof(*this) + cells_.size() * sizeof(CacheCell); + } + const std::unique_ptr> translator_; // Each CacheCell's cid_t is its index in vector // Once initialized, cells_ should never be resized. diff --git a/internal/core/src/cachinglayer/lrucache/ListNode.h b/internal/core/src/cachinglayer/lrucache/ListNode.h index 9f9dd45688..3d0ce33edb 100644 --- a/internal/core/src/cachinglayer/lrucache/ListNode.h +++ b/internal/core/src/cachinglayer/lrucache/ListNode.h @@ -79,7 +79,7 @@ class ListNode { bool manual_evict(); - // TODO(tiered storage 1): pin on ERROR should re-trigger loading. + // TODO(tiered storage 2): pin on ERROR should re-trigger loading. // NOT_LOADED ---> LOADING ---> ERROR // ^ | // | v diff --git a/internal/core/src/monitor/prometheus_client.h b/internal/core/src/monitor/prometheus_client.h index 48525f410d..bde3bf9f09 100644 --- a/internal/core/src/monitor/prometheus_client.h +++ b/internal/core/src/monitor/prometheus_client.h @@ -222,7 +222,6 @@ DECLARE_PROMETHEUS_COUNTER(internal_cache_load_count_fail_memory); DECLARE_PROMETHEUS_COUNTER(internal_cache_load_count_fail_disk); DECLARE_PROMETHEUS_COUNTER(internal_cache_load_count_fail_mixed); -// TODO(tiered storage 1): not added DECLARE_PROMETHEUS_GAUGE_FAMILY(internal_cache_memory_overhead_bytes); DECLARE_PROMETHEUS_GAUGE(internal_cache_memory_overhead_bytes_memory); DECLARE_PROMETHEUS_GAUGE(internal_cache_memory_overhead_bytes_disk); diff --git a/internal/core/src/segcore/storagev2translator/GroupChunkTranslator.cpp b/internal/core/src/segcore/storagev2translator/GroupChunkTranslator.cpp index 8cdf8ee355..84503ff1f1 100644 --- a/internal/core/src/segcore/storagev2translator/GroupChunkTranslator.cpp +++ b/internal/core/src/segcore/storagev2translator/GroupChunkTranslator.cpp @@ -155,8 +155,6 @@ GroupChunkTranslator::get_cells(const std::vector& cids) { std::make_unique(parallel_degree); auto& pool = ThreadPools::GetThreadPool(milvus::ThreadPoolPriority::MIDDLE); - auto fs = milvus_storage::ArrowFileSystemSingleton::GetInstance() - .GetArrowFileSystem(); auto load_future = pool.Submit([&]() { return LoadWithStrategy(insert_files_, diff --git a/internal/core/unittest/test_exec.cpp b/internal/core/unittest/test_exec.cpp index 2ad7f964cd..11c5579174 100644 --- a/internal/core/unittest/test_exec.cpp +++ b/internal/core/unittest/test_exec.cpp @@ -163,7 +163,6 @@ TEST_P(TaskTest, CallExprEmpty) { EXPECT_EQ(num_rows, num_rows_); } -// TODO(tiered storage 1): this is slower due to the overhead of RawAt. TEST_P(TaskTest, UnaryExpr) { ::milvus::proto::plan::GenericValue value; value.set_int64_val(-1); diff --git a/internal/core/unittest/test_text_match.cpp b/internal/core/unittest/test_text_match.cpp index e0b94d158e..aed3c72ed7 100644 --- a/internal/core/unittest/test_text_match.cpp +++ b/internal/core/unittest/test_text_match.cpp @@ -951,9 +951,8 @@ TEST(TextMatch, SealedJieBaNullable) { } } -// TODO(tiered storage 1): this also fails on master branch. // Test that growing segment loading flushed binlogs will build text match index. -TEST(TextMatch, DISABLED_GrowingLoadData) { +TEST(TextMatch, GrowingLoadData) { int64_t N = 7; auto schema = GenTestSchema({}, true); schema->AddField( diff --git a/pkg/util/paramtable/component_param.go b/pkg/util/paramtable/component_param.go index d36c0ee72d..123305bd92 100644 --- a/pkg/util/paramtable/component_param.go +++ b/pkg/util/paramtable/component_param.go @@ -3233,7 +3233,7 @@ This defaults to true, indicating that Milvus creates temporary index for growin p.MmapVectorField = ParamItem{ Key: "queryNode.mmap.vectorField", Version: "2.4.7", - DefaultValue: "false", + DefaultValue: "true", Formatter: func(originValue string) string { if p.MmapEnabled.GetAsBool() { return "true"