From 0bf351945dbd978ccf6f92f380fa9a74839e1726 Mon Sep 17 00:00:00 2001 From: Deepika Upadhyay Date: Mon, 12 Sep 2022 15:24:37 +0530 Subject: [PATCH] os/bluestore: improve cache_onode and cache_buffer mempool accounting * move physical extent to mempool bluestore_extent from cache_other * move bluestore_shared_blob_t from cache_other to shared_blob mempool Signed-off-by: Deepika Upadhyay --- src/include/mempool.h | 8 ++++---- src/os/bluestore/BlueStore.cc | 9 ++++----- src/os/bluestore/BlueStore.h | 12 ++++++------ src/os/bluestore/bluestore_types.cc | 2 +- src/os/bluestore/bluestore_types.h | 1 - src/test/objectstore/store_test.cc | 14 +++++++++----- 6 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/include/mempool.h b/src/include/mempool.h index 08d8282fb2f..076c62afe19 100644 --- a/src/include/mempool.h +++ b/src/include/mempool.h @@ -153,10 +153,10 @@ namespace mempool { f(bluestore_cache_onode) \ f(bluestore_cache_meta) \ f(bluestore_cache_other) \ - f(bluestore_Buffer) \ - f(bluestore_Extent) \ - f(bluestore_Blob) \ - f(bluestore_SharedBlob) \ + f(bluestore_cache_buffer) \ + f(bluestore_extent) \ + f(bluestore_blob) \ + f(bluestore_shared_blob) \ f(bluestore_inline_bl) \ f(bluestore_fsck) \ f(bluestore_txc) \ diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 95eb915ab79..509aaefb3da 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -74,15 +74,14 @@ using bid_t = decltype(BlueStore::Blob::id); MEMPOOL_DEFINE_OBJECT_FACTORY(BlueStore::Onode, bluestore_onode, bluestore_cache_onode); -// bluestore_cache_other MEMPOOL_DEFINE_OBJECT_FACTORY(BlueStore::Buffer, bluestore_buffer, - bluestore_Buffer); + bluestore_cache_buffer); MEMPOOL_DEFINE_OBJECT_FACTORY(BlueStore::Extent, bluestore_extent, - bluestore_Extent); + bluestore_extent); MEMPOOL_DEFINE_OBJECT_FACTORY(BlueStore::Blob, bluestore_blob, - bluestore_Blob); + bluestore_blob); MEMPOOL_DEFINE_OBJECT_FACTORY(BlueStore::SharedBlob, bluestore_shared_blob, - bluestore_SharedBlob); + bluestore_shared_blob); // bluestore_txc MEMPOOL_DEFINE_OBJECT_FACTORY(BlueStore::TransContext, bluestore_transcontext, diff --git a/src/os/bluestore/BlueStore.h b/src/os/bluestore/BlueStore.h index 315e6c516df..77b6b188b8e 100644 --- a/src/os/bluestore/BlueStore.h +++ b/src/os/bluestore/BlueStore.h @@ -2164,8 +2164,8 @@ private: bool collections_had_errors = false; std::map new_coll_map; - std::vector onode_cache_shards; - std::vector buffer_cache_shards; + mempool::bluestore_cache_buffer::vector buffer_cache_shards; + mempool::bluestore_cache_onode::vector onode_cache_shards; /// protect zombie_osr_set ceph::mutex zombie_osr_lock = ceph::make_mutex("BlueStore::zombie_osr_lock"); @@ -2440,13 +2440,13 @@ private: } } virtual uint64_t _get_used_bytes() const { - return mempool::bluestore_Buffer::allocated_bytes() + - mempool::bluestore_Blob::allocated_bytes() + - mempool::bluestore_Extent::allocated_bytes() + + return mempool::bluestore_blob::allocated_bytes() + + mempool::bluestore_extent::allocated_bytes() + + mempool::bluestore_cache_buffer::allocated_bytes() + mempool::bluestore_cache_meta::allocated_bytes() + mempool::bluestore_cache_other::allocated_bytes() + mempool::bluestore_cache_onode::allocated_bytes() + - mempool::bluestore_SharedBlob::allocated_bytes() + + mempool::bluestore_shared_blob::allocated_bytes() + mempool::bluestore_inline_bl::allocated_bytes(); } virtual void shift_bins() { diff --git a/src/os/bluestore/bluestore_types.cc b/src/os/bluestore/bluestore_types.cc index b62f6e2a367..904b6fbd3d9 100644 --- a/src/os/bluestore/bluestore_types.cc +++ b/src/os/bluestore/bluestore_types.cc @@ -1058,7 +1058,7 @@ void bluestore_blob_t::split(uint32_t blob_offset, bluestore_blob_t& rb) // bluestore_shared_blob_t MEMPOOL_DEFINE_OBJECT_FACTORY(bluestore_shared_blob_t, bluestore_shared_blob_t, - bluestore_cache_other); + bluestore_shared_blob); void bluestore_shared_blob_t::dump(Formatter *f) const { diff --git a/src/os/bluestore/bluestore_types.h b/src/os/bluestore/bluestore_types.h index 9c4fc5bfdc3..4c96e890326 100644 --- a/src/os/bluestore/bluestore_types.h +++ b/src/os/bluestore/bluestore_types.h @@ -27,7 +27,6 @@ #include "common/hobject.h" #include "compressor/Compressor.h" #include "common/Checksummer.h" -#include "include/mempool.h" #include "include/ceph_hash.h" namespace ceph { diff --git a/src/test/objectstore/store_test.cc b/src/test/objectstore/store_test.cc index dd95a0bc108..e437bd67cc6 100644 --- a/src/test/objectstore/store_test.cc +++ b/src/test/objectstore/store_test.cc @@ -7002,10 +7002,14 @@ TEST_P(StoreTestSpecificAUSize, OnodeSizeTracking) { coll_t cid; ghobject_t hoid(hobject_t("test_hint", "", CEPH_NOSNAP, 0, -1, "")); size_t obj_size = 4 * 1024 * 1024; + uint64_t total_bytes_prev; uint64_t total_bytes, total_bytes2; uint64_t total_onodes; get_mempool_stats(&total_bytes, &total_onodes); - ASSERT_EQ(total_onodes, 0u); + total_bytes_prev = total_bytes; + // 5u for onode_cache_shards vector + ASSERT_EQ(total_onodes, 5u); + ASSERT_EQ(total_bytes, 40u); auto ch = store->create_new_collection(cid); { @@ -7024,8 +7028,8 @@ TEST_P(StoreTestSpecificAUSize, OnodeSizeTracking) { ASSERT_EQ(r, 0); } get_mempool_stats(&total_bytes, &total_onodes); - ASSERT_NE(total_bytes, 0u); - ASSERT_EQ(total_onodes, 1u); + ASSERT_GT(total_bytes - total_bytes_prev, 0u); + ASSERT_EQ(total_onodes, 6u); { ObjectStore::Transaction t; @@ -7045,7 +7049,7 @@ TEST_P(StoreTestSpecificAUSize, OnodeSizeTracking) { } get_mempool_stats(&total_bytes2, &total_onodes); ASSERT_NE(total_bytes2, 0u); - ASSERT_EQ(total_onodes, 1u); + ASSERT_EQ(total_onodes, 6u); } { cout <<" mempool dump:\n"; @@ -7064,7 +7068,7 @@ TEST_P(StoreTestSpecificAUSize, OnodeSizeTracking) { } get_mempool_stats(&total_bytes, &total_onodes); ASSERT_NE(total_bytes, 0u); - ASSERT_EQ(total_onodes, 1u); + ASSERT_EQ(total_onodes, 6u); { cout <<" mempool dump:\n"; -- 2.39.5