[FEAT MERGE] log4100 branch

Co-authored-by: tino247 <tino247@126.com>
Co-authored-by: BinChenn <binchenn.bc@gmail.com>
Co-authored-by: HaHaJeff <jeffzhouhhh@gmail.com>
This commit is contained in:
obdev
2023-01-28 18:17:31 +08:00
committed by ob-robot
parent a269ffe6be
commit 50024b39cd
772 changed files with 60275 additions and 11301 deletions

View File

@ -33,6 +33,7 @@ ObTenantMutilAllocator::ObTenantMutilAllocator(uint64_t tenant_id)
LOG_IO_FLUSH_META_TASK_SIZE(sizeof(palf::LogIOFlushMetaTask)),
LOG_IO_TRUNCATE_PREFIX_BLOCKS_TASK_SIZE(sizeof(palf::LogIOTruncatePrefixBlocksTask)),
PALF_FETCH_LOG_TASK_SIZE(sizeof(palf::FetchLogTask)),
LOG_IO_FLASHBACK_TASK_SIZE(sizeof(palf::LogIOFlashbackTask)),
clog_blk_alloc_(),
inner_table_replay_blk_alloc_(REPLAY_MEM_LIMIT_THRESHOLD * INNER_TABLE_REPLAY_MEM_PERCENT / 100),
user_table_replay_blk_alloc_(REPLAY_MEM_LIMIT_THRESHOLD * (100 - INNER_TABLE_REPLAY_MEM_PERCENT) / 100),
@ -46,7 +47,8 @@ ObTenantMutilAllocator::ObTenantMutilAllocator(uint64_t tenant_id)
log_io_flush_meta_task_alloc_(LOG_IO_FLUSH_META_TASK_SIZE, ObMemAttr(tenant_id, "FlushMeta"), choose_blk_size(LOG_IO_FLUSH_META_TASK_SIZE), clog_blk_alloc_, this),
log_io_truncate_prefix_blocks_task_alloc_(LOG_IO_TRUNCATE_PREFIX_BLOCKS_TASK_SIZE, ObMemAttr(tenant_id, "FlushMeta"), choose_blk_size(LOG_IO_TRUNCATE_PREFIX_BLOCKS_TASK_SIZE), clog_blk_alloc_, this),
palf_fetch_log_task_alloc_(PALF_FETCH_LOG_TASK_SIZE, ObMemAttr(tenant_id, ObModIds::OB_FETCH_LOG_TASK), choose_blk_size(PALF_FETCH_LOG_TASK_SIZE), clog_blk_alloc_, this),
replay_log_task_alloc_(ObMemAttr(tenant_id, ObModIds::OB_LOG_REPLAY_TASK), ObVSliceAlloc::DEFAULT_BLOCK_SIZE)
replay_log_task_alloc_(ObMemAttr(tenant_id, ObModIds::OB_LOG_REPLAY_TASK), common::OB_MALLOC_BIG_BLOCK_SIZE),
log_io_flashback_task_alloc_(LOG_IO_FLASHBACK_TASK_SIZE, ObMemAttr(tenant_id, "Flashback"), choose_blk_size(LOG_IO_FLASHBACK_TASK_SIZE), clog_blk_alloc_, this)
{
// set_nway according to tenant's max_cpu
double min_cpu = 0;
@ -150,12 +152,14 @@ int64_t ObTenantMutilAllocator::get_pending_replay_mutator_size() const
return ATOMIC_LOAD(&pending_replay_mutator_size_);
}
LogIOFlushLogTask *ObTenantMutilAllocator::alloc_log_io_flush_log_task()
LogIOFlushLogTask *ObTenantMutilAllocator::alloc_log_io_flush_log_task(
const int64_t palf_id, const int64_t palf_epoch)
{
LogIOFlushLogTask *ret_ptr = NULL;
void *ptr = log_io_flush_log_task_alloc_.alloc();
if (NULL != ptr) {
ret_ptr = new(ptr)LogIOFlushLogTask();
ret_ptr = new(ptr)LogIOFlushLogTask(palf_id, palf_epoch);
ATOMIC_INC(&flying_log_task_);
}
return ret_ptr;
}
@ -165,15 +169,17 @@ void ObTenantMutilAllocator::free_log_io_flush_log_task(LogIOFlushLogTask *ptr)
if (OB_LIKELY(NULL != ptr)) {
ptr->~LogIOFlushLogTask();
log_io_flush_log_task_alloc_.free(ptr);
ATOMIC_DEC(&flying_log_task_);
}
}
LogIOTruncateLogTask *ObTenantMutilAllocator::alloc_log_io_truncate_log_task()
LogIOTruncateLogTask *ObTenantMutilAllocator::alloc_log_io_truncate_log_task(
const int64_t palf_id, const int64_t palf_epoch)
{
LogIOTruncateLogTask *ret_ptr = NULL;
void *ptr = log_io_truncate_log_task_alloc_.alloc();
if (NULL != ptr) {
ret_ptr = new(ptr) LogIOTruncateLogTask();
ret_ptr = new(ptr) LogIOTruncateLogTask(palf_id, palf_epoch);
}
return ret_ptr;
}
@ -186,12 +192,14 @@ void ObTenantMutilAllocator::free_log_io_truncate_log_task(LogIOTruncateLogTask
}
}
LogIOFlushMetaTask *ObTenantMutilAllocator::alloc_log_io_flush_meta_task()
LogIOFlushMetaTask *ObTenantMutilAllocator::alloc_log_io_flush_meta_task(
const int64_t palf_id, const int64_t palf_epoch)
{
LogIOFlushMetaTask *ret_ptr = NULL;
void *ptr = log_io_flush_meta_task_alloc_.alloc();
if (NULL != ptr) {
ret_ptr = new(ptr)LogIOFlushMetaTask();
ret_ptr = new(ptr)LogIOFlushMetaTask(palf_id, palf_epoch);
ATOMIC_INC(&flying_meta_task_);
}
return ret_ptr;
}
@ -201,15 +209,17 @@ void ObTenantMutilAllocator::free_log_io_flush_meta_task(LogIOFlushMetaTask *ptr
if (OB_LIKELY(NULL != ptr)) {
ptr->~LogIOFlushMetaTask();
log_io_flush_meta_task_alloc_.free(ptr);
ATOMIC_DEC(&flying_meta_task_);
}
}
palf::LogIOTruncatePrefixBlocksTask *ObTenantMutilAllocator::alloc_log_io_truncate_prefix_blocks_task()
palf::LogIOTruncatePrefixBlocksTask *ObTenantMutilAllocator::alloc_log_io_truncate_prefix_blocks_task(
const int64_t palf_id, const int64_t palf_epoch)
{
LogIOTruncatePrefixBlocksTask *ret_ptr = NULL;
void *ptr = log_io_truncate_prefix_blocks_task_alloc_.alloc();
if (NULL != ptr) {
ret_ptr = new(ptr)LogIOTruncatePrefixBlocksTask();
ret_ptr = new(ptr)LogIOTruncatePrefixBlocksTask(palf_id ,palf_epoch);
}
return ret_ptr;
}
@ -265,6 +275,24 @@ void ObTenantMutilAllocator::free_replay_log_buf(void *ptr)
}
}
palf::LogIOFlashbackTask *ObTenantMutilAllocator::alloc_log_io_flashback_task(const int64_t palf_id, const int64_t palf_epoch)
{
LogIOFlashbackTask *ret_ptr = NULL;
void *ptr = log_io_flashback_task_alloc_.alloc();
if (NULL != ptr) {
ret_ptr = new(ptr)LogIOFlashbackTask(palf_id, palf_epoch);
}
return ret_ptr;
}
void ObTenantMutilAllocator::free_log_io_flashback_task(palf::LogIOFlashbackTask *ptr)
{
if (OB_LIKELY(NULL != ptr)) {
ptr->~LogIOFlashbackTask();
log_io_flashback_task_alloc_.free(ptr);
}
}
void ObTenantMutilAllocator::set_nway(const int32_t nway)
{
if (nway > 0) {

View File

@ -18,6 +18,7 @@
#include "lib/allocator/ob_slice_alloc.h"
#include "lib/allocator/ob_vslice_alloc.h"
#include "lib/queue/ob_link.h"
#include "lib/utility/ob_print_utils.h"
namespace oceanbase
{
@ -28,6 +29,7 @@ class LogIOTruncateLogTask;
class LogIOFlushMetaTask;
class LogIOTruncatePrefixBlocksTask;
class LogIOFlushMetaTask;
class LogIOFlashbackTask;
class FetchLogTask;
}
namespace logservice
@ -41,7 +43,7 @@ class ObTraceProfile;
class ObILogAllocator : public ObIAllocator
{
public:
ObILogAllocator() {}
ObILogAllocator() : flying_log_task_(0), flying_meta_task_(0) {}
virtual ~ObILogAllocator() {}
public:
@ -51,13 +53,13 @@ public:
virtual void *ge_alloc(const int64_t size) = 0;
virtual void ge_free(void *ptr) = 0;
virtual const ObBlockAllocMgr &get_clog_blk_alloc_mgr() const = 0;
virtual palf::LogIOFlushLogTask *alloc_log_io_flush_log_task() = 0;
virtual palf::LogIOFlushLogTask *alloc_log_io_flush_log_task(const int64_t palf_id, const int64_t palf_epoch) = 0;
virtual void free_log_io_flush_log_task(palf::LogIOFlushLogTask *ptr) = 0;
virtual palf::LogIOTruncateLogTask *alloc_log_io_truncate_log_task() = 0;
virtual palf::LogIOTruncateLogTask *alloc_log_io_truncate_log_task(const int64_t palf_id, const int64_t palf_epoch) = 0;
virtual void free_log_io_truncate_log_task(palf::LogIOTruncateLogTask *ptr) = 0;
virtual palf::LogIOFlushMetaTask *alloc_log_io_flush_meta_task() = 0;
virtual palf::LogIOFlushMetaTask *alloc_log_io_flush_meta_task(const int64_t palf_id, const int64_t palf_epoch) = 0;
virtual void free_log_io_flush_meta_task(palf::LogIOFlushMetaTask *ptr) = 0;
virtual palf::LogIOTruncatePrefixBlocksTask *alloc_log_io_truncate_prefix_blocks_task() = 0;
virtual palf::LogIOTruncatePrefixBlocksTask *alloc_log_io_truncate_prefix_blocks_task(const int64_t palf_id, const int64_t palf_epoch) = 0;
virtual void free_log_io_truncate_prefix_blocks_task(palf::LogIOTruncatePrefixBlocksTask *ptr) = 0;
virtual palf::FetchLogTask *alloc_palf_fetch_log_task() = 0;
virtual void free_palf_fetch_log_task(palf::FetchLogTask *ptr) = 0;
@ -65,6 +67,13 @@ public:
virtual void *alloc_replay_log_buf(const int64_t size) = 0;
virtual void free_replay_task(logservice::ObLogReplayTask *ptr) = 0;
virtual void free_replay_log_buf(void *ptr) = 0;
virtual palf::LogIOFlashbackTask *alloc_log_io_flashback_task(const int64_t palf_id, const int64_t palf_epoch) = 0;
virtual void free_log_io_flashback_task(palf::LogIOFlashbackTask *ptr) = 0;
TO_STRING_KV(K_(flying_log_task), K_(flying_meta_task));
protected:
int64_t flying_log_task_;
int64_t flying_meta_task_;
};
// Interface for ReplayEngine module
@ -126,13 +135,13 @@ public:
void dec_pending_replay_mutator_size(int64_t size);
int64_t get_pending_replay_mutator_size() const;
// V4.0
palf::LogIOFlushLogTask *alloc_log_io_flush_log_task();
palf::LogIOFlushLogTask *alloc_log_io_flush_log_task(const int64_t palf_id, const int64_t palf_epoch);
void free_log_io_flush_log_task(palf::LogIOFlushLogTask *ptr);
palf::LogIOTruncateLogTask *alloc_log_io_truncate_log_task();
palf::LogIOTruncateLogTask *alloc_log_io_truncate_log_task(const int64_t palf_id, const int64_t palf_epoch);
void free_log_io_truncate_log_task(palf::LogIOTruncateLogTask *ptr);
palf::LogIOFlushMetaTask *alloc_log_io_flush_meta_task();
palf::LogIOFlushMetaTask *alloc_log_io_flush_meta_task(const int64_t palf_id, const int64_t palf_epoch);
void free_log_io_flush_meta_task(palf::LogIOFlushMetaTask *ptr);
palf::LogIOTruncatePrefixBlocksTask *alloc_log_io_truncate_prefix_blocks_task();
palf::LogIOTruncatePrefixBlocksTask *alloc_log_io_truncate_prefix_blocks_task(const int64_t palf_id, const int64_t palf_epoch);
void free_log_io_truncate_prefix_blocks_task(palf::LogIOTruncatePrefixBlocksTask *ptr);
palf::FetchLogTask *alloc_palf_fetch_log_task();
void free_palf_fetch_log_task(palf::FetchLogTask *ptr);
@ -140,6 +149,8 @@ public:
void *alloc_replay_log_buf(const int64_t size);
void free_replay_task(logservice::ObLogReplayTask *ptr);
void free_replay_log_buf(void *ptr);
palf::LogIOFlashbackTask *alloc_log_io_flashback_task(const int64_t palf_id, const int64_t palf_epoch);
void free_log_io_flashback_task(palf::LogIOFlashbackTask *ptr);
private:
uint64_t tenant_id_ CACHE_ALIGNED;
@ -150,6 +161,7 @@ private:
const int LOG_IO_FLUSH_META_TASK_SIZE;
const int LOG_IO_TRUNCATE_PREFIX_BLOCKS_TASK_SIZE;
const int PALF_FETCH_LOG_TASK_SIZE;
const int LOG_IO_FLASHBACK_TASK_SIZE;
ObBlockAllocMgr clog_blk_alloc_;
ObBlockAllocMgr inner_table_replay_blk_alloc_;
ObBlockAllocMgr user_table_replay_blk_alloc_;
@ -164,6 +176,7 @@ private:
ObSliceAlloc log_io_truncate_prefix_blocks_task_alloc_;
ObSliceAlloc palf_fetch_log_task_alloc_;
ObVSliceAlloc replay_log_task_alloc_;
ObSliceAlloc log_io_flashback_task_alloc_;;
};
} // end of namespace common