make(rollback) max timer controller number to 512 and make it configurable.
This commit is contained in:
parent
fcc308fb40
commit
1f78d9b859
|
@ -169,6 +169,8 @@ extern uint32_t debugFlag;
|
||||||
extern uint32_t odbcdebugFlag;
|
extern uint32_t odbcdebugFlag;
|
||||||
extern uint32_t qdebugFlag;
|
extern uint32_t qdebugFlag;
|
||||||
|
|
||||||
|
extern uint32_t taosMaxTmrCtrl;
|
||||||
|
|
||||||
extern int tsRpcTimer;
|
extern int tsRpcTimer;
|
||||||
extern int tsRpcMaxTime;
|
extern int tsRpcMaxTime;
|
||||||
extern int tsUdpDelay;
|
extern int tsUdpDelay;
|
||||||
|
|
|
@ -25,6 +25,7 @@ typedef void (*TAOS_TMR_CALLBACK)(void *, void *);
|
||||||
|
|
||||||
extern uint32_t tmrDebugFlag;
|
extern uint32_t tmrDebugFlag;
|
||||||
extern int taosTmrThreads;
|
extern int taosTmrThreads;
|
||||||
|
extern uint32_t taosMaxTmrCtrl;
|
||||||
|
|
||||||
#define tmrError(...) \
|
#define tmrError(...) \
|
||||||
do { if (tmrDebugFlag & DEBUG_ERROR) { \
|
do { if (tmrDebugFlag & DEBUG_ERROR) { \
|
||||||
|
@ -41,7 +42,6 @@ extern int taosTmrThreads;
|
||||||
tprintf("TMR ", tmrDebugFlag, __VA_ARGS__); \
|
tprintf("TMR ", tmrDebugFlag, __VA_ARGS__); \
|
||||||
} } while(0)
|
} } while(0)
|
||||||
|
|
||||||
#define MAX_NUM_OF_TMRCTL 512
|
|
||||||
#define MSECONDS_PER_TICK 5
|
#define MSECONDS_PER_TICK 5
|
||||||
|
|
||||||
void *taosTmrInit(int maxTmr, int resoultion, int longest, const char *label);
|
void *taosTmrInit(int maxTmr, int resoultion, int longest, const char *label);
|
||||||
|
|
|
@ -536,6 +536,11 @@ void tsInitGlobalConfig() {
|
||||||
0, 2, 0, TSDB_CFG_UTYPE_NONE);
|
0, 2, 0, TSDB_CFG_UTYPE_NONE);
|
||||||
// 0-any, 1-mgmt, 2-dnode
|
// 0-any, 1-mgmt, 2-dnode
|
||||||
|
|
||||||
|
// timer
|
||||||
|
tsInitConfigOption(cfg++, "maxTmrCtrl", &taosMaxTmrCtrl, TSDB_CFG_VTYPE_INT,
|
||||||
|
TSDB_CFG_CTYPE_B_CONFIG | TSDB_CFG_CTYPE_B_SHOW | TSDB_CFG_CTYPE_B_CLUSTER,
|
||||||
|
8, 2048, 0, TSDB_CFG_UTYPE_NONE);
|
||||||
|
|
||||||
// time
|
// time
|
||||||
tsInitConfigOption(cfg++, "monitorInterval", &tsMonitorInterval, TSDB_CFG_VTYPE_INT,
|
tsInitConfigOption(cfg++, "monitorInterval", &tsMonitorInterval, TSDB_CFG_VTYPE_INT,
|
||||||
TSDB_CFG_CTYPE_B_CONFIG,
|
TSDB_CFG_CTYPE_B_CONFIG,
|
||||||
|
|
|
@ -82,12 +82,15 @@ typedef struct time_wheel_t {
|
||||||
} time_wheel_t;
|
} time_wheel_t;
|
||||||
|
|
||||||
uint32_t tmrDebugFlag = DEBUG_ERROR | DEBUG_WARN | DEBUG_FILE;
|
uint32_t tmrDebugFlag = DEBUG_ERROR | DEBUG_WARN | DEBUG_FILE;
|
||||||
|
uint32_t taosMaxTmrCtrl = 512;
|
||||||
|
|
||||||
static pthread_once_t tmrModuleInit = PTHREAD_ONCE_INIT;
|
static pthread_once_t tmrModuleInit = PTHREAD_ONCE_INIT;
|
||||||
static pthread_mutex_t tmrCtrlMutex;
|
static pthread_mutex_t tmrCtrlMutex;
|
||||||
static tmr_ctrl_t tmrCtrls[MAX_NUM_OF_TMRCTL];
|
static tmr_ctrl_t* tmrCtrls;
|
||||||
static tmr_ctrl_t* unusedTmrCtrl = NULL;
|
static tmr_ctrl_t* unusedTmrCtrl = NULL;
|
||||||
void* tmrQhandle;
|
static void* tmrQhandle;
|
||||||
|
static int numOfTmrCtrl = 0;
|
||||||
|
|
||||||
int taosTmrThreads = 1;
|
int taosTmrThreads = 1;
|
||||||
|
|
||||||
static uintptr_t nextTimerId = 0;
|
static uintptr_t nextTimerId = 0;
|
||||||
|
@ -481,7 +484,13 @@ bool taosTmrReset(TAOS_TMR_CALLBACK fp, int mseconds, void* param, void* handle,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void taosTmrModuleInit(void) {
|
static void taosTmrModuleInit(void) {
|
||||||
for (int i = 0; i < tListLen(tmrCtrls) - 1; ++i) {
|
tmrCtrls = malloc(sizeof(tmr_ctrl_t) * taosMaxTmrCtrl);
|
||||||
|
if (tmrCtrls == NULL) {
|
||||||
|
tmrError("failed to allocate memory for timer controllers.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < taosMaxTmrCtrl - 1; ++i) {
|
||||||
tmr_ctrl_t* ctrl = tmrCtrls + i;
|
tmr_ctrl_t* ctrl = tmrCtrls + i;
|
||||||
ctrl->next = ctrl + 1;
|
ctrl->next = ctrl + 1;
|
||||||
}
|
}
|
||||||
|
@ -526,6 +535,7 @@ void* taosTmrInit(int maxNumOfTmrs, int resolution, int longest, const char* lab
|
||||||
tmr_ctrl_t* ctrl = unusedTmrCtrl;
|
tmr_ctrl_t* ctrl = unusedTmrCtrl;
|
||||||
if (ctrl != NULL) {
|
if (ctrl != NULL) {
|
||||||
unusedTmrCtrl = ctrl->next;
|
unusedTmrCtrl = ctrl->next;
|
||||||
|
numOfTmrCtrl++;
|
||||||
}
|
}
|
||||||
pthread_mutex_unlock(&tmrCtrlMutex);
|
pthread_mutex_unlock(&tmrCtrlMutex);
|
||||||
|
|
||||||
|
@ -536,7 +546,7 @@ void* taosTmrInit(int maxNumOfTmrs, int resolution, int longest, const char* lab
|
||||||
|
|
||||||
strncpy(ctrl->label, label, sizeof(ctrl->label));
|
strncpy(ctrl->label, label, sizeof(ctrl->label));
|
||||||
ctrl->label[sizeof(ctrl->label) - 1] = 0;
|
ctrl->label[sizeof(ctrl->label) - 1] = 0;
|
||||||
tmrTrace("timer controller[label=%s] is initialized.", label);
|
tmrTrace("timer controller[label=%s] is initialized, number of timer controllers: %d.", label, numOfTmrCtrl);
|
||||||
return ctrl;
|
return ctrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -549,6 +559,7 @@ void taosTmrCleanUp(void* handle) {
|
||||||
|
|
||||||
pthread_mutex_lock(&tmrCtrlMutex);
|
pthread_mutex_lock(&tmrCtrlMutex);
|
||||||
ctrl->next = unusedTmrCtrl;
|
ctrl->next = unusedTmrCtrl;
|
||||||
|
numOfTmrCtrl--;
|
||||||
unusedTmrCtrl = ctrl;
|
unusedTmrCtrl = ctrl;
|
||||||
pthread_mutex_unlock(&tmrCtrlMutex);
|
pthread_mutex_unlock(&tmrCtrlMutex);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue