diff --git a/be/src/runtime/workload_group/workload_group.cpp b/be/src/runtime/workload_group/workload_group.cpp index 1f43fc2e29..5ddd91d0e8 100644 --- a/be/src/runtime/workload_group/workload_group.cpp +++ b/be/src/runtime/workload_group/workload_group.cpp @@ -47,7 +47,6 @@ namespace doris { const static std::string MEMORY_LIMIT_DEFAULT_VALUE = "0%"; const static bool ENABLE_MEMORY_OVERCOMMIT_DEFAULT_VALUE = true; -const static int CPU_HARD_LIMIT_DEFAULT_VALUE = -1; const static int SPILL_LOW_WATERMARK_DEFAULT_VALUE = 50; const static int SPILL_HIGH_WATERMARK_DEFAULT_VALUE = 80; @@ -331,7 +330,12 @@ Status WorkloadGroupInfo::parse_topic_info(const TWorkloadGroupInfo& tworkload_g workload_group_info->cpu_share = cpu_share; // 5 cpu hard limit - int cpu_hard_limit = CPU_HARD_LIMIT_DEFAULT_VALUE; + // cgroup v1 and v2 has different default cpu quota value, + // v1's default value is -1, + // v2's default value is 'max 100000', + // it's hard to unify them, so set -1 here means it's an invalid value, + // it could be replaced to default value when write value to cpu file, refer modify_cg_cpu_hard_limit_no_lock. + int cpu_hard_limit = -1; if (tworkload_group_info.__isset.cpu_hard_limit && tworkload_group_info.cpu_hard_limit > 0) { cpu_hard_limit = tworkload_group_info.cpu_hard_limit; } diff --git a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java index fe97f368cb..4b2711bcc9 100644 --- a/fe/fe-common/src/main/java/org/apache/doris/common/Config.java +++ b/fe/fe-common/src/main/java/org/apache/doris/common/Config.java @@ -1878,6 +1878,9 @@ public class Config extends ConfigBase { @ConfField(mutable = true, varType = VariableAnnotation.EXPERIMENTAL) public static boolean enable_workload_group = true; + @ConfField(mutable = true, varType = VariableAnnotation.EXPERIMENTAL) + public static boolean enable_wg_memory_sum_limit = true; + @ConfField(mutable = true) public static boolean enable_query_queue = true; diff --git a/fe/fe-core/src/main/java/org/apache/doris/resource/workloadgroup/WorkloadGroupMgr.java b/fe/fe-core/src/main/java/org/apache/doris/resource/workloadgroup/WorkloadGroupMgr.java index 5ad50daeb7..31b9cefaa6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/resource/workloadgroup/WorkloadGroupMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/resource/workloadgroup/WorkloadGroupMgr.java @@ -409,7 +409,7 @@ public class WorkloadGroupMgr extends MasterDaemon implements Writable, GsonPost sumOfAllMemLimit += newWg.getMemoryLimitPercentWhenCalSum(); // 3 check total sum - if (sumOfAllMemLimit > 100.0 + 1e-6) { + if (Config.enable_wg_memory_sum_limit && sumOfAllMemLimit > 100.0 + 1e-6) { throw new DdlException( "The sum of all workload group " + WorkloadGroup.MEMORY_LIMIT + " within tag " + ( newWgTag.isPresent() ? newWgTag.get() : "")