[CP] add diagnose for LfFIFO
This commit is contained in:
@ -53,7 +53,6 @@ public:
|
|||||||
mattr_.tenant_id_ = tenant_id;
|
mattr_.tenant_id_ = tenant_id;
|
||||||
return init(page_size, mattr_, cache_page_count, total_limit);
|
return init(page_size, mattr_, cache_page_count, total_limit);
|
||||||
}
|
}
|
||||||
void destroy() { ObVSliceAlloc::purge_extra_cached_block(0); }
|
|
||||||
public:
|
public:
|
||||||
void *alloc(const int64_t size) { return ObVSliceAlloc::alloc(size); }
|
void *alloc(const int64_t size) { return ObVSliceAlloc::alloc(size); }
|
||||||
void *alloc(const int64_t size, const ObMemAttr &attr) { UNUSED(attr); return alloc(size); }
|
void *alloc(const int64_t size, const ObMemAttr &attr) { UNUSED(attr); return alloc(size); }
|
||||||
|
|||||||
22
deps/oblib/src/lib/allocator/ob_vslice_alloc.h
vendored
22
deps/oblib/src/lib/allocator/ob_vslice_alloc.h
vendored
@ -100,22 +100,7 @@ public:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
void destroy() {
|
void destroy() {
|
||||||
for(int i = MAX_ARENA_NUM - 1; i >= 0; i--) {
|
purge_extra_cached_block(0, true);
|
||||||
Arena& arena = arena_[i];
|
|
||||||
Block* old_blk = arena.clear();
|
|
||||||
if (NULL != old_blk) {
|
|
||||||
int64_t old_pos = INT64_MAX;
|
|
||||||
if (old_blk->freeze(old_pos)) {
|
|
||||||
arena.sync();
|
|
||||||
if (old_blk->retire(old_pos)) {
|
|
||||||
destroy_block(old_blk);
|
|
||||||
} else {
|
|
||||||
// can not monitor all leak !!!
|
|
||||||
LIB_LOG_RET(ERROR, common::OB_ERR_UNEXPECTED, "there was memory leak", K(old_blk->ref_));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bsize_ = 0;
|
bsize_ = 0;
|
||||||
}
|
}
|
||||||
void set_nway(int nway) {
|
void set_nway(int nway) {
|
||||||
@ -225,7 +210,7 @@ public:
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
void purge_extra_cached_block(int keep) {
|
void purge_extra_cached_block(int keep, bool need_check = false) {
|
||||||
for(int i = MAX_ARENA_NUM - 1; i >= keep; i--) {
|
for(int i = MAX_ARENA_NUM - 1; i >= keep; i--) {
|
||||||
Arena& arena = arena_[i];
|
Arena& arena = arena_[i];
|
||||||
arena.ref(1);
|
arena.ref(1);
|
||||||
@ -237,6 +222,9 @@ public:
|
|||||||
arena.sync();
|
arena.sync();
|
||||||
if (old_blk->retire(old_pos)) {
|
if (old_blk->retire(old_pos)) {
|
||||||
destroy_block(old_blk);
|
destroy_block(old_blk);
|
||||||
|
} else if (need_check) {
|
||||||
|
// can not monitor all leak !!!
|
||||||
|
LIB_LOG_RET(ERROR, common::OB_ERR_UNEXPECTED, "there was memory leak", K(old_blk->ref_));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
arena.ref(-1);
|
arena.ref(-1);
|
||||||
|
|||||||
Reference in New Issue
Block a user