From fc231c5a09198ff1aae2e4b3dc8f9627a7d2d262 Mon Sep 17 00:00:00 2001 From: obdev Date: Tue, 15 Nov 2022 13:35:44 +0000 Subject: [PATCH] [CP] Make ob_guard happy --- deps/oblib/src/lib/resource/achunk_mgr.cpp | 4 +++- deps/oblib/src/lib/resource/achunk_mgr.h | 2 ++ .../tx_storage/ob_tenant_memory_printer.cpp | 14 ++++++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/deps/oblib/src/lib/resource/achunk_mgr.cpp b/deps/oblib/src/lib/resource/achunk_mgr.cpp index 214a134165..4911ee3fb9 100644 --- a/deps/oblib/src/lib/resource/achunk_mgr.cpp +++ b/deps/oblib/src/lib/resource/achunk_mgr.cpp @@ -60,7 +60,7 @@ AChunkMgr &AChunkMgr::instance() AChunkMgr::AChunkMgr() : free_list_(), chunk_bitmap_(nullptr), limit_(DEFAULT_LIMIT), urgent_(0), hold_(0), - total_hold_(0), maps_(0), unmaps_(0), large_maps_(0), large_unmaps_(0) + total_hold_(0), maps_(0), unmaps_(0), large_maps_(0), large_unmaps_(0), shadow_hold_(0) { } @@ -176,6 +176,7 @@ void *AChunkMgr::low_alloc(const uint64_t size, const bool can_use_huge_page, bo LOG_ERROR("sanity alloc shadow failed", K(errno), KP(shad_ptr)); abort(); } else { + IGNORE_RETURN ATOMIC_FAA(&shadow_hold_, shad_size); //memset(shad_ptr, 0, shad_size); //SANITY_UNPOISON(shad_ptr, shad_size); // maybe no need? //SANITY_UNPOISON(ptr, size); // maybe no need? @@ -189,6 +190,7 @@ void AChunkMgr::low_free(const void *ptr, const uint64_t size) if (SANITY_ADDR_IN_RANGE(ptr)) { void *shad_ptr = SANITY_TO_SHADOW((void*)ptr); ssize_t shad_size = SANITY_TO_SHADOW_SIZE(size); + IGNORE_RETURN ATOMIC_FAA(&shadow_hold_, -shad_size); ::munmap(shad_ptr, shad_size); } ::munmap((void*)ptr, size); diff --git a/deps/oblib/src/lib/resource/achunk_mgr.h b/deps/oblib/src/lib/resource/achunk_mgr.h index 7a5b19af70..a2c560d37d 100644 --- a/deps/oblib/src/lib/resource/achunk_mgr.h +++ b/deps/oblib/src/lib/resource/achunk_mgr.h @@ -204,6 +204,7 @@ public: inline int64_t get_unmaps() { return unmaps_; } inline int64_t get_large_maps() { return large_maps_; } inline int64_t get_large_unmaps() { return large_unmaps_; } + inline int64_t get_shadow_hold() const { return ATOMIC_LOAD(&shadow_hold_); } private: typedef ABitSet ChunkBitMap; @@ -228,6 +229,7 @@ protected: int64_t unmaps_; int64_t large_maps_; int64_t large_unmaps_; + int64_t shadow_hold_; }; // end of class AChunkMgr OB_INLINE AChunk *AChunkMgr::ptr2chunk(const void *ptr) diff --git a/src/storage/tx_storage/ob_tenant_memory_printer.cpp b/src/storage/tx_storage/ob_tenant_memory_printer.cpp index c05826b939..46a0d0acf6 100644 --- a/src/storage/tx_storage/ob_tenant_memory_printer.cpp +++ b/src/storage/tx_storage/ob_tenant_memory_printer.cpp @@ -107,7 +107,12 @@ int ObTenantMemoryPrinter::print_tenant_usage() _STORAGE_LOG(INFO, "[CHUNK_MGR] free=%ld pushes=%ld pops=%ld limit=%'15ld hold=%'15ld total_hold=%'15ld used=%'15ld" \ " freelist_hold=%'15ld maps=%'15ld unmaps=%'15ld large_maps=%'15ld large_unmaps=%'15ld" \ - " memalign=%d virtual_memory_used=%'15ld\n", + " memalign=%d" +#ifndef ENABLE_SANITY + " virtual_memory_used=%'15ld\n", +#else + " virtual_memory_used=%'15ld actual_virtual_memory_used=%'15ld\n", +#endif CHUNK_MGR.get_free_chunk_count(), CHUNK_MGR.get_free_chunk_pushes(), CHUNK_MGR.get_free_chunk_pops(), @@ -121,7 +126,12 @@ int ObTenantMemoryPrinter::print_tenant_usage() CHUNK_MGR.get_large_maps(), CHUNK_MGR.get_large_unmaps(), 0, - memory_used); +#ifndef ENABLE_SANITY + memory_used +#else + memory_used - CHUNK_MGR.get_shadow_hold(), memory_used +#endif + ); print_mutex_.unlock(); }