[CP] Make ob_guard happy
This commit is contained in:
4
deps/oblib/src/lib/resource/achunk_mgr.cpp
vendored
4
deps/oblib/src/lib/resource/achunk_mgr.cpp
vendored
@ -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);
|
||||||
|
|||||||
2
deps/oblib/src/lib/resource/achunk_mgr.h
vendored
2
deps/oblib/src/lib/resource/achunk_mgr.h
vendored
@ -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)
|
||||||
|
|||||||
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user