!1149 支持cgroup

Merge pull request !1149 from gentle_hu/2.0.0
This commit is contained in:
opengauss-bot 2021-08-05 07:11:10 +00:00 committed by Gitee
commit 8105a88efc
6 changed files with 23 additions and 15 deletions

View File

@ -53,6 +53,7 @@ SUBDIRS = \
pg_resetxlog \
gs_guc \
pgxc_clean \
gs_cgroup \
gsqlerr \
pg_basebackup \
pg_probackup

View File

@ -4352,6 +4352,20 @@ static void InitConfigureNamesInt()
NULL,
NULL,
NULL},
{{
"parctl_min_cost",
PGC_SIGHUP,
RESOURCES_WORKLOAD,
gettext_noop("Sets the minimum cost to do parallel control."),
gettext_noop("This value is set to 1000000 as default. "),
},
&u_sess->attr.attr_resource.parctl_min_cost,
100000,
-1,
INT_MAX,
NULL,
NULL,
NULL},
{{
"io_control_unit",
PGC_SIGHUP,
@ -16878,7 +16892,7 @@ static bool check_cgroup_name(char** newval, void** extra, GucSource source)
p = *newval;
if (StringIsValid(p) && IS_PGXC_COORDINATOR && t_thrd.shemem_ptr_cxt.MyBEEntry &&
if (StringIsValid(p) && IS_SERVICE_NODE && t_thrd.shemem_ptr_cxt.MyBEEntry &&
(currentGucContext == PGC_SUSET || currentGucContext == PGC_USERSET)) {
if (0 == g_instance.wlm_cxt->gscgroup_init_done)
ereport(ERROR,
@ -16907,7 +16921,7 @@ static bool check_cgroup_name(char** newval, void** extra, GucSource source)
static void assign_cgroup_name(const char* newval, void* extra)
{
/* set "control_group" global variable */
if (IS_PGXC_COORDINATOR && t_thrd.shemem_ptr_cxt.MyBEEntry && newval && *newval) {
if (IS_SERVICE_NODE && t_thrd.shemem_ptr_cxt.MyBEEntry && newval && *newval) {
if (g_instance.wlm_cxt->gscgroup_init_done == 0)
return;

View File

@ -1774,7 +1774,7 @@ bool WLMIsSimpleQuery(const QueryDesc* queryDesc, bool force_control, bool isQue
g_wlm_params->use_planA = false;
if (IS_PGXC_DATANODE || (IS_PGXC_COORDINATOR && IsConnFromCoord()) ||
if (COORDINATOR_NOT_SINGLE || (IS_SERVICE_NODE && IsConnFromCoord()) ||
u_sess->attr.attr_resource.parctl_min_cost < 0) {
return true;
}
@ -1853,7 +1853,7 @@ bool WLMIsSimpleQuery(const QueryDesc* queryDesc, bool force_control, bool isQue
*/
bool WLMNeedTrackResource(const QueryDesc* queryDesc)
{
if ((!(IS_SINGLE_NODE || IS_PGXC_COORDINATOR)) || (IS_PGXC_COORDINATOR && IsConnFromCoord()) ||
if ((!IS_SERVICE_NODE) || (IS_PGXC_COORDINATOR && IsConnFromCoord()) ||
t_thrd.wlm_cxt.collect_info->sdetail.statement == NULL || !u_sess->attr.attr_resource.enable_resource_track ||
u_sess->attr.attr_resource.resource_track_cost < 0 || u_sess->attr.attr_sql.enable_cluster_resize ||
t_thrd.wlm_cxt.parctl_state.special) {
@ -2907,7 +2907,7 @@ void WLMSwitchCGroup(void)
}
/* simple query will skip the cgroup loading */
if (IS_PGXC_COORDINATOR && (IsConnFromCoord() || t_thrd.wlm_cxt.parctl_state.simple)) {
if (IS_SERVICE_NODE && (IsConnFromCoord() || t_thrd.wlm_cxt.parctl_state.simple)) {
return;
}

View File

@ -6157,9 +6157,6 @@ void standard_ProcessUtility(Node* parse_tree, const char* query_string, ParamLi
break;
case T_CreateResourcePoolStmt:
#ifndef ENABLE_MULTIPLE_NODES
DISTRIBUTED_FEATURE_NOT_SUPPORTED();
#endif
if (IS_PGXC_COORDINATOR && !IsConnFromCoord()) {
char* first_exec_node = find_first_exec_cn();
bool is_first_node = (strcmp(first_exec_node, g_instance.attr.attr_common.PGXCNodeName) == 0);
@ -6216,9 +6213,6 @@ void standard_ProcessUtility(Node* parse_tree, const char* query_string, ParamLi
break;
case T_AlterResourcePoolStmt:
#ifndef ENABLE_MULTIPLE_NODES
DISTRIBUTED_FEATURE_NOT_SUPPORTED();
#endif
if (IS_PGXC_COORDINATOR) {
char* first_exec_node = find_first_exec_cn();
bool is_first_node = (strcmp(first_exec_node, g_instance.attr.attr_common.PGXCNodeName) == 0);
@ -6239,9 +6233,6 @@ void standard_ProcessUtility(Node* parse_tree, const char* query_string, ParamLi
break;
case T_DropResourcePoolStmt:
#ifndef ENABLE_MULTIPLE_NODES
DISTRIBUTED_FEATURE_NOT_SUPPORTED();
#endif
if (IS_PGXC_COORDINATOR) {
char* first_exec_node = find_first_exec_cn();
bool is_first_node = (strcmp(first_exec_node, g_instance.attr.attr_common.PGXCNodeName) == 0);

View File

@ -57,6 +57,8 @@ typedef enum {
/* Is the CN receive SQL statement ? */
#define IS_MAIN_COORDINATOR (IS_PGXC_COORDINATOR && !IsConnFromCoord())
#define IS_SERVICE_NODE (g_instance.role == VCOORDINATOR || g_instance.role == VSINGLENODE)
/* key pair to be used as object id while using advisory lock for backup */
#define XC_LOCK_FOR_BACKUP_KEY_1 0xFFFF
#define XC_LOCK_FOR_BACKUP_KEY_2 0xFFFF

View File

@ -5071,7 +5071,7 @@ static void check_global_variables()
}
}
#define BASE_PGXC_LIKE_MACRO_NUM 1424
#define BASE_PGXC_LIKE_MACRO_NUM 1422
static void check_pgxc_like_macros()
{
#ifdef BUILD_BY_CMAKE