【资源池化】opengauss侧适配DMS的并行逻辑
This commit is contained in:
@ -57,6 +57,8 @@ typedef struct st_ss_dms_func {
|
||||
void (*dms_get_event)(dms_wait_event_t event_type, unsigned long long *event_cnt, unsigned long long *event_time);
|
||||
int (*dms_buf_res_rebuild_drc)(dms_context_t *dms_ctx, dms_buf_ctrl_t *ctrl, unsigned long long lsn,
|
||||
unsigned char is_dirty);
|
||||
int (*dms_buf_res_rebuild_drc_parallel)(dms_context_t *dms_ctx, dms_ctrl_info_t *ctrl_info, unsigned char thread_index,
|
||||
unsigned char for_rebuild);
|
||||
int (*dms_is_recovery_session)(unsigned int sid);
|
||||
int (*drc_get_page_master_id)(char pageid[DMS_PAGEID_SIZE], unsigned char *master_id);
|
||||
int (*dms_release_page_batch)(dms_context_t *dms_ctx, dcs_batch_buf_t *owner_map, unsigned int *owner_count);
|
||||
@ -103,6 +105,8 @@ int dms_wait_reform(unsigned int *has_offline);
|
||||
void dms_get_event(dms_wait_event_t event_type, unsigned long long *event_cnt, unsigned long long *event_time);
|
||||
int dms_buf_res_rebuild_drc(dms_context_t *dms_ctx, dms_buf_ctrl_t *ctrl, unsigned long long lsn,
|
||||
unsigned char is_dirty);
|
||||
int dms_buf_res_rebuild_drc_parallel(dms_context_t *dms_ctx, dms_ctrl_info_t *ctrl_info, unsigned char thread_index,
|
||||
unsigned char for_rebuild);
|
||||
int dms_is_recovery_session(unsigned int sid);
|
||||
int drc_get_page_master_id(char pageid[DMS_PAGEID_SIZE], unsigned char *master_id);
|
||||
int dms_release_page_batch(dms_context_t *dms_ctx, dcs_batch_buf_t *owner_map, unsigned int *owner_count);
|
||||
|
||||
@ -50,7 +50,7 @@ typedef struct SSBroadcastDDLLock {
|
||||
|
||||
void InitDmsBufCtrl(void);
|
||||
void InitDmsContext(dms_context_t* dmsContext);
|
||||
|
||||
void InitDmsBufContext(dms_context_t* dmsBufCxt, BufferTag buftag);
|
||||
void MarkReadHint(int buf_id, char persistence, bool extend, const XLogPhyBlock *pblk);
|
||||
bool LockModeCompatible(dms_buf_ctrl_t *buf_ctrl, LWLockMode mode);
|
||||
bool StartReadPage(BufferDesc *buf_desc, LWLockMode mode);
|
||||
@ -61,7 +61,6 @@ Buffer TerminateReadSegPage(BufferDesc *buf_desc, ReadBufferMode read_mode, SegS
|
||||
Buffer DmsReadPage(Buffer buffer, LWLockMode mode, ReadBufferMode read_mode, bool *with_io);
|
||||
Buffer DmsReadSegPage(Buffer buffer, LWLockMode mode, ReadBufferMode read_mode, bool *with_io);
|
||||
bool DmsReleaseOwner(BufferTag buf_tag, int buf_id, unsigned char* released);
|
||||
int32 CheckBuf4Rebuild(BufferDesc* buf_desc);
|
||||
int SSLockAcquire(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock, bool dontWait,
|
||||
dms_opengauss_lock_req_type_t reqType = LOCK_NORMAL_MODE);
|
||||
int SSLockRelease(const LOCKTAG *locktag, LOCKMODE lockmode, bool sessionLock);
|
||||
|
||||
@ -121,6 +121,7 @@ typedef struct knl_instance_attr_dms {
|
||||
int32 sslog_level;
|
||||
int32 sslog_backup_file_count;
|
||||
int32 sslog_max_file_size; //Unit:KB
|
||||
int parallel_thread_num;
|
||||
} knl_instance_attr_dms;
|
||||
|
||||
typedef struct knl_instance_attr_storage {
|
||||
|
||||
@ -451,6 +451,8 @@ const int MAX_COMPACTION_THREAD_NUM = 10;
|
||||
#define NUM_DMS_REFORM_CALLLBACK_PROCS (5)
|
||||
#define NUM_DMS_LSNR_CALLBACK_PROC (1)
|
||||
#define NUM_DMS_SMON_CALLBACK_PROC (1)
|
||||
#define NUM_DMS_PARALLEL_CALLBACK_PROC (g_instance.attr.attr_storage.dms_attr.parallel_thread_num <= 1 ? 0 : \
|
||||
g_instance.attr.attr_storage.dms_attr.parallel_thread_num)
|
||||
#define NUM_DMS_RDMA_THREAD_CNT (g_instance.attr.attr_storage.dms_attr.work_thread_count * 2)
|
||||
#define NUM_DMS_CALLBACK_PROCS \
|
||||
(g_instance.attr.attr_storage.dms_attr.enable_dms ? \
|
||||
@ -460,6 +462,7 @@ const int MAX_COMPACTION_THREAD_NUM = 10;
|
||||
NUM_DMS_RDMA_THREAD_CNT) + \
|
||||
NUM_DMS_LSNR_CALLBACK_PROC + \
|
||||
NUM_DMS_SMON_CALLBACK_PROC + \
|
||||
NUM_DMS_PARALLEL_CALLBACK_PROC + \
|
||||
NUM_DMS_REFORM_CALLLBACK_PROCS ) : 0)
|
||||
|
||||
#define GLOBAL_ALL_PROCS \
|
||||
|
||||
Reference in New Issue
Block a user