diff --git a/be/src/storage/page_cache.cpp b/be/src/storage/page_cache.cpp index 6bf75e9e8f1..a0b13b56d12 100644 --- a/be/src/storage/page_cache.cpp +++ b/be/src/storage/page_cache.cpp @@ -63,6 +63,10 @@ void StoragePageCache::release_global_cache() { } } +void StoragePageCache::prune() { + _cache->prune(); +} + static void init_metrics() { StarRocksMetrics::instance()->metrics()->register_metric("page_cache_lookup_count", &page_cache_lookup_count); StarRocksMetrics::instance()->metrics()->register_hook("page_cache_lookup_count", []() { diff --git a/be/src/storage/page_cache.h b/be/src/storage/page_cache.h index 7552f1b5228..cbc34f9388f 100644 --- a/be/src/storage/page_cache.h +++ b/be/src/storage/page_cache.h @@ -116,6 +116,8 @@ public: bool adjust_capacity(int64_t delta, size_t min_capacity = 0); + void prune(); + private: static StoragePageCache* _s_instance; diff --git a/be/test/storage/rowset/bitmap_index_test.cpp b/be/test/storage/rowset/bitmap_index_test.cpp index 5fec9f90d14..44242087214 100644 --- a/be/test/storage/rowset/bitmap_index_test.cpp +++ b/be/test/storage/rowset/bitmap_index_test.cpp @@ -57,7 +57,6 @@ public: protected: void SetUp() override { - StoragePageCache::create_global_cache(&_tracker, 1000000000); _fs = std::make_shared(); ASSERT_TRUE(_fs->create_dir(kTestDir).ok()); @@ -66,7 +65,7 @@ protected: _opts.skip_fill_data_cache = false; _opts.stats = &_stats; } - void TearDown() override { StoragePageCache::release_global_cache(); } + void TearDown() override { StoragePageCache::instance()->prune(); } void get_bitmap_reader_iter(RandomAccessFile* rfile, const ColumnIndexMetaPB& meta, BitmapIndexReader** reader, BitmapIndexIterator** iter) { @@ -95,7 +94,6 @@ protected: } std::shared_ptr _fs = nullptr; - MemTracker _tracker; MemPool _pool; IndexReadOptions _opts; OlapReaderStatistics _stats; diff --git a/be/test/storage/rowset/bloom_filter_index_reader_writer_test.cpp b/be/test/storage/rowset/bloom_filter_index_reader_writer_test.cpp index c9c82010a36..0065e3cd76d 100644 --- a/be/test/storage/rowset/bloom_filter_index_reader_writer_test.cpp +++ b/be/test/storage/rowset/bloom_filter_index_reader_writer_test.cpp @@ -52,8 +52,6 @@ const std::string kTestDir = "/bloom_filter_index_reader_writer_test"; class BloomFilterIndexReaderWriterTest : public testing::Test { protected: void SetUp() override { - _mem_tracker = std::make_unique(); - StoragePageCache::create_global_cache(_mem_tracker.get(), 1000000000); _fs = std::make_shared(); ASSERT_TRUE(_fs->create_dir(kTestDir).ok()); @@ -62,7 +60,7 @@ protected: _opts.skip_fill_data_cache = false; _opts.stats = &_stats; } - void TearDown() override { StoragePageCache::release_global_cache(); } + void TearDown() override { StoragePageCache::instance()->prune(); } template void write_bloom_filter_index_file(const std::string& file_name, const void* values, size_t value_count, @@ -165,7 +163,6 @@ protected: } } - std::unique_ptr _mem_tracker = nullptr; std::shared_ptr _fs = nullptr; IndexReadOptions _opts; OlapReaderStatistics _stats; diff --git a/be/test/storage/rowset/column_reader_writer_test.cpp b/be/test/storage/rowset/column_reader_writer_test.cpp index 3295b650779..d910439a923 100644 --- a/be/test/storage/rowset/column_reader_writer_test.cpp +++ b/be/test/storage/rowset/column_reader_writer_test.cpp @@ -160,9 +160,6 @@ protected: } // read and check { - // create page cache - std::unique_ptr page_cache_mem_tracker = std::make_unique(); - StoragePageCache::create_global_cache(page_cache_mem_tracker.get(), 1000000000); // read and check auto res = ColumnReader::create(&meta, segment.get()); ASSERT_TRUE(res.ok()); diff --git a/be/test/storage/rowset/ordinal_page_index_test.cpp b/be/test/storage/rowset/ordinal_page_index_test.cpp index 50d8acaba06..6043489b457 100644 --- a/be/test/storage/rowset/ordinal_page_index_test.cpp +++ b/be/test/storage/rowset/ordinal_page_index_test.cpp @@ -53,16 +53,13 @@ public: const std::string kTestDir = "/ordinal_page_index_test"; void SetUp() override { - _mem_tracker = std::make_unique(); - StoragePageCache::create_global_cache(_mem_tracker.get(), 1000000000); _fs = std::make_shared(); ASSERT_TRUE(_fs->create_dir(kTestDir).ok()); } - void TearDown() override { StoragePageCache::release_global_cache(); } + void TearDown() override { StoragePageCache::instance()->prune(); } protected: - std::unique_ptr _mem_tracker = nullptr; std::shared_ptr _fs = nullptr; }; diff --git a/be/test/storage/rowset/rowset_test.cpp b/be/test/storage/rowset/rowset_test.cpp index 698aacddf3e..ed16a5304b4 100644 --- a/be/test/storage/rowset/rowset_test.cpp +++ b/be/test/storage/rowset/rowset_test.cpp @@ -77,7 +77,6 @@ protected: OlapReaderStatistics _stats; void SetUp() override { - _page_cache_mem_tracker = std::make_unique(); config::tablet_map_shard_size = 1; config::txn_map_shard_size = 1; config::txn_shard_size = 1; @@ -101,7 +100,6 @@ protected: ASSERT_TRUE(fs::create_directories(rowset_dir).ok()); ASSERT_TRUE(fs::create_directories(config::storage_root_path + "/data/rowset_test_seg").ok()); ASSERT_TRUE(fs::create_directories(config::storage_root_path + "/data/rowset_test_delete").ok()); - StoragePageCache::create_global_cache(_page_cache_mem_tracker.get(), 1000000000); i++; } @@ -112,7 +110,7 @@ protected: if (fs::path_exist(config::storage_root_path)) { ASSERT_TRUE(fs::remove_all(config::storage_root_path).ok()); } - StoragePageCache::release_global_cache(); + StoragePageCache::instance()->prune(); config::storage_root_path = _default_storage_root_path; } @@ -242,7 +240,6 @@ protected: void test_final_merge(bool has_merge_condition); private: - std::unique_ptr _page_cache_mem_tracker = nullptr; std::string _default_storage_root_path; }; diff --git a/be/test/storage/rowset/segment_iterator_test.cpp b/be/test/storage/rowset/segment_iterator_test.cpp index 299085bdf00..992597a4728 100644 --- a/be/test/storage/rowset/segment_iterator_test.cpp +++ b/be/test/storage/rowset/segment_iterator_test.cpp @@ -42,15 +42,12 @@ public: void SetUp() override { _fs = std::make_shared(); ASSERT_TRUE(_fs->create_dir(kSegmentDir).ok()); - _page_cache_mem_tracker = std::make_unique(); - StoragePageCache::create_global_cache(_page_cache_mem_tracker.get(), 1000000000); } - void TearDown() override { StoragePageCache::release_global_cache(); } + void TearDown() override { StoragePageCache::instance()->prune(); } const std::string kSegmentDir = "/segment_test"; std::shared_ptr _fs = nullptr; - std::unique_ptr _page_cache_mem_tracker = nullptr; }; namespace test { diff --git a/be/test/storage/rowset/segment_rewriter_test.cpp b/be/test/storage/rowset/segment_rewriter_test.cpp index 71acea5ab07..882ba877e97 100644 --- a/be/test/storage/rowset/segment_rewriter_test.cpp +++ b/be/test/storage/rowset/segment_rewriter_test.cpp @@ -49,20 +49,16 @@ protected: void SetUp() override { _fs = FileSystem::CreateSharedFromString("posix://").value(); ASSERT_OK(_fs->create_dir_recursive(kSegmentDir)); - - _page_cache_mem_tracker = std::make_unique(); - StoragePageCache::create_global_cache(_page_cache_mem_tracker.get(), 1000000000); } void TearDown() override { ASSERT_TRUE(fs::remove_all(kSegmentDir).ok()); - StoragePageCache::release_global_cache(); + StoragePageCache::instance()->prune(); } const std::string kSegmentDir = "./ut_dir/segment_rewriter_test"; std::shared_ptr _fs; - std::unique_ptr _page_cache_mem_tracker; }; TEST_F(SegmentRewriterTest, rewrite_test) { diff --git a/be/test/storage/rowset/segment_test.cpp b/be/test/storage/rowset/segment_test.cpp index 8d8cdf65fb1..d16bb8c0a73 100644 --- a/be/test/storage/rowset/segment_test.cpp +++ b/be/test/storage/rowset/segment_test.cpp @@ -77,11 +77,9 @@ protected: void SetUp() override { _fs = std::make_shared(); ASSERT_TRUE(_fs->create_dir(kSegmentDir).ok()); - _page_cache_mem_tracker = std::make_unique(); - StoragePageCache::create_global_cache(_page_cache_mem_tracker.get(), 1000000000); } - void TearDown() override { StoragePageCache::release_global_cache(); } + void TearDown() override { StoragePageCache::instance()->prune(); } void build_segment(const SegmentWriterOptions& opts, const TabletSchemaCSPtr& build_schema, const TabletSchemaCSPtr& query_schema, size_t nrows, const ValueGenerator& generator, diff --git a/be/test/util/starrocks_metrics_test.cpp b/be/test/util/starrocks_metrics_test.cpp index ec59b1121fb..bb4841f053e 100644 --- a/be/test/util/starrocks_metrics_test.cpp +++ b/be/test/util/starrocks_metrics_test.cpp @@ -53,10 +53,11 @@ protected: auto _page_cache_mem_tracker = std::make_unique(); static const int kNumShardBits = 5; static const int kNumShards = 1 << kNumShardBits; + StoragePageCache::release_global_cache(); StoragePageCache::create_global_cache(_page_cache_mem_tracker.get(), kNumShards * 100000); } - void TearDown() override { StoragePageCache::release_global_cache(); } + void TearDown() override { StoragePageCache::instance()->prune(); } }; class TestMetricsVisitor : public MetricsVisitor {