fix dynamic_worker not working
This commit is contained in:
@ -376,9 +376,11 @@ void ObResourceGroup::check_worker_count()
|
|||||||
int64_t token = 1;
|
int64_t token = 1;
|
||||||
int64_t now = ObTimeUtility::current_time();
|
int64_t now = ObTimeUtility::current_time();
|
||||||
bool enable_dynamic_worker = true;
|
bool enable_dynamic_worker = true;
|
||||||
|
int64_t threshold = 3 * 1000;
|
||||||
{
|
{
|
||||||
ObTenantConfigGuard tenant_config(TENANT_CONF(tenant_->id()));
|
ObTenantConfigGuard tenant_config(TENANT_CONF(tenant_->id()));
|
||||||
enable_dynamic_worker = tenant_config.is_valid() ? tenant_config->_ob_enable_dynamic_worker : true;
|
enable_dynamic_worker = tenant_config.is_valid() ? tenant_config->_ob_enable_dynamic_worker : true;
|
||||||
|
threshold = tenant_config.is_valid() ? tenant_config->_worker_long_stall_threshold : 3 * 1000;
|
||||||
}
|
}
|
||||||
DLIST_FOREACH_REMOVESAFE(wnode, workers_) {
|
DLIST_FOREACH_REMOVESAFE(wnode, workers_) {
|
||||||
const auto w = static_cast<ObThWorker*>(wnode->get_data());
|
const auto w = static_cast<ObThWorker*>(wnode->get_data());
|
||||||
@ -386,7 +388,7 @@ void ObResourceGroup::check_worker_count()
|
|||||||
workers_.remove(wnode);
|
workers_.remove(wnode);
|
||||||
destroy_worker(w);
|
destroy_worker(w);
|
||||||
} else if (w->has_req_flag()
|
} else if (w->has_req_flag()
|
||||||
&& w->blocking_ts() - now >= EXPAND_INTERVAL
|
&& now - w->blocking_ts() >= threshold
|
||||||
&& enable_dynamic_worker) {
|
&& enable_dynamic_worker) {
|
||||||
++token;
|
++token;
|
||||||
}
|
}
|
||||||
@ -1370,9 +1372,11 @@ void ObTenant::check_worker_count()
|
|||||||
int64_t token = 3;
|
int64_t token = 3;
|
||||||
int64_t now = ObTimeUtility::current_time();
|
int64_t now = ObTimeUtility::current_time();
|
||||||
bool enable_dynamic_worker = true;
|
bool enable_dynamic_worker = true;
|
||||||
|
int64_t threshold = 3 * 1000;
|
||||||
{
|
{
|
||||||
ObTenantConfigGuard tenant_config(TENANT_CONF(id_));
|
ObTenantConfigGuard tenant_config(TENANT_CONF(id_));
|
||||||
enable_dynamic_worker = tenant_config.is_valid() ? tenant_config->_ob_enable_dynamic_worker : true;
|
enable_dynamic_worker = tenant_config.is_valid() ? tenant_config->_ob_enable_dynamic_worker : true;
|
||||||
|
threshold = tenant_config.is_valid() ? tenant_config->_worker_long_stall_threshold : 3 * 1000;
|
||||||
}
|
}
|
||||||
// assume that high priority and normal priority were busy.
|
// assume that high priority and normal priority were busy.
|
||||||
DLIST_FOREACH_REMOVESAFE(wnode, workers_) {
|
DLIST_FOREACH_REMOVESAFE(wnode, workers_) {
|
||||||
@ -1381,7 +1385,7 @@ void ObTenant::check_worker_count()
|
|||||||
workers_.remove(wnode);
|
workers_.remove(wnode);
|
||||||
destroy_worker(w);
|
destroy_worker(w);
|
||||||
} else if (w->has_req_flag()
|
} else if (w->has_req_flag()
|
||||||
&& w->blocking_ts() - now >= EXPAND_INTERVAL
|
&& now - w->blocking_ts() >= threshold
|
||||||
&& w->is_default_worker()
|
&& w->is_default_worker()
|
||||||
&& enable_dynamic_worker) {
|
&& enable_dynamic_worker) {
|
||||||
++token;
|
++token;
|
||||||
|
|||||||
@ -317,8 +317,8 @@ DEF_INT(_ob_max_thread_num, OB_CLUSTER_PARAMETER, "0", "[0,10000)",
|
|||||||
"ob max thread number "
|
"ob max thread number "
|
||||||
"upper limit of observer thread count. Range: [0, 10000), 0 means no limit.",
|
"upper limit of observer thread count. Range: [0, 10000), 0 means no limit.",
|
||||||
ObParameterAttr(Section::TENANT, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
ObParameterAttr(Section::TENANT, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
||||||
DEF_DBL(cpu_quota_concurrency, OB_TENANT_PARAMETER, "4", "[1,10]",
|
DEF_DBL(cpu_quota_concurrency, OB_TENANT_PARAMETER, "4", "[1,20]",
|
||||||
"max allowed concurrency for 1 CPU quota. Range: [1,10]",
|
"max allowed concurrency for 1 CPU quota. Range: [1,20]",
|
||||||
ObParameterAttr(Section::TENANT, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
ObParameterAttr(Section::TENANT, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
||||||
DEF_DBL(token_reserved_percentage, OB_CLUSTER_PARAMETER,
|
DEF_DBL(token_reserved_percentage, OB_CLUSTER_PARAMETER,
|
||||||
"30", "[0,100]",
|
"30", "[0,100]",
|
||||||
@ -1575,3 +1575,6 @@ DEF_BOOL(_enable_system_tenant_memory_limit, OB_CLUSTER_PARAMETER, "True",
|
|||||||
"specifies whether allowed to limit the memory of tenant 500",
|
"specifies whether allowed to limit the memory of tenant 500",
|
||||||
ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
||||||
#endif
|
#endif
|
||||||
|
DEF_TIME(_worker_long_stall_threshold, OB_TENANT_PARAMETER, "3ms", "[0ms,)",
|
||||||
|
"threshold of dynamic worker works",
|
||||||
|
ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE));
|
||||||
|
|||||||
@ -372,6 +372,7 @@ _tx_result_retention
|
|||||||
_upgrade_stage
|
_upgrade_stage
|
||||||
_wait_interval_after_truncate
|
_wait_interval_after_truncate
|
||||||
_with_subquery
|
_with_subquery
|
||||||
|
_worker_long_stall_threshold
|
||||||
_xa_gc_interval
|
_xa_gc_interval
|
||||||
_xa_gc_timeout
|
_xa_gc_timeout
|
||||||
_xsolapi_generate_with_clause
|
_xsolapi_generate_with_clause
|
||||||
|
|||||||
Reference in New Issue
Block a user