[FEAT MERGE] support log cache for read optimazation
Co-authored-by: HaHaJeff <jeffzhouhhh@gmail.com>
This commit is contained in:
@ -37,6 +37,7 @@ ObTenantMutilAllocator::ObTenantMutilAllocator(uint64_t tenant_id)
|
||||
PALF_FETCH_LOG_TASK_SIZE(sizeof(palf::FetchLogTask)),
|
||||
LOG_IO_FLASHBACK_TASK_SIZE(sizeof(palf::LogIOFlashbackTask)),
|
||||
LOG_IO_PURGE_THROTTLING_TASK_SIZE(sizeof(palf::LogIOPurgeThrottlingTask)),
|
||||
LOG_FILL_CACHE_TASK_SIZE(sizeof(palf::LogFillCacheTask)),
|
||||
clog_blk_alloc_(),
|
||||
replay_log_task_blk_alloc_(REPLAY_MEM_LIMIT_THRESHOLD),
|
||||
clog_compressing_blk_alloc_(CLOG_COMPRESSION_MEM_LIMIT_THRESHOLD),
|
||||
@ -50,6 +51,7 @@ ObTenantMutilAllocator::ObTenantMutilAllocator(uint64_t tenant_id)
|
||||
replay_log_task_alloc_(ObMemAttr(tenant_id, ObModIds::OB_LOG_REPLAY_TASK), common::OB_MALLOC_BIG_BLOCK_SIZE, replay_log_task_blk_alloc_),
|
||||
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),
|
||||
log_io_purge_throttling_task_alloc_(LOG_IO_PURGE_THROTTLING_TASK_SIZE, ObMemAttr(tenant_id, "PurgeThrottle"), choose_blk_size(LOG_IO_PURGE_THROTTLING_TASK_SIZE), clog_blk_alloc_, this),
|
||||
log_fill_cache_task_alloc_(LOG_FILL_CACHE_TASK_SIZE, ObMemAttr(tenant_id, "FillCache"), choose_blk_size(LOG_FILL_CACHE_TASK_SIZE), clog_blk_alloc_, this),
|
||||
clog_compression_buf_alloc_(ObMemAttr(tenant_id, "LogComBuf"), common::OB_MALLOC_BIG_BLOCK_SIZE, clog_compressing_blk_alloc_)
|
||||
{
|
||||
// set_nway according to tenant's max_cpu
|
||||
@ -83,6 +85,7 @@ void ObTenantMutilAllocator::destroy()
|
||||
log_io_purge_throttling_task_alloc_.destroy();
|
||||
palf_fetch_log_task_alloc_.destroy();
|
||||
replay_log_task_alloc_.destroy();
|
||||
log_fill_cache_task_alloc_.destroy();
|
||||
clog_compression_buf_alloc_.destroy();
|
||||
}
|
||||
|
||||
@ -112,6 +115,7 @@ void ObTenantMutilAllocator::try_purge()
|
||||
log_io_purge_throttling_task_alloc_.purge_extra_cached_block(0);
|
||||
palf_fetch_log_task_alloc_.purge_extra_cached_block(0);
|
||||
replay_log_task_alloc_.purge_extra_cached_block(0);
|
||||
log_fill_cache_task_alloc_.purge_extra_cached_block(0);
|
||||
clog_compression_buf_alloc_.purge_extra_cached_block(0);
|
||||
}
|
||||
|
||||
@ -327,6 +331,24 @@ void ObTenantMutilAllocator::free_log_io_purge_throttling_task(palf::LogIOPurgeT
|
||||
}
|
||||
}
|
||||
|
||||
LogFillCacheTask *ObTenantMutilAllocator::alloc_log_fill_cache_task(const int64_t palf_id, const int64_t palf_epoch)
|
||||
{
|
||||
LogFillCacheTask *ret_ptr = NULL;
|
||||
void *ptr = log_fill_cache_task_alloc_.alloc();
|
||||
if (NULL != ptr) {
|
||||
ret_ptr = new (ptr) LogFillCacheTask(palf_id, palf_epoch);
|
||||
}
|
||||
return ret_ptr;
|
||||
}
|
||||
|
||||
void ObTenantMutilAllocator::free_log_fill_cache_task(palf::LogFillCacheTask *ptr)
|
||||
{
|
||||
if (OB_LIKELY(NULL != ptr)) {
|
||||
ptr->~LogFillCacheTask();
|
||||
log_fill_cache_task_alloc_.free(ptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void ObTenantMutilAllocator::set_nway(const int32_t nway)
|
||||
{
|
||||
|
||||
@ -33,6 +33,7 @@ class LogIOFlushMetaTask;
|
||||
class LogIOFlashbackTask;
|
||||
class LogIOPurgeThrottlingTask;
|
||||
class FetchLogTask;
|
||||
class LogFillCacheTask;
|
||||
}
|
||||
namespace logservice
|
||||
{
|
||||
@ -75,6 +76,8 @@ public:
|
||||
virtual void free_log_io_flashback_task(palf::LogIOFlashbackTask *ptr) = 0;
|
||||
virtual palf::LogIOPurgeThrottlingTask *alloc_log_io_purge_throttling_task(const int64_t palf_id, const int64_t palf_epoch) = 0;
|
||||
virtual void free_log_io_purge_throttling_task(palf::LogIOPurgeThrottlingTask *ptr) = 0;
|
||||
virtual palf::LogFillCacheTask *alloc_log_fill_cache_task(const int64_t palf_id, const int64_t palf_epoch) = 0;
|
||||
virtual void free_log_fill_cache_task(palf::LogFillCacheTask *ptr) = 0;
|
||||
virtual void *alloc_append_compression_buf(const int64_t size) = 0;
|
||||
virtual void free_append_compression_buf(void *ptr) = 0;
|
||||
virtual void *alloc_replay_decompression_buf(const int64_t size) = 0;
|
||||
@ -150,6 +153,9 @@ public:
|
||||
void free_log_io_flashback_task(palf::LogIOFlashbackTask *ptr);
|
||||
palf::LogIOPurgeThrottlingTask *alloc_log_io_purge_throttling_task(const int64_t palf_id, const int64_t palf_epoch);
|
||||
void free_log_io_purge_throttling_task(palf::LogIOPurgeThrottlingTask *ptr);
|
||||
palf::LogFillCacheTask *alloc_log_fill_cache_task(const int64_t palf_id, const int64_t palf_epoch);
|
||||
void free_log_fill_cache_task(palf::LogFillCacheTask *ptr);
|
||||
|
||||
void *alloc_append_compression_buf(const int64_t size);
|
||||
void free_append_compression_buf(void *ptr);
|
||||
//alloc buf from replay_log_task_alloc
|
||||
@ -169,6 +175,7 @@ private:
|
||||
const int PALF_FETCH_LOG_TASK_SIZE;
|
||||
const int LOG_IO_FLASHBACK_TASK_SIZE;
|
||||
const int LOG_IO_PURGE_THROTTLING_TASK_SIZE;
|
||||
const int LOG_FILL_CACHE_TASK_SIZE;
|
||||
ObBlockAllocMgr clog_blk_alloc_;
|
||||
ObBlockAllocMgr replay_log_task_blk_alloc_;
|
||||
ObBlockAllocMgr clog_compressing_blk_alloc_;
|
||||
@ -182,6 +189,7 @@ private:
|
||||
ObVSliceAlloc replay_log_task_alloc_;
|
||||
ObSliceAlloc log_io_flashback_task_alloc_;
|
||||
ObSliceAlloc log_io_purge_throttling_task_alloc_;
|
||||
ObSliceAlloc log_fill_cache_task_alloc_;
|
||||
ObVSliceAlloc clog_compression_buf_alloc_;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user