[CP] Make ob_guard happy

This commit is contained in:
obdev
2022-11-15 13:35:44 +00:00
committed by wangzelin.wzl
parent 0d37562338
commit fc231c5a09
3 changed files with 17 additions and 3 deletions

View File

@ -60,7 +60,7 @@ AChunkMgr &AChunkMgr::instance()
AChunkMgr::AChunkMgr() AChunkMgr::AChunkMgr()
: free_list_(), chunk_bitmap_(nullptr), limit_(DEFAULT_LIMIT), urgent_(0), hold_(0), : 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)); LOG_ERROR("sanity alloc shadow failed", K(errno), KP(shad_ptr));
abort(); abort();
} else { } else {
IGNORE_RETURN ATOMIC_FAA(&shadow_hold_, shad_size);
//memset(shad_ptr, 0, shad_size); //memset(shad_ptr, 0, shad_size);
//SANITY_UNPOISON(shad_ptr, shad_size); // maybe no need? //SANITY_UNPOISON(shad_ptr, shad_size); // maybe no need?
//SANITY_UNPOISON(ptr, 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)) { if (SANITY_ADDR_IN_RANGE(ptr)) {
void *shad_ptr = SANITY_TO_SHADOW((void*)ptr); void *shad_ptr = SANITY_TO_SHADOW((void*)ptr);
ssize_t shad_size = SANITY_TO_SHADOW_SIZE(size); ssize_t shad_size = SANITY_TO_SHADOW_SIZE(size);
IGNORE_RETURN ATOMIC_FAA(&shadow_hold_, -shad_size);
::munmap(shad_ptr, shad_size); ::munmap(shad_ptr, shad_size);
} }
::munmap((void*)ptr, size); ::munmap((void*)ptr, size);

View File

@ -204,6 +204,7 @@ public:
inline int64_t get_unmaps() { return unmaps_; } inline int64_t get_unmaps() { return unmaps_; }
inline int64_t get_large_maps() { return large_maps_; } inline int64_t get_large_maps() { return large_maps_; }
inline int64_t get_large_unmaps() { return large_unmaps_; } inline int64_t get_large_unmaps() { return large_unmaps_; }
inline int64_t get_shadow_hold() const { return ATOMIC_LOAD(&shadow_hold_); }
private: private:
typedef ABitSet ChunkBitMap; typedef ABitSet ChunkBitMap;
@ -228,6 +229,7 @@ protected:
int64_t unmaps_; int64_t unmaps_;
int64_t large_maps_; int64_t large_maps_;
int64_t large_unmaps_; int64_t large_unmaps_;
int64_t shadow_hold_;
}; // end of class AChunkMgr }; // end of class AChunkMgr
OB_INLINE AChunk *AChunkMgr::ptr2chunk(const void *ptr) OB_INLINE AChunk *AChunkMgr::ptr2chunk(const void *ptr)

View File

@ -107,7 +107,12 @@ int ObTenantMemoryPrinter::print_tenant_usage()
_STORAGE_LOG(INFO, _STORAGE_LOG(INFO,
"[CHUNK_MGR] free=%ld pushes=%ld pops=%ld limit=%'15ld hold=%'15ld total_hold=%'15ld used=%'15ld" \ "[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" \ " 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_count(),
CHUNK_MGR.get_free_chunk_pushes(), CHUNK_MGR.get_free_chunk_pushes(),
CHUNK_MGR.get_free_chunk_pops(), CHUNK_MGR.get_free_chunk_pops(),
@ -121,7 +126,12 @@ int ObTenantMemoryPrinter::print_tenant_usage()
CHUNK_MGR.get_large_maps(), CHUNK_MGR.get_large_maps(),
CHUNK_MGR.get_large_unmaps(), CHUNK_MGR.get_large_unmaps(),
0, 0,
memory_used); #ifndef ENABLE_SANITY
memory_used
#else
memory_used - CHUNK_MGR.get_shadow_hold(), memory_used
#endif
);
print_mutex_.unlock(); print_mutex_.unlock();
} }