You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by bo...@apache.org on 2024/04/22 14:21:35 UTC
(impala) 14/19: IMPALA-12988: Calculate an unbounded version of CpuAsk
This is an automated email from the ASF dual-hosted git repository.
boroknagyz pushed a commit to branch branch-4.4.0
in repository https://gitbox.apache.org/repos/asf/impala.git
commit c8149d14127968eb9a4d26a623fa6cc82762216e
Author: Riza Suminto <ri...@cloudera.com>
AuthorDate: Thu Apr 4 13:15:26 2024 -0700
IMPALA-12988: Calculate an unbounded version of CpuAsk
Planner calculates CpuAsk through a recursive call beginning at
Planner.computeBlockingAwareCores(), which is called after
Planner.computeEffectiveParallelism(). It does blocking operator
analysis over the selected degree of parallelism that was decided during
computeEffectiveParallelism() traversal. That selected degree of
parallelism, however, is already bounded by min and max parallelism
config, derived from PROCESSING_COST_MIN_THREADS and
MAX_FRAGMENT_INSTANCES_PER_NODE options accordingly.
This patch calculates an unbounded version of CpuAsk that is not bounded
by min and max parallelism config. It is purely based on the fragment's
ProcessingCost and query plan relationship constraint (for example, the
number of JOIN BUILDER fragments should equal the number of destination
JOIN fragments for partitioned join).
Frontend will receive both bounded and unbounded CpuAsk values from
TQueryExecRequest on each executor group set selection round. The
unbounded CpuAsk is then scaled down once using a nth root based
sublinear-function, controlled by the total cpu count of the smallest
executor group set and the bounded CpuAsk number. Another linear scaling
is then applied on both bounded and unbounded CpuAsk using
QUERY_CPU_COUNT_DIVISOR option. Frontend then compare the unbounded
CpuAsk after scaling against CpuMax to avoid assigning a query to a
small executor group set too soon. The last executor group set stays as
the "catch-all" executor group set.
After this patch, setting COMPUTE_PROCESSING_COST=True will show
following changes in query profile:
- The "max-parallelism" fields in the query plan will all be set to
maximum parallelism based on ProcessingCost.
- The CpuAsk counter is changed to show the unbounded CpuAsk after
scaling.
- A new counter CpuAskBounded shows the bounded CpuAsk after scaling. If
QUERY_CPU_COUNT_DIVISOR=1 and PLANNER_CPU_ASK slot counting strategy
is selected, this CpuAskBounded is also the minimum total admission
slots given to the query.
- A new counter MaxParallelism shows the unbounded CpuAsk before
scaling.
- The EffectiveParallelism counter remains unchanged,
showing bounded CpuAsk before scaling.
Testing:
- Update and pass FE test TpcdsCpuCostPlannerTest and
PlannerTest#testProcessingCost.
- Pass EE test tests/query_test/test_tpcds_queries.py
- Pass custom cluster test tests/custom_cluster/test_executor_groups.py
Change-Id: I5441e31088f90761062af35862be4ce09d116923
Reviewed-on: http://gerrit.cloudera.org:8080/21277
Reviewed-by: Kurt Deschler <kd...@cloudera.com>
Reviewed-by: Abhishek Rawat <ar...@cloudera.com>
Tested-by: Impala Public Jenkins <im...@cloudera.com>
---
be/src/scheduling/scheduler.cc | 3 +-
be/src/util/backend-gflag-util.cc | 10 +-
common/thrift/BackendGflags.thrift | 2 +
common/thrift/Query.thrift | 8 +-
.../org/apache/impala/planner/CostingSegment.java | 42 +++-
.../org/apache/impala/planner/PlanFragment.java | 230 ++++++++++++++-------
.../java/org/apache/impala/planner/Planner.java | 19 +-
.../org/apache/impala/service/BackendConfig.java | 2 +
.../java/org/apache/impala/service/Frontend.java | 156 +++++++++-----
.../PlannerTest/tpcds_cpu_cost/tpcds-q04.test | 36 ++--
.../PlannerTest/tpcds_cpu_cost/tpcds-q06.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q08.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q09.test | 60 +++---
.../PlannerTest/tpcds_cpu_cost/tpcds-q11.test | 24 +--
.../PlannerTest/tpcds_cpu_cost/tpcds-q12.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q13.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q14a.test | 36 ++--
.../PlannerTest/tpcds_cpu_cost/tpcds-q14b.test | 32 +--
.../PlannerTest/tpcds_cpu_cost/tpcds-q15.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q17.test | 8 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q20.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q22.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q23a.test | 24 +--
.../PlannerTest/tpcds_cpu_cost/tpcds-q23b.test | 32 +--
.../PlannerTest/tpcds_cpu_cost/tpcds-q24a.test | 8 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q24b.test | 8 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q28.test | 24 +--
.../PlannerTest/tpcds_cpu_cost/tpcds-q29.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q31.test | 32 +--
.../PlannerTest/tpcds_cpu_cost/tpcds-q32.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q36.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q37.test | 8 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q38.test | 20 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q40.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q43.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q44.test | 16 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q45.test | 2 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q46.test | 2 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q47.test | 12 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q48.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q50.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q51.test | 12 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q54.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q57.test | 16 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q58.test | 12 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q59.test | 8 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q62.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q64.test | 20 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q65.test | 8 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q67.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q70.test | 8 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q72.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q74.test | 20 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q75.test | 8 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q76.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q77.test | 20 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q78.test | 20 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q80.test | 12 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q82.test | 8 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q83.test | 8 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q84.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q85.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q86.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q87.test | 20 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q92.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q93.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q95.test | 20 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q97.test | 12 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q98.test | 4 +-
.../PlannerTest/tpcds_cpu_cost/tpcds-q99.test | 4 +-
.../QueryTest/processing-cost-admission-slots.test | 10 +-
tests/custom_cluster/test_executor_groups.py | 47 +++--
72 files changed, 728 insertions(+), 521 deletions(-)
diff --git a/be/src/scheduling/scheduler.cc b/be/src/scheduling/scheduler.cc
index 11ed058b7..b3465b36d 100644
--- a/be/src/scheduling/scheduler.cc
+++ b/be/src/scheduling/scheduler.cc
@@ -398,6 +398,7 @@ Status Scheduler::CheckEffectiveInstanceCount(
if (!state->query_options().compute_processing_cost) return Status::OK();
int effective_instance_count = fragment_state->fragment.effective_instance_count;
+ DCHECK_GT(effective_instance_count, 0);
if (effective_instance_count < fragment_state->instance_states.size()) {
initializeSchedulerWarning(state->summary_profile());
string warn_message = Substitute(
@@ -648,7 +649,7 @@ void Scheduler::CreateCollocatedAndScanInstances(const ExecutorConfig& executor_
if (request_query_option.compute_processing_cost) {
// Numbers should follow 'effective_instance_count' from planner.
// 'effective_instance_count' is total instances across all executors.
- DCHECK(fragment.effective_instance_count > 0);
+ DCHECK_GT(fragment.effective_instance_count, 0);
int inst_per_host =
ceil((float)fragment.effective_instance_count / instances_per_host.size());
max_num_instances = max(1, inst_per_host);
diff --git a/be/src/util/backend-gflag-util.cc b/be/src/util/backend-gflag-util.cc
index cfc028b1d..6ae72e671 100644
--- a/be/src/util/backend-gflag-util.cc
+++ b/be/src/util/backend-gflag-util.cc
@@ -263,13 +263,17 @@ DEFINE_double_hidden(max_filter_error_rate_from_full_scan, 0.9,
"query option or max_filter_error_rate backend flag. Setting value less than 0 "
"will disable this runtime filter reduction feature.");
+DEFINE_double_hidden(query_cpu_root_factor, 1.5,
+ "(Advance) The Nth root value to control sublinear scale down of unbounded "
+ "cpu requirement for executor group set selection.");
+
using strings::Substitute;
namespace impala {
// Flag validation
// ------------------------------------------------------------
-static bool ValidateCpuCountDivisor(const char* flagname, double value) {
+static bool ValidatePositiveDouble(const char* flagname, double value) {
if (0.0 < value) {
return true;
}
@@ -287,8 +291,9 @@ static bool ValidateMinProcessingPerThread(const char* flagname, int64_t value)
return false;
}
-DEFINE_validator(query_cpu_count_divisor, &ValidateCpuCountDivisor);
+DEFINE_validator(query_cpu_count_divisor, &ValidatePositiveDouble);
DEFINE_validator(min_processing_per_thread, &ValidateMinProcessingPerThread);
+DEFINE_validator(query_cpu_root_factor, &ValidatePositiveDouble);
Status GetConfigFromCommand(const string& flag_cmd, string& result) {
result.clear();
@@ -470,6 +475,7 @@ Status PopulateThriftBackendGflags(TBackendGflags& cfg) {
cfg.__set_inject_process_event_failure_ratio(FLAGS_inject_process_event_failure_ratio);
cfg.__set_enable_workload_mgmt(FLAGS_enable_workload_mgmt);
cfg.__set_query_log_table_name(FLAGS_query_log_table_name);
+ cfg.__set_query_cpu_root_factor(FLAGS_query_cpu_root_factor);
return Status::OK();
}
diff --git a/common/thrift/BackendGflags.thrift b/common/thrift/BackendGflags.thrift
index 650223fbf..e0c89b3bd 100644
--- a/common/thrift/BackendGflags.thrift
+++ b/common/thrift/BackendGflags.thrift
@@ -292,4 +292,6 @@ struct TBackendGflags {
130: required bool enable_workload_mgmt
131: required string query_log_table_name
+
+ 132: required double query_cpu_root_factor
}
diff --git a/common/thrift/Query.thrift b/common/thrift/Query.thrift
index e0ab68ddb..6160c4a2f 100644
--- a/common/thrift/Query.thrift
+++ b/common/thrift/Query.thrift
@@ -1019,8 +1019,8 @@ struct TQueryExecRequest {
// Indicate whether the request is a trivial query. Used by admission control.
13: optional bool is_trivial_query
- // CPU core count required to run the query. Used by Frontend to decide which
- // executor group to run the query. Should either unset or set with positive value.
+ // CPU core count required to run the query. Used by Frontend to do executor group-set
+ // assignment for the query. Should either be unset or set with positive value.
14: optional i32 cores_required
// Estimated per-host memory. The planner generates this value which may or may not be
@@ -1033,5 +1033,9 @@ struct TQueryExecRequest {
// Maximum admission control slot to use per executor backend.
// Only set if COMPUTE_PROCESSING_COST option is True.
17: optional i32 max_slot_per_executor
+
+ // The unbounded version of cores_required. Used by Frontend to do executor group-set
+ // assignment for the query. Should either be unset or set with positive value.
+ 18: optional i32 cores_required_unbounded
}
diff --git a/fe/src/main/java/org/apache/impala/planner/CostingSegment.java b/fe/src/main/java/org/apache/impala/planner/CostingSegment.java
index 49c87cfb6..7c24f6da1 100644
--- a/fe/src/main/java/org/apache/impala/planner/CostingSegment.java
+++ b/fe/src/main/java/org/apache/impala/planner/CostingSegment.java
@@ -77,13 +77,33 @@ public class CostingSegment extends TreeNode<CostingSegment> {
}
}
- private CoreCount createCoreCount() {
+ private CoreCount createCoreCount(boolean isUnbounded) {
+ PlanFragment fragment;
+ PlanNode topNode = null;
if (isOutputSegment()) {
- return new CoreCount(sink_.getFragment(), cost_.getNumInstancesExpected());
+ fragment = sink_.getFragment();
} else {
Preconditions.checkState(!nodes_.isEmpty());
- PlanNode topNode = nodes_.get(nodes_.size() - 1);
- return new CoreCount(topNode, cost_.getNumInstancesExpected());
+ topNode = nodes_.get(nodes_.size() - 1);
+ fragment = topNode.getFragment();
+ }
+
+ int maxParallelism = cost_.getNumInstancesExpected();
+ if (isUnbounded) {
+ maxParallelism = fragment.getMaxParallelism();
+ UnionNode unionNode = fragment.getUnionNode();
+ if (unionNode != null) {
+ // Union fragment need recalculation because its max parallelism is bounded by
+ // its children's adjusted count.
+ maxParallelism = fragment.getMaxParallelismForUnionFragment(unionNode, true);
+ }
+ }
+
+ if (topNode == null) {
+ return new CoreCount(sink_.getFragment(), maxParallelism);
+ } else {
+ Preconditions.checkNotNull(topNode);
+ return new CoreCount(topNode, maxParallelism);
}
}
@@ -110,17 +130,19 @@ public class CostingSegment extends TreeNode<CostingSegment> {
* subtreeCoreBuilder with {@link CoreCount} of child-blocking-subtree.
* @param fragmentCoreState A map holding per-fragment core state.
* @param subtreeCoreBuilder An ImmutableList builder to populate.
+ * @param findUnboundedCount if True, return the unbounded core count.
+ * Otherwise, return the bounded one.
* @return A {@link CoreCount} value of segment tree
* rooted at this segment.
*/
protected CoreCount traverseBlockingAwareCores(
Map<PlanFragmentId, Pair<CoreCount, List<CoreCount>>> fragmentCoreState,
- ImmutableList.Builder<CoreCount> subtreeCoreBuilder) {
- CoreCount segmentCore = createCoreCount();
+ ImmutableList.Builder<CoreCount> subtreeCoreBuilder, boolean findUnboundedCount) {
+ CoreCount segmentCore = createCoreCount(findUnboundedCount);
// If not in input segment, gather cost of children first.
for (CostingSegment childSegment : getChildren()) {
- CoreCount childSegmentCores =
- childSegment.traverseBlockingAwareCores(fragmentCoreState, subtreeCoreBuilder);
+ CoreCount childSegmentCores = childSegment.traverseBlockingAwareCores(
+ fragmentCoreState, subtreeCoreBuilder, findUnboundedCount);
if (childSegmentCores.total() > 0) {
segmentCore = CoreCount.max(segmentCore, childSegmentCores);
}
@@ -137,8 +159,8 @@ public class CostingSegment extends TreeNode<CostingSegment> {
Preconditions.checkNotNull(childCores);
if (childFragment.hasBlockingNode()) {
- CoreCount childCoreCount =
- childFragment.maxCore(childCores.first, CoreCount.sum(childCores.second));
+ CoreCount childCoreCount = childFragment.maxCore(
+ childCores.first, CoreCount.sum(childCores.second), findUnboundedCount);
subtreeCoreBuilder.add(childCoreCount);
} else {
Preconditions.checkState(node instanceof ExchangeNode);
diff --git a/fe/src/main/java/org/apache/impala/planner/PlanFragment.java b/fe/src/main/java/org/apache/impala/planner/PlanFragment.java
index 07ad46d1a..f284a21a5 100644
--- a/fe/src/main/java/org/apache/impala/planner/PlanFragment.java
+++ b/fe/src/main/java/org/apache/impala/planner/PlanFragment.java
@@ -48,6 +48,8 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.math.IntMath;
+import javax.annotation.Nullable;
+
/**
* PlanFragments form a tree structure via their ExchangeNodes. A tree of fragments
* connected in that way forms a plan. The output of a plan is produced by the root
@@ -568,13 +570,11 @@ public class PlanFragment extends TreeNode<PlanFragment> {
return ((HdfsTableSink)sink_).getNumInstances();
} else {
if (originalInstanceCount_ > -1) {
- Preconditions.checkState(hasAdjustedInstanceCount());
- Preconditions.checkState(
- planRoot_.getNumInstances() == getAdjustedInstanceCount(),
+ int adjustedCount = getAdjustedInstanceCount();
+ Preconditions.checkState(planRoot_.getNumInstances() == adjustedCount,
"Instance count of " + getId() + " with plan root "
+ planRoot_.getDisplayLabel() + " (" + planRoot_.getNumInstances()
- + ") does not follow cost based adjustment (" + getAdjustedInstanceCount()
- + ")!");
+ + ") does not follow cost based adjustment (" + adjustedCount + ")!");
}
return planRoot_.getNumInstances();
}
@@ -639,7 +639,9 @@ public class PlanFragment extends TreeNode<PlanFragment> {
result.setBackend_min_mem_reservation_bytes(
perBackendResourceProfile_.getMinMemReservationBytes());
result.setThread_reservation(perInstanceResourceProfile_.getThreadReservation());
- result.setEffective_instance_count(getAdjustedInstanceCount());
+ if (hasAdjustedInstanceCount()) {
+ result.setEffective_instance_count(adjustedInstanceCount_);
+ }
result.setIs_coordinator_only(coordinatorOnly_);
result.setIs_dominant(isDominantFragment_);
return result;
@@ -779,11 +781,7 @@ public class PlanFragment extends TreeNode<PlanFragment> {
// Print processing cost.
builder.append(detailPrefix);
builder.append("max-parallelism=");
- if (maxParallelism_ > 0) {
- builder.append(maxParallelism_);
- } else {
- builder.append(getAdjustedInstanceCount());
- }
+ builder.append(maxParallelism_);
builder.append(" segment-costs=");
builder.append(costingSegmentSummary());
if (thisTreeCpuCore_ > 0 && subtreeCpuCore_ > 0) {
@@ -941,6 +939,22 @@ public class PlanFragment extends TreeNode<PlanFragment> {
return maxCostingSegment.getNumInstanceMax(getNumNodes());
}
+ protected int getCappedCostBasedMaxParallelism(int minCap) {
+ int costBasedMaxParallelism = Math.max(minCap, getCostBasedMaxParallelism());
+ Preconditions.checkState(costBasedMaxParallelism > 0);
+ return costBasedMaxParallelism;
+ }
+
+ /**
+ * A fragment is either distributed evenly to all nodes or only at subset of nodes
+ * (ie., there is only 1 fragment instances with PlanRootSink and MAX_FS_WRITER
+ * fragment instances with HdfsTableSink). Increment by num nodes for the former case
+ * and 1 for the latter case.
+ */
+ protected int getNodeStepCountForParallelismTraversal() {
+ return getNumInstances() % getNumNodes() == 0 ? getNumNodes() : 1;
+ }
+
protected boolean hasBlockingNode() {
if (sink_ instanceof JoinBuildSink) return true;
for (PlanNode p : collectPlanNodes()) {
@@ -980,7 +994,23 @@ public class PlanFragment extends TreeNode<PlanFragment> {
}
}
- protected int getAdjustedInstanceCount() { return adjustedInstanceCount_; }
+ /**
+ * Only valid to call after calling {@link #traverseEffectiveParallelism(int, int,
+ * PlanFragment)}.
+ */
+ protected int getAdjustedInstanceCount() {
+ Preconditions.checkState(adjustedInstanceCount_ > -1);
+ return adjustedInstanceCount_;
+ }
+
+ /**
+ * Only valid to call after calling {@link #traverseEffectiveParallelism(int, int,
+ * PlanFragment)}.
+ */
+ protected int getMaxParallelism() {
+ Preconditions.checkState(maxParallelism_ > -1);
+ return maxParallelism_;
+ }
protected ProcessingCost getLastCostingSegment() {
return rootSegment_.getProcessingCost();
@@ -1030,18 +1060,18 @@ public class PlanFragment extends TreeNode<PlanFragment> {
* @param maxThreadPerNode Maximum thread per fragment per node based on
* {@code max(PROCESSING_COST_MIN_THREADS,
* TExecutorGroupSet.num_cores_per_executor)}.
- * @param parentParallelism Number of instance of parent fragment.
+ * @param parentFragment parent fragment of this fragment.
*/
protected void traverseEffectiveParallelism(final int minThreadPerNode,
- final int maxThreadPerNode, final int parentParallelism) {
+ final int maxThreadPerNode, final @Nullable PlanFragment parentFragment) {
Preconditions.checkNotNull(
rootSegment_, "ProcessingCost Fragment %s has not been computed!", getId());
- int nodeStepCount = getNumInstances() % getNumNodes() == 0 ? getNumNodes() : 1;
+ int nodeStepCount = getNodeStepCountForParallelismTraversal();
// step 1: Set initial parallelism to the maximum possible.
// Subsequent steps after this will not exceed maximum parallelism sets here.
boolean canTryLower = adjustToMaxParallelism(
- minThreadPerNode, maxThreadPerNode, parentParallelism, nodeStepCount);
+ minThreadPerNode, maxThreadPerNode, parentFragment, nodeStepCount);
if (canTryLower) {
// step 2: Try lower parallelism by comparing output ProcessingCost of the input
@@ -1070,76 +1100,100 @@ public class PlanFragment extends TreeNode<PlanFragment> {
// parallelism to match the child fragment parallelism.
for (PlanFragment child : getChildren()) {
if (child.getSink() instanceof JoinBuildSink) {
- child.traverseEffectiveParallelism(
- minThreadPerNode, maxThreadPerNode, getAdjustedInstanceCount());
+ child.traverseEffectiveParallelism(minThreadPerNode, maxThreadPerNode, this);
+ }
+ }
+ }
+
+ protected boolean isPartitionedJoinBuildFragment() {
+ return (sink_ instanceof JoinBuildSink) && !((JoinBuildSink) sink_).isShared();
+ }
+
+ protected int getMaxParallelismForUnionFragment(
+ UnionNode node, boolean findUnboundedCount) {
+ Preconditions.checkState(this == node.getFragment());
+ // We set parallelism of union fragment as a max between its input fragments and
+ // its collocated ScanNode's expected parallelism
+ // (see Scheduler::CreateCollocatedAndScanInstances()).
+ // We skip any join builder child fragment here because their parallelism
+ // is not adjusted yet.
+ int nodeStepCount = getNodeStepCountForParallelismTraversal();
+ int costBasedMaxParallelism = getCappedCostBasedMaxParallelism(nodeStepCount);
+ int maxParallelism = 1;
+ for (PlanFragment child : getChildren()) {
+ if (child.getSink() instanceof JoinBuildSink) continue;
+ Preconditions.checkState(child.hasAdjustedInstanceCount());
+ maxParallelism = Math.max(maxParallelism,
+ (findUnboundedCount ? child.getMaxParallelism() :
+ child.getAdjustedInstanceCount()));
+ }
+
+ List<ScanNode> scanNodes = Lists.newArrayList();
+ collectPlanNodes(Predicates.instanceOf(ScanNode.class), scanNodes);
+ if (!scanNodes.isEmpty()) {
+ // The existence of scan node may justify an increase of parallelism for this
+ // union fargment, but it should be capped at costBasedMaxParallelism.
+ int maxScannerThreads = ScanNode.MIN_NUM_SCAN_THREADS;
+ for (ScanNode scanNode : scanNodes) {
+ // if findUnboundedCount is True, use estScanRangeAfterRuntimeFilter()
+ // because maxScannerThreads_ is capped by
+ // maxThreadsGlobal = getNumNodes() * maxThreadsPerNode.
+ // while estScanRangeAfterRuntimeFilter() is not.
+ maxScannerThreads = Math.max(maxScannerThreads,
+ findUnboundedCount ? scanNode.estScanRangeAfterRuntimeFilter() :
+ scanNode.maxScannerThreads_);
}
+ maxParallelism =
+ Math.max(maxParallelism, Math.min(costBasedMaxParallelism, maxScannerThreads));
}
+ return maxParallelism;
}
/**
* Adjust parallelism of this fragment to the maximum allowed.
+ * This method initialize maxParallelism_ and adjustedInstanceCount_.
*
* @param minThreadPerNode Minimum thread per fragment per node based on
* {@code PROCESSING_COST_MIN_THREADS} query option.
* @param maxThreadPerNode Maximum thread per fragment per node based on
* {@code max(PROCESSING_COST_MIN_THREADS,
* TExecutorGroupSet.num_cores_per_executor)}.
- * @param parentParallelism Parallelism of parent fragment.
+ * @param parentFragment Parent fragment of this fragment.
* @param nodeStepCount The step count used to increase this fragment's parallelism.
* Usually equal to number of nodes or just 1.
* @return True if it is possible to lower this fragment's parallelism through
* ProcessingCost comparison. False if the parallelism should not be changed anymore.
*/
private boolean adjustToMaxParallelism(final int minThreadPerNode,
- final int maxThreadPerNode, final int parentParallelism, final int nodeStepCount) {
+ final int maxThreadPerNode, final @Nullable PlanFragment parentFragment,
+ final int nodeStepCount) {
int maxThreadAllowed = IntMath.saturatedMultiply(maxThreadPerNode, getNumNodes());
boolean canTryLower = true;
- int maxScannerThreads = Integer.MAX_VALUE;
// Compute selectedParallelism as the maximum allowed parallelism.
int selectedParallelism = getNumInstances();
if (isFixedParallelism_) {
selectedParallelism = getAdjustedInstanceCount();
+ maxParallelism_ = selectedParallelism;
canTryLower = false;
- } else if ((sink_ instanceof JoinBuildSink) && !((JoinBuildSink) sink_).isShared()) {
+ } else if (isPartitionedJoinBuildFragment()) {
// This is a non-shared (PARTITIONED) join build fragment.
// Parallelism of this fragment is equal to its parent parallelism.
- Preconditions.checkState(parentParallelism > 0);
+ Preconditions.checkNotNull(parentFragment);
+ final int parentParallelism = parentFragment.getAdjustedInstanceCount();
if (LOG.isTraceEnabled() && selectedParallelism != parentParallelism) {
logCountAdjustmentTrace(selectedParallelism, parentParallelism,
"Partitioned join build fragment follow parent's parallelism.");
}
selectedParallelism = parentParallelism;
+ maxParallelism_ = parentFragment.getMaxParallelism();
canTryLower = false; // no need to compute effective parallelism anymore.
} else {
- int costBasedMaxParallelism = Math.max(nodeStepCount, getCostBasedMaxParallelism());
- Preconditions.checkState(costBasedMaxParallelism > 0);
-
- if (hasUnionNode()) {
- // We set parallelism of union fragment as a max between its input fragments and
- // its collocated ScanNode's expected parallelism
- // (see Scheduler::CreateCollocatedAndScanInstances()).
- // We skip any join builder child fragment here because their parallelism
- // is not adjusted yet.
- maxParallelism_ = 1;
- for (PlanFragment child : getChildren()) {
- if (child.getSink() instanceof JoinBuildSink) continue;
- Preconditions.checkState(child.hasAdjustedInstanceCount());
- maxParallelism_ = Math.max(maxParallelism_, child.getAdjustedInstanceCount());
- }
+ UnionNode unionNode = getUnionNode();
- List<ScanNode> scanNodes = Lists.newArrayList();
- collectPlanNodes(Predicates.instanceOf(ScanNode.class), scanNodes);
- if (!scanNodes.isEmpty()) {
- // The existence of scan node may justify an increase of parallelism for this
- // union fargment, but it should be capped at costBasedMaxParallelism.
- maxScannerThreads = 1;
- for (ScanNode scanNode : scanNodes) {
- maxScannerThreads = Math.max(maxScannerThreads, scanNode.maxScannerThreads_);
- }
- maxParallelism_ = Math.max(
- maxParallelism_, Math.min(costBasedMaxParallelism, maxScannerThreads));
- }
+ if (unionNode != null) {
+ // Special handling for Union fragment.
+ maxParallelism_ = getMaxParallelismForUnionFragment(unionNode, false);
if (maxParallelism_ > maxThreadAllowed) {
selectedParallelism = maxThreadAllowed;
@@ -1151,7 +1205,7 @@ public class PlanFragment extends TreeNode<PlanFragment> {
selectedParallelism = maxParallelism_;
if (LOG.isTraceEnabled()) {
logCountAdjustmentTrace(getNumInstances(), selectedParallelism,
- "Follow minimum work per thread.");
+ "Follow minimum work per thread or max child count.");
}
}
canTryLower = false;
@@ -1159,7 +1213,13 @@ public class PlanFragment extends TreeNode<PlanFragment> {
// This is an interior fragment or fragment with single scan node.
// We calculate maxParallelism_, minParallelism, and selectedParallelism across
// all executors in the selected executor group.
+ int maxScannerThreads = Integer.MAX_VALUE;
+ int costBasedMaxParallelism = getCappedCostBasedMaxParallelism(nodeStepCount);
+
+ // track maximum parallelism unbounded by minThreadPerNode and maxThreadPerNode.
maxParallelism_ = costBasedMaxParallelism;
+ // track maximum parallelism bounded by minThreadPerNode and maxThreadPerNode.
+ int boundedParallelism = costBasedMaxParallelism;
// Bound maxParallelism_ by ScanNode's effective scan range count if
// this fragment has ScanNode.
@@ -1169,7 +1229,10 @@ public class PlanFragment extends TreeNode<PlanFragment> {
Preconditions.checkState(scanNodes.size() == 1);
maxScannerThreads = scanNodes.get(0).maxScannerThreads_;
maxParallelism_ = Math.max(ScanNode.MIN_NUM_SCAN_THREADS,
- Math.min(maxParallelism_, maxScannerThreads));
+ Math.min(
+ maxParallelism_, scanNodes.get(0).estScanRangeAfterRuntimeFilter()));
+ boundedParallelism = Math.max(ScanNode.MIN_NUM_SCAN_THREADS,
+ Math.min(boundedParallelism, maxScannerThreads));
// Prevent caller from lowering parallelism if fragment has ScanNode
// because there is no child fragment to compare with.
@@ -1178,26 +1241,28 @@ public class PlanFragment extends TreeNode<PlanFragment> {
int minParallelism = Math.min(
maxThreadAllowed, IntMath.saturatedMultiply(minThreadPerNode, getNumNodes()));
+ LOG.info("maxParallelism_=" + maxParallelism_ + " boundedParallelism="
+ + boundedParallelism + " minParallelism=" + minParallelism);
- if (maxParallelism_ > maxThreadAllowed) {
+ if (boundedParallelism > maxThreadAllowed) {
selectedParallelism = maxThreadAllowed;
if (LOG.isTraceEnabled()) {
logCountAdjustmentTrace(
getNumInstances(), selectedParallelism, "Follow maxThreadPerNode.");
}
} else {
- if (maxParallelism_ < minParallelism && minParallelism < maxScannerThreads) {
- maxParallelism_ = minParallelism;
+ if (boundedParallelism < minParallelism && minParallelism < maxScannerThreads) {
+ boundedParallelism = minParallelism;
canTryLower = false;
if (LOG.isTraceEnabled()) {
logCountAdjustmentTrace(
- getNumInstances(), maxParallelism_, "Follow minThreadPerNode.");
+ getNumInstances(), boundedParallelism, "Follow minThreadPerNode.");
}
} else if (LOG.isTraceEnabled()) {
logCountAdjustmentTrace(
- getNumInstances(), maxParallelism_, "Follow minimum work per thread.");
+ getNumInstances(), boundedParallelism, "Follow minimum work per thread.");
}
- selectedParallelism = maxParallelism_;
+ selectedParallelism = boundedParallelism;
}
}
}
@@ -1213,35 +1278,51 @@ public class PlanFragment extends TreeNode<PlanFragment> {
return canTryLower && selectedParallelism > 1;
}
- private boolean hasUnionNode() {
- List<ScanNode> nodes = Lists.newArrayList();
+ /**
+ * Get the top-most UnionNode of this fragment.
+ * If there is none, return null.
+ */
+ protected @Nullable UnionNode getUnionNode() {
+ List<PlanNode> nodes = Lists.newArrayList();
collectPlanNodes(Predicates.instanceOf(UnionNode.class), nodes);
- return !nodes.isEmpty();
+ return nodes.isEmpty() ? null : ((UnionNode) nodes.get(0));
}
/**
* Compute {@link CoreCount} of this fragment and populate it into 'fragmentCoreState'.
* @param fragmentCoreState A map holding per-fragment core state.
+ * @param findUnboundedCount if True, return the unbounded core count.
+ * Otherwise, return the bounded one.
* All successor of this fragment must already have its CoreCount registered into this
* map.
*/
protected void computeBlockingAwareCores(
- Map<PlanFragmentId, Pair<CoreCount, List<CoreCount>>> fragmentCoreState) {
+ Map<PlanFragmentId, Pair<CoreCount, List<CoreCount>>> fragmentCoreState,
+ boolean findUnboundedCount) {
Preconditions.checkNotNull(
rootSegment_, "ProcessingCost Fragment %s has not been computed!", getId());
ImmutableList.Builder<CoreCount> subtreeCoreBuilder =
new ImmutableList.Builder<CoreCount>();
- CoreCount coreReq =
- rootSegment_.traverseBlockingAwareCores(fragmentCoreState, subtreeCoreBuilder);
+ CoreCount coreReq = rootSegment_.traverseBlockingAwareCores(
+ fragmentCoreState, subtreeCoreBuilder, findUnboundedCount);
fragmentCoreState.put(getId(), Pair.create(coreReq, subtreeCoreBuilder.build()));
}
- protected CoreCount maxCore(CoreCount thisTreeCpuCore, CoreCount subtreeCpuCore) {
- thisTreeCpuCore_ = thisTreeCpuCore.total();
- subtreeCpuCore_ = subtreeCpuCore.total();
+ protected CoreCount maxCore(
+ CoreCount thisTreeCpuCore, CoreCount subtreeCpuCore, boolean findUnboundedCount) {
+ if (!findUnboundedCount) {
+ // Only initialize thisTreeCpuCore_ and subtreeCpuCore_ when doing bounded counting.
+ // This will be displayed in query profile to show how the maximum selection goes,
+ // such as:
+ // cpu-comparison-result=220 [max(120 (self) vs 220 (sum children))]
+ // "self" is 'thisTreeCpuCore_' while "sum children" is 'subtreeCpuCore_'.
+ thisTreeCpuCore_ = thisTreeCpuCore.total();
+ subtreeCpuCore_ = subtreeCpuCore.total();
+ }
if (LOG.isTraceEnabled()) {
- LOG.trace("At {}, compare {} ({}) vs {} ({})", getId(), thisTreeCpuCore,
- thisTreeCpuCore.total(), subtreeCpuCore, subtreeCpuCore.total());
+ LOG.trace("At {}, do {} comparison of {} ({}) vs {} ({})", getId(), thisTreeCpuCore,
+ (findUnboundedCount ? "unbounded" : "bounded"), thisTreeCpuCore.total(),
+ subtreeCpuCore, subtreeCpuCore.total());
}
return CoreCount.max(thisTreeCpuCore, subtreeCpuCore);
}
@@ -1258,14 +1339,13 @@ public class PlanFragment extends TreeNode<PlanFragment> {
originalInstanceCount_ = getNumInstances();
}
- if (LOG.isTraceEnabled() && originalInstanceCount_ != getAdjustedInstanceCount()) {
- logCountAdjustmentTrace(originalInstanceCount_, getAdjustedInstanceCount(),
- "Finalize effective parallelism.");
+ int adjustedCount = getAdjustedInstanceCount();
+ if (LOG.isTraceEnabled() && originalInstanceCount_ != adjustedCount) {
+ logCountAdjustmentTrace(
+ originalInstanceCount_, adjustedCount, "Finalize effective parallelism.");
}
- for (PlanNode node : collectPlanNodes()) {
- node.numInstances_ = getAdjustedInstanceCount();
- }
+ for (PlanNode node : collectPlanNodes()) { node.numInstances_ = adjustedCount; }
if (LOG.isTraceEnabled()) {
LOG.trace("ProcessingCost Fragment {}:\n{}", getId(), debugProcessingCosts());
diff --git a/fe/src/main/java/org/apache/impala/planner/Planner.java b/fe/src/main/java/org/apache/impala/planner/Planner.java
index e2e45397b..cc25e764a 100644
--- a/fe/src/main/java/org/apache/impala/planner/Planner.java
+++ b/fe/src/main/java/org/apache/impala/planner/Planner.java
@@ -485,7 +485,7 @@ public class Planner {
if (!(fragment.getSink() instanceof JoinBuildSink)) {
// Only adjust parallelism of non-join build fragment.
// Join build fragment will be adjusted later by fragment hosting the join node.
- fragment.traverseEffectiveParallelism(minThreadPerNode, maxThreadPerNode, -1);
+ fragment.traverseEffectiveParallelism(minThreadPerNode, maxThreadPerNode, null);
}
}
@@ -502,7 +502,7 @@ public class Planner {
* been called over the plan fragment list.
*/
private static CoreCount computeBlockingAwareCores(
- List<PlanFragment> postOrderFragments) {
+ List<PlanFragment> postOrderFragments, boolean findUnboundedCount) {
// fragmentCoreState is a mapping between a fragment (through its PlanFragmentId) and
// its CoreCount. The first element of the pair is the CoreCount of subtree rooted at
// that fragment. The second element of the pair is the CoreCount of blocking-child
@@ -513,13 +513,15 @@ public class Planner {
Maps.newHashMap();
for (PlanFragment fragment : postOrderFragments) {
- fragment.computeBlockingAwareCores(fragmentCoreState);
+ fragment.computeBlockingAwareCores(fragmentCoreState, findUnboundedCount);
}
PlanFragment root = postOrderFragments.get(postOrderFragments.size() - 1);
Pair<CoreCount, List<CoreCount>> rootCores = fragmentCoreState.get(root.getId());
- return root.maxCore(rootCores.first, CoreCount.sum(rootCores.second));
+ CoreCount maxCores = root.maxCore(
+ rootCores.first, CoreCount.sum(rootCores.second), findUnboundedCount);
+ return maxCores;
}
/**
@@ -570,7 +572,7 @@ public class Planner {
// Count bounded core count. This is taken from final instance count from previous
// step.
- CoreCount boundedCores = computeBlockingAwareCores(postOrderFragments);
+ CoreCount boundedCores = computeBlockingAwareCores(postOrderFragments, false);
Set<PlanFragmentId> dominantFragmentIds =
new HashSet<>(boundedCores.getUniqueFragmentIds());
int coresRequired = Math.max(1, boundedCores.totalWithoutCoordinator());
@@ -586,6 +588,13 @@ public class Planner {
for (PlanFragment fragment : postOrderFragments) {
if (dominantFragmentIds.contains(fragment.getId())) fragment.markDominant();
}
+
+ // Count unbounded core count. This is based on maximum parallelism of each fragment.
+ CoreCount unboundedCores = computeBlockingAwareCores(postOrderFragments, true);
+ int coresRequiredUnbounded = Math.max(1, unboundedCores.totalWithoutCoordinator());
+ request.setCores_required_unbounded(coresRequiredUnbounded);
+ LOG.info("CoreCountUnbounded=" + unboundedCores
+ + ", coresRequiredUnbounded=" + coresRequiredUnbounded);
}
/**
diff --git a/fe/src/main/java/org/apache/impala/service/BackendConfig.java b/fe/src/main/java/org/apache/impala/service/BackendConfig.java
index c2b57972a..ed5a5fb90 100644
--- a/fe/src/main/java/org/apache/impala/service/BackendConfig.java
+++ b/fe/src/main/java/org/apache/impala/service/BackendConfig.java
@@ -496,4 +496,6 @@ public class BackendConfig {
public boolean isMinimalTopicMode() {
return backendCfg_.catalog_topic_mode.equalsIgnoreCase("minimal");
}
+
+ public double getQueryCpuRootFactor() { return backendCfg_.query_cpu_root_factor; }
}
diff --git a/fe/src/main/java/org/apache/impala/service/Frontend.java b/fe/src/main/java/org/apache/impala/service/Frontend.java
index 815ef6337..cd7363ebb 100644
--- a/fe/src/main/java/org/apache/impala/service/Frontend.java
+++ b/fe/src/main/java/org/apache/impala/service/Frontend.java
@@ -20,6 +20,7 @@ package org.apache.impala.service;
import static org.apache.impala.common.ByteUnits.MEGABYTE;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicates;
import com.google.common.base.Strings;
@@ -262,11 +263,13 @@ public class Frontend {
private static final String EXECUTOR_GROUPS_CONSIDERED = "ExecutorGroupsConsidered";
private static final String CPU_COUNT_DIVISOR = "CpuCountDivisor";
private static final String EFFECTIVE_PARALLELISM = "EffectiveParallelism";
+ private static final String MAX_PARALLELISM = "MaxParallelism";
private static final String VERDICT = "Verdict";
private static final String MEMORY_MAX = "MemoryMax";
private static final String MEMORY_ASK = "MemoryAsk";
private static final String CPU_MAX = "CpuMax";
private static final String CPU_ASK = "CpuAsk";
+ private static final String CPU_ASK_BOUNDED = "CpuAskBounded";
private static final String AVG_ADMISSION_SLOTS_PER_EXECUTOR =
"AvgAdmissionSlotsPerExecutor";
@@ -306,8 +309,12 @@ public class Frontend {
// The processing cores required to execute the query.
// Certain queries such as EXPLAIN do not populate TExecRequest.query_exec_request.
- // Therefore, cores requirement will be set here through setCoresRequired().
- protected int cores_required_ = -1;
+ // Default to 1 if copyTQueryExecRequestFieldsForExplain() is not called.
+ protected int coresRequired_ = 1;
+
+ // An unbounded version of cores_required_.
+ // Default to 1 if copyTQueryExecRequestFieldsForExplain() is not called.
+ protected int coresRequiredUnbounded_ = 1;
// The initial length of content in explain buffer to help return the buffer
// to the initial position prior to another auto-scaling compilation.
@@ -336,11 +343,15 @@ public class Frontend {
public boolean disableAuthorization() { return disableAuthorization_; }
- public long getEstimatedMemoryPerHost() { return estimated_memory_per_host_; }
- public void setEstimatedMemoryPerHost(long x) { estimated_memory_per_host_ = x; }
+ public void copyTQueryExecRequestFieldsForExplain(TQueryExecRequest req) {
+ estimated_memory_per_host_ = req.getPer_host_mem_estimate();
+ coresRequired_ = req.getCores_required();
+ coresRequiredUnbounded_ = req.getCores_required_unbounded();
+ }
- public int getCoresRequired() { return cores_required_; }
- public void setCoresRequired(int x) { cores_required_ = x; }
+ public long getEstimatedMemoryPerHost() { return estimated_memory_per_host_; }
+ public int getCoresRequired() { return coresRequired_; }
+ public int getCoresRequiredUnbounded() { return coresRequiredUnbounded_; }
public int getAvailableCoresPerNode() {
Preconditions.checkState(availableCoresPerNode_ >= 0);
@@ -1949,11 +1960,8 @@ public class Frontend {
planCtx.explainBuf_.append(planner.getExplainString(allFragments, result));
result.setQuery_plan(planCtx.getExplainString());
- // copy estimated memory per host to planCtx for auto-scaling.
- planCtx.compilationState_.setEstimatedMemoryPerHost(
- result.getPer_host_mem_estimate());
-
- planCtx.compilationState_.setCoresRequired(result.getCores_required());
+ // copy estimated memory per host and core requirements to planCtx for auto-scaling.
+ planCtx.compilationState_.copyTQueryExecRequestFieldsForExplain(result);
return result;
}
@@ -2154,13 +2162,14 @@ public class Frontend {
enable_replan
&& (RuntimeEnv.INSTANCE.isTestEnv() || queryOptions.isTest_replan()));
- int num_executor_group_sets = executorGroupSetsToUse.size();
- if (num_executor_group_sets == 0) {
+ int numExecutorGroupSets = executorGroupSetsToUse.size();
+ if (numExecutorGroupSets == 0) {
throw new AnalysisException(
"No suitable executor group sets can be identified and used.");
}
LOG.info("A total of {} executor group sets to be considered for auto-scaling: "
- + executorGroupSetsToUse, num_executor_group_sets);
+ + executorGroupSetsToUse,
+ numExecutorGroupSets);
TExecRequest req = null;
@@ -2168,6 +2177,7 @@ public class Frontend {
planCtx.compilationState_.captureState();
boolean isComputeCost = queryOptions.isCompute_processing_cost();
+ double cpuCountRootFactor = BackendConfig.INSTANCE.getQueryCpuRootFactor();
double cpuCountDivisor = BackendConfig.INSTANCE.getQueryCpuCountDivisor();
if (isComputeCost) {
if (queryOptions.isSetQuery_cpu_count_divisor()) {
@@ -2180,10 +2190,15 @@ public class Frontend {
TExecutorGroupSet group_set = null;
String reason = "Unknown";
int attempt = 0;
+ int firstExecutorGroupTotalCores = expectedTotalCores(executorGroupSetsToUse.get(0));
int lastExecutorGroupTotalCores =
- expectedTotalCores(executorGroupSetsToUse.get(num_executor_group_sets - 1));
+ expectedTotalCores(executorGroupSetsToUse.get(numExecutorGroupSets - 1));
int i = 0;
- while (i < num_executor_group_sets) {
+ while (i < numExecutorGroupSets) {
+ boolean isLastEG = (i == numExecutorGroupSets - 1);
+ boolean skipResourceCheckingAtLastEG = isLastEG
+ && BackendConfig.INSTANCE.isSkipResourceCheckingOnLastExecutorGroupSet();
+
group_set = executorGroupSetsToUse.get(i);
planCtx.compilationState_.setGroupSet(group_set);
if (isComputeCost) {
@@ -2220,7 +2235,7 @@ public class Frontend {
}
// Counters about this group set.
- int available_cores = expectedTotalCores(group_set);
+ int availableCores = expectedTotalCores(group_set);
String profileName = "Executor group " + (i + 1);
if (group_set.isSetExec_group_name_prefix()
&& !group_set.getExec_group_name_prefix().isEmpty()) {
@@ -2232,7 +2247,7 @@ public class Frontend {
LongMath.saturatedMultiply(
expectedNumExecutor(group_set), group_set.getMax_mem_limit())));
if (isComputeCost) {
- addCounter(groupSetProfile, new TCounter(CPU_MAX, TUnit.UNIT, available_cores));
+ addCounter(groupSetProfile, new TCounter(CPU_MAX, TUnit.UNIT, availableCores));
}
// If it is for a single node plan, enable_replan is disabled, or it is not a query
@@ -2258,29 +2273,34 @@ public class Frontend {
}
// Find out the per host memory estimated from two possible sources.
- long per_host_mem_estimate = -1;
- int cores_requirement = -1;
+ long perHostMemEstimate = -1;
+ int cpuAskBounded = -1;
+ int cpuAskUnbounded = -1;
if (req.query_exec_request != null) {
// For non-explain queries
- per_host_mem_estimate = req.query_exec_request.per_host_mem_estimate;
- cores_requirement = req.query_exec_request.getCores_required();
+ perHostMemEstimate = req.query_exec_request.per_host_mem_estimate;
+ cpuAskBounded = req.query_exec_request.getCores_required();
+ cpuAskUnbounded = req.query_exec_request.getCores_required_unbounded();
} else {
// For explain queries
- per_host_mem_estimate = planCtx.compilationState_.getEstimatedMemoryPerHost();
- cores_requirement = planCtx.compilationState_.getCoresRequired();
+ perHostMemEstimate = planCtx.compilationState_.getEstimatedMemoryPerHost();
+ cpuAskBounded = planCtx.compilationState_.getCoresRequired();
+ cpuAskUnbounded = planCtx.compilationState_.getCoresRequiredUnbounded();
}
- Preconditions.checkState(per_host_mem_estimate >= 0);
- boolean memReqSatisfied = per_host_mem_estimate <= group_set.getMax_mem_limit();
+ Preconditions.checkState(perHostMemEstimate >= 0);
+ boolean memReqSatisfied = perHostMemEstimate <= group_set.getMax_mem_limit();
addCounter(groupSetProfile,
new TCounter(MEMORY_ASK, TUnit.BYTES,
LongMath.saturatedMultiply(
- expectedNumExecutor(group_set), per_host_mem_estimate)));
+ expectedNumExecutor(group_set), perHostMemEstimate)));
boolean cpuReqSatisfied = true;
- int scaled_cores_requirement = -1;
+ int scaledCpuAskBounded = -1;
+ int scaledCpuAskUnbounded = -1;
if (isComputeCost) {
- Preconditions.checkState(cores_requirement > 0);
+ Preconditions.checkState(cpuAskBounded > 0);
+ Preconditions.checkState(cpuAskUnbounded > 0);
if (queryOptions.getProcessing_cost_min_threads()
> queryOptions.getMax_fragment_instances_per_node()) {
throw new AnalysisException(
@@ -2291,14 +2311,30 @@ public class Frontend {
+ queryOptions.getMax_fragment_instances_per_node() + ").");
}
- scaled_cores_requirement = (int) Math.min(
- Integer.MAX_VALUE, Math.ceil(cores_requirement / cpuCountDivisor));
- cpuReqSatisfied = scaled_cores_requirement <= available_cores;
+ // Mark parallelism before scaling.
+ addCounter(
+ groupSetProfile, new TCounter(MAX_PARALLELISM, TUnit.UNIT, cpuAskUnbounded));
+ addCounter(groupSetProfile,
+ new TCounter(EFFECTIVE_PARALLELISM, TUnit.UNIT, cpuAskBounded));
+ // Scale down cpuAskUnbounded using non-linear function, but cap it at least
+ // equal to cpuAskBounded at minimum.
+ cpuAskUnbounded = scaleDownCpuSublinear(cpuCountRootFactor,
+ firstExecutorGroupTotalCores, cpuAskBounded, cpuAskUnbounded);
+
+ // Do another scale down, but linearly using QUERY_CPU_COUNT_DIVISOR option.
+ scaledCpuAskBounded = scaleDownCpuLinear(cpuCountDivisor, cpuAskBounded);
+ scaledCpuAskUnbounded = scaleDownCpuLinear(cpuCountDivisor, cpuAskUnbounded);
+
+ // Check if cpu requirement match.
+ Preconditions.checkState(scaledCpuAskBounded <= scaledCpuAskUnbounded);
+ cpuReqSatisfied = scaledCpuAskUnbounded <= availableCores;
+
+ // Mark parallelism after scaling.
addCounter(
- groupSetProfile, new TCounter(CPU_ASK, TUnit.UNIT, scaled_cores_requirement));
+ groupSetProfile, new TCounter(CPU_ASK, TUnit.UNIT, scaledCpuAskUnbounded));
addCounter(groupSetProfile,
- new TCounter(EFFECTIVE_PARALLELISM, TUnit.UNIT, cores_requirement));
+ new TCounter(CPU_ASK_BOUNDED, TUnit.UNIT, scaledCpuAskBounded));
}
boolean matchFound = false;
@@ -2312,16 +2348,18 @@ public class Frontend {
addInfoString(groupSetProfile, VERDICT, reason);
matchFound = true;
} else if (memReqSatisfied && cpuReqSatisfied) {
- reason = "suitable group found (estimated per-host memory="
- + PrintUtils.printBytes(per_host_mem_estimate)
- + ", estimated cpu cores required=" + cores_requirement
- + ", scaled cpu cores=" + scaled_cores_requirement + ")";
+ reason = "suitable group found. "
+ + MoreObjects.toStringHelper("requirement")
+ .add(MEMORY_ASK, PrintUtils.printBytes(perHostMemEstimate))
+ .add(CPU_ASK, scaledCpuAskUnbounded)
+ .add(CPU_ASK_BOUNDED, scaledCpuAskBounded)
+ .add(EFFECTIVE_PARALLELISM, cpuAskBounded)
+ .toString();
addInfoString(groupSetProfile, VERDICT, "Match");
matchFound = true;
}
- if (!matchFound && (i >= num_executor_group_sets - 1)
- && BackendConfig.INSTANCE.isSkipResourceCheckingOnLastExecutorGroupSet()) {
+ if (!matchFound && skipResourceCheckingAtLastEG) {
reason = "no executor group set fit. Admit to last executor group set.";
addInfoString(groupSetProfile, VERDICT, reason);
matchFound = true;
@@ -2334,10 +2372,10 @@ public class Frontend {
setGroupNamePrefix(default_executor_group, clientSetRequestPool, req, group_set);
if (isComputeCost && req.query_exec_request != null
&& queryOptions.slot_count_strategy == TSlotCountStrategy.PLANNER_CPU_ASK) {
- // Use 'cores_requirement' instead of 'scaled_cores_requirement' since the
- // former is derived from the real number of fragment instances.
+ // Use 'cpuAskBounded' because it is the actual total number of fragment
+ // instances that will be distributed.
int avgSlotsUsePerBackend =
- getAvgSlotsUsePerBackend(req, cores_requirement, group_set);
+ getAvgSlotsUsePerBackend(req, cpuAskBounded, group_set);
FrontendProfile.getCurrent().setToCounter(
AVG_ADMISSION_SLOTS_PER_EXECUTOR, TUnit.UNIT, avgSlotsUsePerBackend);
req.query_exec_request.setMax_slot_per_executor(
@@ -2346,19 +2384,21 @@ public class Frontend {
break;
}
+ // At this point, no match is found and planner will step up to the next bigger
+ // executor group set.
List<String> verdicts = Lists.newArrayListWithCapacity(2);
List<String> reasons = Lists.newArrayListWithCapacity(2);
if (!memReqSatisfied) {
String verdict = "not enough per-host memory";
verdicts.add(verdict);
- reasons.add(verdict + " (require=" + per_host_mem_estimate
+ reasons.add(verdict + " (require=" + perHostMemEstimate
+ ", max=" + group_set.getMax_mem_limit() + ")");
}
if (!cpuReqSatisfied) {
String verdict = "not enough cpu cores";
verdicts.add(verdict);
- reasons.add(verdict + " (require=" + scaled_cores_requirement
- + ", max=" + available_cores + ")");
+ reasons.add(verdict + " (require=" + scaledCpuAskUnbounded
+ + ", max=" + availableCores + ")");
}
reason = String.join(", ", reasons);
addInfoString(groupSetProfile, VERDICT, String.join(", ", verdicts));
@@ -2394,12 +2434,26 @@ public class Frontend {
}
private static int getAvgSlotsUsePerBackend(
- TExecRequest req, int cores_requirement, TExecutorGroupSet group_set) {
- int numExecutors = expectedNumExecutor(group_set);
- Preconditions.checkState(cores_requirement > 0);
+ TExecRequest req, int cpuAskBounded, TExecutorGroupSet groupSet) {
+ int numExecutors = expectedNumExecutor(groupSet);
+ Preconditions.checkState(cpuAskBounded > 0);
Preconditions.checkState(numExecutors > 0);
- int idealSlot = (int) Math.ceil((double) cores_requirement / numExecutors);
- return Math.max(1, Math.min(idealSlot, group_set.getNum_cores_per_executor()));
+ int idealSlot = (int) Math.ceil((double) cpuAskBounded / numExecutors);
+ return Math.max(1, Math.min(idealSlot, groupSet.getNum_cores_per_executor()));
+ }
+
+ private static int scaleDownCpuSublinear(double cpuCountRootFactor,
+ int smallestEGTotalCores, int cpuAskBounded, int cpuAskUnbounded) {
+ // Find Nth root of cpuAskUnbounded with N = cpuCountRootFactor.
+ double exponent = 1.0 / cpuCountRootFactor;
+ double nthRootSmallestEGTotalCores = Math.pow(smallestEGTotalCores, exponent);
+ double scaledCpuAskUnbounded = Math.pow(cpuAskUnbounded, exponent)
+ / nthRootSmallestEGTotalCores * smallestEGTotalCores;
+ return Math.max(cpuAskBounded, (int) Math.round(scaledCpuAskUnbounded));
+ }
+
+ private static int scaleDownCpuLinear(double cpuCountDivisor, int cpuAsk) {
+ return Math.min(Integer.MAX_VALUE, (int) Math.ceil(cpuAsk / cpuCountDivisor));
}
private static void setGroupNamePrefix(boolean default_executor_group,
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q04.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q04.test
index 11567befd..39358bc85 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q04.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q04.test
@@ -594,7 +594,7 @@ max-parallelism=55910 segment-costs=[559077106064, 9] cpu-comparison-result=1260
|
|--F38:PLAN FRAGMENT [HASH(customer_id)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=601.83MB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[845739660] cpu-comparison-result=220 [max(120 (self) vs 220 (sum children))]
+| | max-parallelism=55910 segment-costs=[845739660] cpu-comparison-result=220 [max(120 (self) vs 220 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: customer_id
@@ -646,7 +646,7 @@ max-parallelism=55910 segment-costs=[559077106064, 9] cpu-comparison-result=1260
| |
| |--F39:PLAN FRAGMENT [HASH(cs_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=820 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: c_customer_sk
@@ -800,7 +800,7 @@ max-parallelism=120 segment-costs=[14871350016, 183541153664] cpu-comparison-res
| |
| |--F42:PLAN FRAGMENT [HASH(ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=54.45MB mem-reservation=34.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=420 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=04 plan-id=05 cohort-id=03
| | | build expressions: c_customer_sk
@@ -948,7 +948,7 @@ max-parallelism=120 segment-costs=[14871350016, 183541153664] cpu-comparison-res
| |
| |--F45:PLAN FRAGMENT [HASH(ss_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=1650 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=07 plan-id=08 cohort-id=04
| | | build expressions: c_customer_sk
@@ -982,7 +982,7 @@ max-parallelism=120 segment-costs=[14871350016, 183541153664] cpu-comparison-res
| F18:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| Per-Instance Resources: mem-estimate=34.75MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[1895955600]
+| max-parallelism=190 segment-costs=[1895955600]
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash-table-id=08
| | hash predicates: ss_sold_date_sk = d_date_sk
@@ -1096,7 +1096,7 @@ max-parallelism=120 segment-costs=[14871350016, 183541153664] cpu-comparison-res
| |
| |--F48:PLAN FRAGMENT [HASH(cs_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=820 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=10 plan-id=11 cohort-id=05
| | | build expressions: c_customer_sk
@@ -1244,7 +1244,7 @@ max-parallelism=120 segment-costs=[14871350016, 183541153664] cpu-comparison-res
| |
| |--F51:PLAN FRAGMENT [HASH(ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=54.45MB mem-reservation=34.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=420 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=13 plan-id=14 cohort-id=06
| | | build expressions: c_customer_sk
@@ -1366,7 +1366,7 @@ max-parallelism=1650 segment-costs=[16432951216, 274244352] cpu-comparison-resul
|
|--F53:PLAN FRAGMENT [HASH(ss_customer_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | max-parallelism=120 segment-costs=[34603898]
+| | max-parallelism=1650 segment-costs=[34603898]
| JOIN BUILD
| | join-table-id=15 plan-id=16 cohort-id=01
| | build expressions: c_customer_sk
@@ -1400,7 +1400,7 @@ max-parallelism=1650 segment-costs=[16432951216, 274244352] cpu-comparison-resul
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
Per-Instance Resources: mem-estimate=34.75MB mem-reservation=8.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[1895955600]
+max-parallelism=190 segment-costs=[1895955600]
11:HASH JOIN [INNER JOIN, BROADCAST]
| hash-table-id=16
| hash predicates: ss_sold_date_sk = d_date_sk
@@ -1487,7 +1487,7 @@ max-parallelism=55910 segment-costs=[559077106064, 9] cpu-comparison-result=1260
|
|--F38:PLAN FRAGMENT [HASH(customer_id)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=601.83MB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[845739660] cpu-comparison-result=220 [max(120 (self) vs 220 (sum children))]
+| | max-parallelism=55910 segment-costs=[845739660] cpu-comparison-result=220 [max(120 (self) vs 220 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: customer_id
@@ -1539,7 +1539,7 @@ max-parallelism=55910 segment-costs=[559077106064, 9] cpu-comparison-result=1260
| |
| |--F39:PLAN FRAGMENT [HASH(cs_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=820 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: c_customer_sk
@@ -1693,7 +1693,7 @@ max-parallelism=120 segment-costs=[14871350016, 183541153664] cpu-comparison-res
| |
| |--F42:PLAN FRAGMENT [HASH(ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=54.45MB mem-reservation=34.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=420 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=04 plan-id=05 cohort-id=03
| | | build expressions: c_customer_sk
@@ -1841,7 +1841,7 @@ max-parallelism=120 segment-costs=[14871350016, 183541153664] cpu-comparison-res
| |
| |--F45:PLAN FRAGMENT [HASH(ss_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=1650 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=07 plan-id=08 cohort-id=04
| | | build expressions: c_customer_sk
@@ -1875,7 +1875,7 @@ max-parallelism=120 segment-costs=[14871350016, 183541153664] cpu-comparison-res
| F18:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| Per-Instance Resources: mem-estimate=34.75MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[1895955600]
+| max-parallelism=190 segment-costs=[1895955600]
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash-table-id=08
| | hash predicates: ss_sold_date_sk = d_date_sk
@@ -1989,7 +1989,7 @@ max-parallelism=120 segment-costs=[14871350016, 183541153664] cpu-comparison-res
| |
| |--F48:PLAN FRAGMENT [HASH(cs_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=820 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=10 plan-id=11 cohort-id=05
| | | build expressions: c_customer_sk
@@ -2137,7 +2137,7 @@ max-parallelism=120 segment-costs=[14871350016, 183541153664] cpu-comparison-res
| |
| |--F51:PLAN FRAGMENT [HASH(ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=54.45MB mem-reservation=34.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=420 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=13 plan-id=14 cohort-id=06
| | | build expressions: c_customer_sk
@@ -2259,7 +2259,7 @@ max-parallelism=1650 segment-costs=[16432951216, 274244352] cpu-comparison-resul
|
|--F53:PLAN FRAGMENT [HASH(ss_customer_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | max-parallelism=120 segment-costs=[34603898]
+| | max-parallelism=1650 segment-costs=[34603898]
| JOIN BUILD
| | join-table-id=15 plan-id=16 cohort-id=01
| | build expressions: c_customer_sk
@@ -2293,7 +2293,7 @@ max-parallelism=1650 segment-costs=[16432951216, 274244352] cpu-comparison-resul
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
Per-Instance Resources: mem-estimate=34.75MB mem-reservation=8.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[1895955600]
+max-parallelism=190 segment-costs=[1895955600]
11:HASH JOIN [INNER JOIN, BROADCAST]
| hash-table-id=16
| hash predicates: ss_sold_date_sk = d_date_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q06.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q06.test
index 1a77186b6..e5685d659 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q06.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q06.test
@@ -233,7 +233,7 @@ max-parallelism=10 segment-costs=[104, 10, 1] cpu-comparison-result=120 [max(10
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=18.00MB mem-reservation=18.00MB thread-reservation=0 runtime-filters-memory=18.00MB
Per-Instance Resources: mem-estimate=27.02MB mem-reservation=10.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[39849780476, 2] cpu-comparison-result=120 [max(120 (self) vs 85 (sum children))]
+max-parallelism=1824 segment-costs=[39849780476, 2] cpu-comparison-result=120 [max(120 (self) vs 85 (sum children))]
16:AGGREGATE [STREAMING]
| output: count(*)
| group by: a.ca_state
@@ -571,7 +571,7 @@ max-parallelism=10 segment-costs=[104, 10, 1] cpu-comparison-result=120 [max(10
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=18.00MB mem-reservation=18.00MB thread-reservation=0 runtime-filters-memory=18.00MB
Per-Instance Resources: mem-estimate=27.02MB mem-reservation=10.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[39849780476, 2] cpu-comparison-result=120 [max(120 (self) vs 85 (sum children))]
+max-parallelism=1824 segment-costs=[39849780476, 2] cpu-comparison-result=120 [max(120 (self) vs 85 (sum children))]
16:AGGREGATE [STREAMING]
| output: count(*)
| group by: a.ca_state
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q08.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q08.test
index 882b3d9bb..cbd0e3076 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q08.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q08.test
@@ -294,7 +294,7 @@ max-parallelism=10 segment-costs=[21, 10, 1] cpu-comparison-result=120 [max(10 (
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=27.40MB mem-reservation=10.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[4424904838, 1] cpu-comparison-result=120 [max(120 (self) vs 52 (sum children))]
+max-parallelism=187 segment-costs=[4424904838, 1] cpu-comparison-result=120 [max(120 (self) vs 52 (sum children))]
13:AGGREGATE [STREAMING]
| output: sum(ss_net_profit)
| group by: s_store_name
@@ -582,7 +582,7 @@ max-parallelism=10 segment-costs=[21, 10, 1] cpu-comparison-result=120 [max(10 (
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=27.40MB mem-reservation=10.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[4424904838, 1] cpu-comparison-result=120 [max(120 (self) vs 52 (sum children))]
+max-parallelism=187 segment-costs=[4424904838, 1] cpu-comparison-result=120 [max(120 (self) vs 52 (sum children))]
13:AGGREGATE [STREAMING]
| output: sum(ss_net_profit)
| group by: s_store_name
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q09.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q09.test
index 794d17ae2..6a73c0e94 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q09.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q09.test
@@ -491,7 +491,7 @@ PLAN-ROOT SINK
| |
| F29:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 30:AGGREGATE
| | output: avg(ss_net_profit)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -546,7 +546,7 @@ PLAN-ROOT SINK
| |
| F27:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 28:AGGREGATE
| | output: avg(ss_ext_discount_amt)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -601,7 +601,7 @@ PLAN-ROOT SINK
| |
| F25:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=4.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18268815040, 1]
+| max-parallelism=1824 segment-costs=[18268815040, 1]
| 26:AGGREGATE
| | output: count(*)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -656,7 +656,7 @@ PLAN-ROOT SINK
| |
| F23:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 24:AGGREGATE
| | output: avg(ss_net_profit)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -711,7 +711,7 @@ PLAN-ROOT SINK
| |
| F21:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 22:AGGREGATE
| | output: avg(ss_ext_discount_amt)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -766,7 +766,7 @@ PLAN-ROOT SINK
| |
| F19:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=4.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18268815040, 1]
+| max-parallelism=1824 segment-costs=[18268815040, 1]
| 20:AGGREGATE
| | output: count(*)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -821,7 +821,7 @@ PLAN-ROOT SINK
| |
| F17:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 18:AGGREGATE
| | output: avg(ss_net_profit)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -876,7 +876,7 @@ PLAN-ROOT SINK
| |
| F15:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 16:AGGREGATE
| | output: avg(ss_ext_discount_amt)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -931,7 +931,7 @@ PLAN-ROOT SINK
| |
| F13:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=4.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18268815040, 1]
+| max-parallelism=1824 segment-costs=[18268815040, 1]
| 14:AGGREGATE
| | output: count(*)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -986,7 +986,7 @@ PLAN-ROOT SINK
| |
| F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 12:AGGREGATE
| | output: avg(ss_net_profit)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1041,7 +1041,7 @@ PLAN-ROOT SINK
| |
| F09:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 10:AGGREGATE
| | output: avg(ss_ext_discount_amt)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1096,7 +1096,7 @@ PLAN-ROOT SINK
| |
| F07:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=4.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18268815040, 1]
+| max-parallelism=1824 segment-costs=[18268815040, 1]
| 08:AGGREGATE
| | output: count(*)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1151,7 +1151,7 @@ PLAN-ROOT SINK
| |
| F05:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 06:AGGREGATE
| | output: avg(ss_net_profit)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1206,7 +1206,7 @@ PLAN-ROOT SINK
| |
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 04:AGGREGATE
| | output: avg(ss_ext_discount_amt)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1274,7 +1274,7 @@ PLAN-ROOT SINK
|
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Instance Resources: mem-estimate=16.02MB mem-reservation=4.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[18268815040, 1]
+max-parallelism=1824 segment-costs=[18268815040, 1]
02:AGGREGATE
| output: count(*)
| mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1338,7 +1338,7 @@ PLAN-ROOT SINK
| |
| F29:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 30:AGGREGATE
| | output: avg(ss_net_profit)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1393,7 +1393,7 @@ PLAN-ROOT SINK
| |
| F27:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 28:AGGREGATE
| | output: avg(ss_ext_discount_amt)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1448,7 +1448,7 @@ PLAN-ROOT SINK
| |
| F25:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=4.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18268815040, 1]
+| max-parallelism=1824 segment-costs=[18268815040, 1]
| 26:AGGREGATE
| | output: count(*)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1503,7 +1503,7 @@ PLAN-ROOT SINK
| |
| F23:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 24:AGGREGATE
| | output: avg(ss_net_profit)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1558,7 +1558,7 @@ PLAN-ROOT SINK
| |
| F21:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 22:AGGREGATE
| | output: avg(ss_ext_discount_amt)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1613,7 +1613,7 @@ PLAN-ROOT SINK
| |
| F19:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=4.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18268815040, 1]
+| max-parallelism=1824 segment-costs=[18268815040, 1]
| 20:AGGREGATE
| | output: count(*)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1668,7 +1668,7 @@ PLAN-ROOT SINK
| |
| F17:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 18:AGGREGATE
| | output: avg(ss_net_profit)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1723,7 +1723,7 @@ PLAN-ROOT SINK
| |
| F15:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 16:AGGREGATE
| | output: avg(ss_ext_discount_amt)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1778,7 +1778,7 @@ PLAN-ROOT SINK
| |
| F13:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=4.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18268815040, 1]
+| max-parallelism=1824 segment-costs=[18268815040, 1]
| 14:AGGREGATE
| | output: count(*)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1833,7 +1833,7 @@ PLAN-ROOT SINK
| |
| F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 12:AGGREGATE
| | output: avg(ss_net_profit)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1888,7 +1888,7 @@ PLAN-ROOT SINK
| |
| F09:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 10:AGGREGATE
| | output: avg(ss_ext_discount_amt)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1943,7 +1943,7 @@ PLAN-ROOT SINK
| |
| F07:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=4.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18268815040, 1]
+| max-parallelism=1824 segment-costs=[18268815040, 1]
| 08:AGGREGATE
| | output: count(*)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -1998,7 +1998,7 @@ PLAN-ROOT SINK
| |
| F05:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 06:AGGREGATE
| | output: avg(ss_net_profit)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -2053,7 +2053,7 @@ PLAN-ROOT SINK
| |
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[18302564032, 1]
+| max-parallelism=1824 segment-costs=[18302564032, 1]
| 04:AGGREGATE
| | output: avg(ss_ext_discount_amt)
| | mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -2121,7 +2121,7 @@ PLAN-ROOT SINK
|
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Instance Resources: mem-estimate=16.02MB mem-reservation=4.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[18268815040, 1]
+max-parallelism=1824 segment-costs=[18268815040, 1]
02:AGGREGATE
| output: count(*)
| mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q11.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q11.test
index 410085ee6..c1f97330f 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q11.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q11.test
@@ -466,7 +466,7 @@ max-parallelism=120 segment-costs=[14871350016, 31919116560, 8] cpu-comparison-r
| |
| |--F26:PLAN FRAGMENT [HASH(ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=420 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: c_customer_sk
@@ -613,7 +613,7 @@ max-parallelism=120 segment-costs=[14871350016, 31919116560, 8] cpu-comparison-r
| |
| |--F29:PLAN FRAGMENT [HASH(ss_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=1650 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=04 plan-id=05 cohort-id=03
| | | build expressions: c_customer_sk
@@ -647,7 +647,7 @@ max-parallelism=120 segment-costs=[14871350016, 31919116560, 8] cpu-comparison-r
| F12:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| Per-Instance Resources: mem-estimate=31.00MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[1868348900]
+| max-parallelism=190 segment-costs=[1868348900]
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash-table-id=05
| | hash predicates: ss_sold_date_sk = d_date_sk
@@ -761,7 +761,7 @@ max-parallelism=120 segment-costs=[14871350016, 31919116560, 8] cpu-comparison-r
| |
| |--F32:PLAN FRAGMENT [HASH(ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=420 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=07 plan-id=08 cohort-id=04
| | | build expressions: c_customer_sk
@@ -884,7 +884,7 @@ max-parallelism=1650 segment-costs=[16419147864, 274244352] cpu-comparison-resul
|
|--F34:PLAN FRAGMENT [HASH(ss_customer_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | max-parallelism=120 segment-costs=[34603898]
+| | max-parallelism=1650 segment-costs=[34603898]
| JOIN BUILD
| | join-table-id=09 plan-id=10 cohort-id=01
| | build expressions: c_customer_sk
@@ -919,7 +919,7 @@ max-parallelism=1650 segment-costs=[16419147864, 274244352] cpu-comparison-resul
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
Per-Instance Resources: mem-estimate=31.00MB mem-reservation=8.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[1868348900]
+max-parallelism=190 segment-costs=[1868348900]
11:HASH JOIN [INNER JOIN, BROADCAST]
| hash-table-id=10
| hash predicates: ss_sold_date_sk = d_date_sk
@@ -1058,7 +1058,7 @@ max-parallelism=120 segment-costs=[14871350016, 31919116560, 8] cpu-comparison-r
| |
| |--F26:PLAN FRAGMENT [HASH(ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=420 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: c_customer_sk
@@ -1205,7 +1205,7 @@ max-parallelism=120 segment-costs=[14871350016, 31919116560, 8] cpu-comparison-r
| |
| |--F29:PLAN FRAGMENT [HASH(ss_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=1650 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=04 plan-id=05 cohort-id=03
| | | build expressions: c_customer_sk
@@ -1239,7 +1239,7 @@ max-parallelism=120 segment-costs=[14871350016, 31919116560, 8] cpu-comparison-r
| F12:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| Per-Instance Resources: mem-estimate=31.00MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[1868348900]
+| max-parallelism=190 segment-costs=[1868348900]
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash-table-id=05
| | hash predicates: ss_sold_date_sk = d_date_sk
@@ -1353,7 +1353,7 @@ max-parallelism=120 segment-costs=[14871350016, 31919116560, 8] cpu-comparison-r
| |
| |--F32:PLAN FRAGMENT [HASH(ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[34603898]
+| | | max-parallelism=420 segment-costs=[34603898]
| | JOIN BUILD
| | | join-table-id=07 plan-id=08 cohort-id=04
| | | build expressions: c_customer_sk
@@ -1476,7 +1476,7 @@ max-parallelism=1650 segment-costs=[16419147864, 274244352] cpu-comparison-resul
|
|--F34:PLAN FRAGMENT [HASH(ss_customer_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=70.45MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | max-parallelism=120 segment-costs=[34603898]
+| | max-parallelism=1650 segment-costs=[34603898]
| JOIN BUILD
| | join-table-id=09 plan-id=10 cohort-id=01
| | build expressions: c_customer_sk
@@ -1511,7 +1511,7 @@ max-parallelism=1650 segment-costs=[16419147864, 274244352] cpu-comparison-resul
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
Per-Instance Resources: mem-estimate=31.00MB mem-reservation=8.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[1868348900]
+max-parallelism=190 segment-costs=[1868348900]
11:HASH JOIN [INNER JOIN, BROADCAST]
| hash-table-id=10
| hash predicates: ss_sold_date_sk = d_date_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q12.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q12.test
index daa7854fa..a9c1d0fad 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q12.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q12.test
@@ -184,7 +184,7 @@ max-parallelism=410 segment-costs=[4013946784, 127947424] cpu-comparison-result=
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=641.56MB mem-reservation=34.12MB thread-reservation=1
-max-parallelism=120 segment-costs=[5297844608, 127947424] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+max-parallelism=530 segment-costs=[5297844608, 127947424] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
05:AGGREGATE [STREAMING]
| output: sum(ws_ext_sales_price)
| group by: i_item_id, i_item_desc, i_category, i_class, i_current_price
@@ -341,7 +341,7 @@ max-parallelism=410 segment-costs=[4013946784, 127947424] cpu-comparison-result=
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=641.56MB mem-reservation=34.12MB thread-reservation=1
-max-parallelism=120 segment-costs=[5297844608, 127947424] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+max-parallelism=530 segment-costs=[5297844608, 127947424] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
05:AGGREGATE [STREAMING]
| output: sum(ws_ext_sales_price)
| group by: i_item_id, i_item_desc, i_category, i_class, i_current_price
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q13.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q13.test
index f140f61c8..4a9ab8a26 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q13.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q13.test
@@ -207,7 +207,7 @@ PLAN-ROOT SINK
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=5.00MB mem-reservation=5.00MB thread-reservation=0 runtime-filters-memory=5.00MB
Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[28623279619, 1] cpu-comparison-result=120 [max(120 (self) vs 73 (sum children))]
+max-parallelism=374 segment-costs=[28623279619, 1] cpu-comparison-result=120 [max(120 (self) vs 73 (sum children))]
11:AGGREGATE
| output: avg(CAST(ss_quantity AS BIGINT)), avg(ss_ext_sales_price), avg(ss_ext_wholesale_cost), sum(ss_ext_wholesale_cost)
| mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -439,7 +439,7 @@ PLAN-ROOT SINK
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=5.00MB mem-reservation=5.00MB thread-reservation=0 runtime-filters-memory=5.00MB
Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[28623279619, 1] cpu-comparison-result=120 [max(120 (self) vs 73 (sum children))]
+max-parallelism=374 segment-costs=[28623279619, 1] cpu-comparison-result=120 [max(120 (self) vs 73 (sum children))]
11:AGGREGATE
| output: avg(CAST(ss_quantity AS BIGINT)), avg(ss_ext_sales_price), avg(ss_ext_wholesale_cost), sum(ss_ext_wholesale_cost)
| mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q14a.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q14a.test
index 4535969f0..262915392 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q14a.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q14a.test
@@ -1706,7 +1706,7 @@ max-parallelism=109 segment-costs=[751425, 751425, 751425, 21473280, 125658] cpu
| | | |
| | | F63:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=5.12MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | | max-parallelism=1100 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | | 107:AGGREGATE [STREAMING]
| | | | group by: iws.i_brand_id, iws.i_class_id, iws.i_category_id
| | | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -1833,7 +1833,7 @@ max-parallelism=109 segment-costs=[751425, 751425, 751425, 21473280, 125658] cpu
| | | |
| | | F59:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=6.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | | max-parallelism=1831 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | | 105:AGGREGATE [STREAMING]
| | | | group by: ics.i_brand_id, ics.i_class_id, ics.i_category_id
| | | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -1938,7 +1938,7 @@ max-parallelism=109 segment-costs=[751425, 751425, 751425, 21473280, 125658] cpu
| | F55:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=9.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1824 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 94:AGGREGATE [STREAMING]
| | | group by: iss.i_brand_id, iss.i_class_id, iss.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -2446,7 +2446,7 @@ max-parallelism=109 segment-costs=[751425, 751425, 751425, 21473280, 125658] cpu
| | | |
| | | F37:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=5.12MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | | max-parallelism=1100 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | | 65:AGGREGATE [STREAMING]
| | | | group by: iws.i_brand_id, iws.i_class_id, iws.i_category_id
| | | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -2573,7 +2573,7 @@ max-parallelism=109 segment-costs=[751425, 751425, 751425, 21473280, 125658] cpu
| | | |
| | | F33:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=6.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | | max-parallelism=1831 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | | 63:AGGREGATE [STREAMING]
| | | | group by: ics.i_brand_id, ics.i_class_id, ics.i_category_id
| | | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -2678,7 +2678,7 @@ max-parallelism=109 segment-costs=[751425, 751425, 751425, 21473280, 125658] cpu
| | F29:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=9.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1824 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 52:AGGREGATE [STREAMING]
| | | group by: iss.i_brand_id, iss.i_class_id, iss.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -3186,7 +3186,7 @@ max-parallelism=109 segment-costs=[4103232833, 5825] cpu-comparison-result=399 [
| | |
| | F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=5.12MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1100 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 23:AGGREGATE [STREAMING]
| | | group by: iws.i_brand_id, iws.i_class_id, iws.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -3314,7 +3314,7 @@ max-parallelism=109 segment-costs=[4103232833, 5825] cpu-comparison-result=399 [
| | F07:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=6.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1831 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 21:AGGREGATE [STREAMING]
| | | group by: ics.i_brand_id, ics.i_class_id, ics.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -3419,7 +3419,7 @@ max-parallelism=109 segment-costs=[4103232833, 5825] cpu-comparison-result=399 [
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=26.62MB mem-reservation=9.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| max-parallelism=1824 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| 10:AGGREGATE [STREAMING]
| | group by: iss.i_brand_id, iss.i_class_id, iss.i_category_id
| | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -4012,7 +4012,7 @@ max-parallelism=109 segment-costs=[751425, 751425, 751425, 21473280, 125658] cpu
| | | |
| | | F63:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=5.12MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | | max-parallelism=1100 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | | 107:AGGREGATE [STREAMING]
| | | | group by: iws.i_brand_id, iws.i_class_id, iws.i_category_id
| | | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -4139,7 +4139,7 @@ max-parallelism=109 segment-costs=[751425, 751425, 751425, 21473280, 125658] cpu
| | | |
| | | F59:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=6.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | | max-parallelism=1831 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | | 105:AGGREGATE [STREAMING]
| | | | group by: ics.i_brand_id, ics.i_class_id, ics.i_category_id
| | | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -4244,7 +4244,7 @@ max-parallelism=109 segment-costs=[751425, 751425, 751425, 21473280, 125658] cpu
| | F55:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=9.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1824 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 94:AGGREGATE [STREAMING]
| | | group by: iss.i_brand_id, iss.i_class_id, iss.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -4752,7 +4752,7 @@ max-parallelism=109 segment-costs=[751425, 751425, 751425, 21473280, 125658] cpu
| | | |
| | | F37:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=5.12MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | | max-parallelism=1100 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | | 65:AGGREGATE [STREAMING]
| | | | group by: iws.i_brand_id, iws.i_class_id, iws.i_category_id
| | | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -4879,7 +4879,7 @@ max-parallelism=109 segment-costs=[751425, 751425, 751425, 21473280, 125658] cpu
| | | |
| | | F33:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=6.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | | max-parallelism=1831 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | | 63:AGGREGATE [STREAMING]
| | | | group by: ics.i_brand_id, ics.i_class_id, ics.i_category_id
| | | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -4984,7 +4984,7 @@ max-parallelism=109 segment-costs=[751425, 751425, 751425, 21473280, 125658] cpu
| | F29:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=9.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1824 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 52:AGGREGATE [STREAMING]
| | | group by: iss.i_brand_id, iss.i_class_id, iss.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -5492,7 +5492,7 @@ max-parallelism=109 segment-costs=[4103232833, 5825] cpu-comparison-result=399 [
| | |
| | F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=5.12MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1100 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 23:AGGREGATE [STREAMING]
| | | group by: iws.i_brand_id, iws.i_class_id, iws.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -5620,7 +5620,7 @@ max-parallelism=109 segment-costs=[4103232833, 5825] cpu-comparison-result=399 [
| | F07:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=6.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1831 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 21:AGGREGATE [STREAMING]
| | | group by: ics.i_brand_id, ics.i_class_id, ics.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -5725,7 +5725,7 @@ max-parallelism=109 segment-costs=[4103232833, 5825] cpu-comparison-result=399 [
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=26.62MB mem-reservation=9.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| max-parallelism=1824 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| 10:AGGREGATE [STREAMING]
| | group by: iss.i_brand_id, iss.i_class_id, iss.i_category_id
| | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q14b.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q14b.test
index e7cf39c96..81e284c48 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q14b.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q14b.test
@@ -1189,7 +1189,7 @@ max-parallelism=10 segment-costs=[751425, 447760, 10] cpu-comparison-result=1058
| F28:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
| Per-Instance Resources: mem-estimate=27.56MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[34768408276, 5825] cpu-comparison-result=409 [max(120 (self) vs 409 (sum children))]
+| max-parallelism=1824 segment-costs=[34768408276, 5825] cpu-comparison-result=409 [max(120 (self) vs 409 (sum children))]
| 77:AGGREGATE [STREAMING]
| | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_list_price), count(*)
| | group by: i_brand_id, i_class_id, i_category_id
@@ -1365,7 +1365,7 @@ max-parallelism=10 segment-costs=[751425, 447760, 10] cpu-comparison-result=1058
| | | |
| | | F39:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=5.12MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | | max-parallelism=1100 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | | 67:AGGREGATE [STREAMING]
| | | | group by: iws.i_brand_id, iws.i_class_id, iws.i_category_id
| | | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -1493,7 +1493,7 @@ max-parallelism=10 segment-costs=[751425, 447760, 10] cpu-comparison-result=1058
| | | F35:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=6.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | | max-parallelism=1831 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | | 65:AGGREGATE [STREAMING]
| | | | group by: ics.i_brand_id, ics.i_class_id, ics.i_category_id
| | | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -1598,7 +1598,7 @@ max-parallelism=10 segment-costs=[751425, 447760, 10] cpu-comparison-result=1058
| | F31:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=9.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1824 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 54:AGGREGATE [STREAMING]
| | | group by: iss.i_brand_id, iss.i_class_id, iss.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -1981,7 +1981,7 @@ max-parallelism=10 segment-costs=[751425, 447760, 10] cpu-comparison-result=1058
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=27.56MB mem-reservation=10.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[34768408276, 5825] cpu-comparison-result=409 [max(120 (self) vs 409 (sum children))]
+max-parallelism=1824 segment-costs=[34768408276, 5825] cpu-comparison-result=409 [max(120 (self) vs 409 (sum children))]
32:AGGREGATE [STREAMING]
| output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_list_price), count(*)
| group by: i_brand_id, i_class_id, i_category_id
@@ -2157,7 +2157,7 @@ max-parallelism=120 segment-costs=[34768408276, 5825] cpu-comparison-result=409
| | |
| | F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=5.12MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1100 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 22:AGGREGATE [STREAMING]
| | | group by: iws.i_brand_id, iws.i_class_id, iws.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -2285,7 +2285,7 @@ max-parallelism=120 segment-costs=[34768408276, 5825] cpu-comparison-result=409
| | F07:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=6.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1831 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 20:AGGREGATE [STREAMING]
| | | group by: ics.i_brand_id, ics.i_class_id, ics.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -2390,7 +2390,7 @@ max-parallelism=120 segment-costs=[34768408276, 5825] cpu-comparison-result=409
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=26.62MB mem-reservation=9.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| max-parallelism=1824 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| 09:AGGREGATE [STREAMING]
| | group by: iss.i_brand_id, iss.i_class_id, iss.i_category_id
| | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -2815,7 +2815,7 @@ max-parallelism=10 segment-costs=[751425, 447760, 10] cpu-comparison-result=1058
| F28:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
| Per-Instance Resources: mem-estimate=27.56MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[34768408276, 5825] cpu-comparison-result=409 [max(120 (self) vs 409 (sum children))]
+| max-parallelism=1824 segment-costs=[34768408276, 5825] cpu-comparison-result=409 [max(120 (self) vs 409 (sum children))]
| 77:AGGREGATE [STREAMING]
| | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_list_price), count(*)
| | group by: i_brand_id, i_class_id, i_category_id
@@ -2991,7 +2991,7 @@ max-parallelism=10 segment-costs=[751425, 447760, 10] cpu-comparison-result=1058
| | | |
| | | F39:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=5.12MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | | max-parallelism=1100 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | | 67:AGGREGATE [STREAMING]
| | | | group by: iws.i_brand_id, iws.i_class_id, iws.i_category_id
| | | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -3119,7 +3119,7 @@ max-parallelism=10 segment-costs=[751425, 447760, 10] cpu-comparison-result=1058
| | | F35:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=6.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | | max-parallelism=1831 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | | 65:AGGREGATE [STREAMING]
| | | | group by: ics.i_brand_id, ics.i_class_id, ics.i_category_id
| | | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -3224,7 +3224,7 @@ max-parallelism=10 segment-costs=[751425, 447760, 10] cpu-comparison-result=1058
| | F31:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=9.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1824 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 54:AGGREGATE [STREAMING]
| | | group by: iss.i_brand_id, iss.i_class_id, iss.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -3607,7 +3607,7 @@ max-parallelism=10 segment-costs=[751425, 447760, 10] cpu-comparison-result=1058
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=27.56MB mem-reservation=10.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[34768408276, 5825] cpu-comparison-result=409 [max(120 (self) vs 409 (sum children))]
+max-parallelism=1824 segment-costs=[34768408276, 5825] cpu-comparison-result=409 [max(120 (self) vs 409 (sum children))]
32:AGGREGATE [STREAMING]
| output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_list_price), count(*)
| group by: i_brand_id, i_class_id, i_category_id
@@ -3783,7 +3783,7 @@ max-parallelism=120 segment-costs=[34768408276, 5825] cpu-comparison-result=409
| | |
| | F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=5.12MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1100 segment-costs=[10902516992, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 22:AGGREGATE [STREAMING]
| | | group by: iws.i_brand_id, iws.i_class_id, iws.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -3911,7 +3911,7 @@ max-parallelism=120 segment-costs=[34768408276, 5825] cpu-comparison-result=409
| | F07:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=6.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1831 segment-costs=[21714896768, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 20:AGGREGATE [STREAMING]
| | | group by: ics.i_brand_id, ics.i_class_id, ics.i_category_id
| | | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
@@ -4016,7 +4016,7 @@ max-parallelism=120 segment-costs=[34768408276, 5825] cpu-comparison-result=409
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=26.62MB mem-reservation=9.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| max-parallelism=1824 segment-costs=[43336785888, 2330] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| 09:AGGREGATE [STREAMING]
| | group by: iss.i_brand_id, iss.i_class_id, iss.i_category_id
| | mem-estimate=10.00MB mem-reservation=5.00MB spill-buffer=256.00KB thread-reservation=0
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q15.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q15.test
index 33483d980..089718eba 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q15.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q15.test
@@ -153,7 +153,7 @@ max-parallelism=10 segment-costs=[20710, 100, 4] cpu-comparison-result=120 [max(
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
Per-Instance Resources: mem-estimate=27.45MB mem-reservation=3.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[2100750182, 368] cpu-comparison-result=120 [max(120 (self) vs 51 (sum children))]
+max-parallelism=187 segment-costs=[2100750182, 368] cpu-comparison-result=120 [max(120 (self) vs 51 (sum children))]
07:AGGREGATE [STREAMING]
| output: sum(cs_sales_price)
| group by: ca_zip
@@ -342,7 +342,7 @@ max-parallelism=130 segment-costs=[1225867312, 368] cpu-comparison-result=220 [m
|
|--F07:PLAN FRAGMENT [HASH(c_current_addr_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=26.88MB mem-reservation=16.50MB thread-reservation=1 runtime-filters-memory=8.00MB
-| | max-parallelism=120 segment-costs=[15571290]
+| | max-parallelism=130 segment-costs=[15571290]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: ca_address_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q17.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q17.test
index 52fc9ce0f..fb1045b9f 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q17.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q17.test
@@ -348,7 +348,7 @@ max-parallelism=150 segment-costs=[1420576432, 1368504] cpu-comparison-result=31
|
|--F14:PLAN FRAGMENT [HASH(cs_bill_customer_sk,cs_item_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=141.87MB mem-reservation=51.00MB thread-reservation=1 runtime-filters-memory=17.00MB
-| | max-parallelism=120 segment-costs=[91888627] cpu-comparison-result=290 [max(290 (self) vs 176 (sum children))]
+| | max-parallelism=150 segment-costs=[91888627] cpu-comparison-result=290 [max(290 (self) vs 176 (sum children))]
| JOIN BUILD
| | join-table-id=02 plan-id=03 cohort-id=01
| | build expressions: sr_customer_sk, sr_item_sk
@@ -446,7 +446,7 @@ max-parallelism=150 segment-costs=[1420576432, 1368504] cpu-comparison-result=31
| |
| |--F17:PLAN FRAGMENT [HASH(ss_customer_sk,ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=413.14MB mem-reservation=67.00MB thread-reservation=1 runtime-filters-memory=33.00MB
-| | | max-parallelism=120 segment-costs=[2615590384]
+| | | max-parallelism=170 segment-costs=[2615590384]
| | JOIN BUILD
| | | join-table-id=05 plan-id=06 cohort-id=02
| | | build expressions: sr_customer_sk, sr_item_sk, sr_ticket_number
@@ -684,7 +684,7 @@ max-parallelism=150 segment-costs=[1420576432, 1368504] cpu-comparison-result=31
|
|--F14:PLAN FRAGMENT [HASH(cs_bill_customer_sk,cs_item_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=141.87MB mem-reservation=51.00MB thread-reservation=1 runtime-filters-memory=17.00MB
-| | max-parallelism=120 segment-costs=[91888627] cpu-comparison-result=290 [max(290 (self) vs 176 (sum children))]
+| | max-parallelism=150 segment-costs=[91888627] cpu-comparison-result=290 [max(290 (self) vs 176 (sum children))]
| JOIN BUILD
| | join-table-id=02 plan-id=03 cohort-id=01
| | build expressions: sr_customer_sk, sr_item_sk
@@ -782,7 +782,7 @@ max-parallelism=150 segment-costs=[1420576432, 1368504] cpu-comparison-result=31
| |
| |--F17:PLAN FRAGMENT [HASH(ss_customer_sk,ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=413.14MB mem-reservation=67.00MB thread-reservation=1 runtime-filters-memory=33.00MB
-| | | max-parallelism=120 segment-costs=[2615590384]
+| | | max-parallelism=170 segment-costs=[2615590384]
| | JOIN BUILD
| | | join-table-id=05 plan-id=06 cohort-id=02
| | | build expressions: sr_customer_sk, sr_item_sk, sr_ticket_number
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q20.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q20.test
index 0bd2a00ee..38cc19bba 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q20.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q20.test
@@ -180,7 +180,7 @@ max-parallelism=810 segment-costs=[8028157472, 255903264] cpu-comparison-result=
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=692.30MB mem-reservation=35.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[10505181600, 255903264] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+max-parallelism=1060 segment-costs=[10505181600, 255903264] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
05:AGGREGATE [STREAMING]
| output: sum(cs_ext_sales_price)
| group by: i_item_id, i_item_desc, i_category, i_class, i_current_price
@@ -337,7 +337,7 @@ max-parallelism=810 segment-costs=[8028157472, 255903264] cpu-comparison-result=
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=692.30MB mem-reservation=35.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[10505181600, 255903264] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+max-parallelism=1060 segment-costs=[10505181600, 255903264] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
05:AGGREGATE [STREAMING]
| output: sum(cs_ext_sales_price)
| group by: i_item_id, i_item_desc, i_category, i_class, i_current_price
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q22.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q22.test
index 51b92d254..fba433f2f 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q22.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q22.test
@@ -171,7 +171,7 @@ max-parallelism=1390 segment-costs=[12619154693, 13891241984, 500, 6] cpu-compar
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=3.84GB mem-reservation=138.25MB thread-reservation=1
-max-parallelism=120 segment-costs=[27917335342, 1043120064] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+max-parallelism=261 segment-costs=[27917335342, 1043120064] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
05:AGGREGATE [STREAMING]
| Class 0
| output: avg(CAST(inv_quantity_on_hand AS BIGINT))
@@ -337,7 +337,7 @@ max-parallelism=1390 segment-costs=[12619154693, 13891241984, 500, 6] cpu-compar
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=3.84GB mem-reservation=138.25MB thread-reservation=1
-max-parallelism=120 segment-costs=[27917335342, 1043120064] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+max-parallelism=261 segment-costs=[27917335342, 1043120064] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
05:AGGREGATE [STREAMING]
| Class 0
| output: avg(CAST(inv_quantity_on_hand AS BIGINT))
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q23a.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q23a.test
index 1467eb880..665429016 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q23a.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q23a.test
@@ -617,7 +617,7 @@ max-parallelism=60 segment-costs=[1451753748, 1] cpu-comparison-result=742 [max(
| | | F25:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| | | Per-Instance Resources: mem-estimate=932.46MB mem-reservation=42.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| | | max-parallelism=1491 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| | | 42:AGGREGATE [STREAMING]
| | | | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | | | group by: c_customer_sk
@@ -725,7 +725,7 @@ max-parallelism=60 segment-costs=[1451753748, 1] cpu-comparison-result=742 [max(
| | F22:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=16.00MB mem-reservation=16.00MB thread-reservation=0 runtime-filters-memory=16.00MB
| | Per-Instance Resources: mem-estimate=937.15MB mem-reservation=42.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
+| | max-parallelism=1824 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
| | 36:AGGREGATE [STREAMING]
| | | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | | group by: c_customer_sk
@@ -849,7 +849,7 @@ max-parallelism=60 segment-costs=[1451753748, 1] cpu-comparison-result=742 [max(
| | F17:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=835.75MB mem-reservation=38.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1491 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 32:AGGREGATE [STREAMING]
| | | output: count(*)
| | | group by: substr(i_item_desc, CAST(1 AS BIGINT), CAST(30 AS BIGINT)), i_item_sk, d_date
@@ -1065,7 +1065,7 @@ max-parallelism=60 segment-costs=[1451753748, 1] cpu-comparison-result=742 [max(
| | F10:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| | Per-Instance Resources: mem-estimate=932.46MB mem-reservation=42.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| | max-parallelism=1491 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| | 18:AGGREGATE [STREAMING]
| | | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | | group by: c_customer_sk
@@ -1173,7 +1173,7 @@ max-parallelism=60 segment-costs=[1451753748, 1] cpu-comparison-result=742 [max(
| F07:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=16.00MB mem-reservation=16.00MB thread-reservation=0 runtime-filters-memory=16.00MB
| Per-Instance Resources: mem-estimate=937.15MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
+| max-parallelism=1824 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
| 12:AGGREGATE [STREAMING]
| | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | group by: c_customer_sk
@@ -1297,7 +1297,7 @@ max-parallelism=60 segment-costs=[530008013]
| F02:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=835.75MB mem-reservation=38.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| max-parallelism=1491 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| 08:AGGREGATE [STREAMING]
| | output: count(*)
| | group by: substr(i_item_desc, CAST(1 AS BIGINT), CAST(30 AS BIGINT)), i_item_sk, d_date
@@ -1548,7 +1548,7 @@ max-parallelism=60 segment-costs=[1451753748, 1] cpu-comparison-result=742 [max(
| | | F25:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| | | Per-Instance Resources: mem-estimate=932.46MB mem-reservation=42.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| | | max-parallelism=1491 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| | | 42:AGGREGATE [STREAMING]
| | | | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | | | group by: c_customer_sk
@@ -1656,7 +1656,7 @@ max-parallelism=60 segment-costs=[1451753748, 1] cpu-comparison-result=742 [max(
| | F22:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=16.00MB mem-reservation=16.00MB thread-reservation=0 runtime-filters-memory=16.00MB
| | Per-Instance Resources: mem-estimate=937.15MB mem-reservation=42.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
+| | max-parallelism=1824 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
| | 36:AGGREGATE [STREAMING]
| | | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | | group by: c_customer_sk
@@ -1780,7 +1780,7 @@ max-parallelism=60 segment-costs=[1451753748, 1] cpu-comparison-result=742 [max(
| | F17:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=835.75MB mem-reservation=38.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1491 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 32:AGGREGATE [STREAMING]
| | | output: count(*)
| | | group by: substr(i_item_desc, CAST(1 AS BIGINT), CAST(30 AS BIGINT)), i_item_sk, d_date
@@ -1996,7 +1996,7 @@ max-parallelism=60 segment-costs=[1451753748, 1] cpu-comparison-result=742 [max(
| | F10:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| | Per-Instance Resources: mem-estimate=932.46MB mem-reservation=42.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| | max-parallelism=1491 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| | 18:AGGREGATE [STREAMING]
| | | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | | group by: c_customer_sk
@@ -2104,7 +2104,7 @@ max-parallelism=60 segment-costs=[1451753748, 1] cpu-comparison-result=742 [max(
| F07:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=16.00MB mem-reservation=16.00MB thread-reservation=0 runtime-filters-memory=16.00MB
| Per-Instance Resources: mem-estimate=937.15MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
+| max-parallelism=1824 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
| 12:AGGREGATE [STREAMING]
| | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | group by: c_customer_sk
@@ -2228,7 +2228,7 @@ max-parallelism=60 segment-costs=[530008013]
| F02:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=835.75MB mem-reservation=38.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| max-parallelism=1491 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| 08:AGGREGATE [STREAMING]
| | output: count(*)
| | group by: substr(i_item_desc, CAST(1 AS BIGINT), CAST(30 AS BIGINT)), i_item_sk, d_date
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q23b.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q23b.test
index 051290ddb..b060f8b4b 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q23b.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q23b.test
@@ -694,7 +694,7 @@ max-parallelism=120 segment-costs=[76438010, 76438010, 300, 6] cpu-comparison-re
| | | F30:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| | | Per-Instance Resources: mem-estimate=932.46MB mem-reservation=42.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| | | max-parallelism=1491 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| | | 46:AGGREGATE [STREAMING]
| | | | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | | | group by: c_customer_sk
@@ -801,7 +801,7 @@ max-parallelism=120 segment-costs=[76438010, 76438010, 300, 6] cpu-comparison-re
| | |
| | F27:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=938.09MB mem-reservation=42.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
+| | max-parallelism=1824 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
| | 40:AGGREGATE [STREAMING]
| | | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | | group by: c_customer_sk
@@ -916,7 +916,7 @@ max-parallelism=120 segment-costs=[76438010, 76438010, 300, 6] cpu-comparison-re
| | F22:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=835.75MB mem-reservation=38.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1491 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 36:AGGREGATE [STREAMING]
| | | output: count(*)
| | | group by: substr(i_item_desc, CAST(1 AS BIGINT), CAST(30 AS BIGINT)), i_item_sk, d_date
@@ -1135,7 +1135,7 @@ max-parallelism=140 segment-costs=[1376340589, 1367674] cpu-comparison-result=50
|
|--F38:PLAN FRAGMENT [HASH(cs_bill_customer_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=43.00MB mem-reservation=41.50MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | max-parallelism=120 segment-costs=[60703125, 30000000] cpu-comparison-result=240 [max(120 (self) vs 240 (sum children))]
+| | max-parallelism=140 segment-costs=[60703125, 30000000] cpu-comparison-result=240 [max(120 (self) vs 240 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: c_customer_sk
@@ -1199,7 +1199,7 @@ max-parallelism=140 segment-costs=[1376340589, 1367674] cpu-comparison-result=50
| | F12:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| | Per-Instance Resources: mem-estimate=932.46MB mem-reservation=42.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| | max-parallelism=1491 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| | 19:AGGREGATE [STREAMING]
| | | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | | group by: c_customer_sk
@@ -1307,7 +1307,7 @@ max-parallelism=140 segment-costs=[1376340589, 1367674] cpu-comparison-result=50
| F09:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=16.00MB mem-reservation=16.00MB thread-reservation=0 runtime-filters-memory=16.00MB
| Per-Instance Resources: mem-estimate=942.78MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
+| max-parallelism=1824 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
| 13:AGGREGATE [STREAMING]
| | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | group by: c_customer_sk
@@ -1422,7 +1422,7 @@ max-parallelism=140 segment-costs=[1376340589, 1367674] cpu-comparison-result=50
| F04:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=835.75MB mem-reservation=38.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| max-parallelism=1491 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| 09:AGGREGATE [STREAMING]
| | output: count(*)
| | group by: substr(i_item_desc, CAST(1 AS BIGINT), CAST(30 AS BIGINT)), i_item_sk, d_date
@@ -1525,7 +1525,7 @@ max-parallelism=140 segment-costs=[1376340589, 1367674] cpu-comparison-result=50
|
|--F46:PLAN FRAGMENT [HASH(cs_bill_customer_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=27.43MB mem-reservation=17.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[31288109]
+| | max-parallelism=140 segment-costs=[31288109]
| JOIN BUILD
| | join-table-id=08 plan-id=09 cohort-id=01
| | build expressions: c_customer_sk
@@ -1737,7 +1737,7 @@ max-parallelism=120 segment-costs=[76438010, 76438010, 300, 6] cpu-comparison-re
| | | F30:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| | | Per-Instance Resources: mem-estimate=932.46MB mem-reservation=42.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| | | max-parallelism=1491 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| | | 46:AGGREGATE [STREAMING]
| | | | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | | | group by: c_customer_sk
@@ -1844,7 +1844,7 @@ max-parallelism=120 segment-costs=[76438010, 76438010, 300, 6] cpu-comparison-re
| | |
| | F27:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=938.09MB mem-reservation=42.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
+| | max-parallelism=1824 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
| | 40:AGGREGATE [STREAMING]
| | | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | | group by: c_customer_sk
@@ -1959,7 +1959,7 @@ max-parallelism=120 segment-costs=[76438010, 76438010, 300, 6] cpu-comparison-re
| | F22:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=835.75MB mem-reservation=38.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| | max-parallelism=1491 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| | 36:AGGREGATE [STREAMING]
| | | output: count(*)
| | | group by: substr(i_item_desc, CAST(1 AS BIGINT), CAST(30 AS BIGINT)), i_item_sk, d_date
@@ -2178,7 +2178,7 @@ max-parallelism=140 segment-costs=[1376340589, 1367674] cpu-comparison-result=50
|
|--F38:PLAN FRAGMENT [HASH(cs_bill_customer_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=43.00MB mem-reservation=41.50MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | max-parallelism=120 segment-costs=[60703125, 30000000] cpu-comparison-result=240 [max(120 (self) vs 240 (sum children))]
+| | max-parallelism=140 segment-costs=[60703125, 30000000] cpu-comparison-result=240 [max(120 (self) vs 240 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: c_customer_sk
@@ -2242,7 +2242,7 @@ max-parallelism=140 segment-costs=[1376340589, 1367674] cpu-comparison-result=50
| | F12:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| | Per-Instance Resources: mem-estimate=932.46MB mem-reservation=42.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| | max-parallelism=1491 segment-costs=[27276569744, 703125] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| | 19:AGGREGATE [STREAMING]
| | | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | | group by: c_customer_sk
@@ -2350,7 +2350,7 @@ max-parallelism=140 segment-costs=[1376340589, 1367674] cpu-comparison-result=50
| F09:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=16.00MB mem-reservation=16.00MB thread-reservation=0 runtime-filters-memory=16.00MB
| Per-Instance Resources: mem-estimate=942.78MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
+| max-parallelism=1824 segment-costs=[23986124512, 703125] cpu-comparison-result=120 [max(120 (self) vs 20 (sum children))]
| 13:AGGREGATE [STREAMING]
| | output: sum(CAST(ss_quantity AS DECIMAL(10,0)) * ss_sales_price)
| | group by: c_customer_sk
@@ -2465,7 +2465,7 @@ max-parallelism=140 segment-costs=[1376340589, 1367674] cpu-comparison-result=50
| F04:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=835.75MB mem-reservation=38.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+| max-parallelism=1491 segment-costs=[42491079624, 220595280] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
| 09:AGGREGATE [STREAMING]
| | output: count(*)
| | group by: substr(i_item_desc, CAST(1 AS BIGINT), CAST(30 AS BIGINT)), i_item_sk, d_date
@@ -2568,7 +2568,7 @@ max-parallelism=140 segment-costs=[1376340589, 1367674] cpu-comparison-result=50
|
|--F46:PLAN FRAGMENT [HASH(cs_bill_customer_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=27.43MB mem-reservation=17.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[31288109]
+| | max-parallelism=140 segment-costs=[31288109]
| JOIN BUILD
| | join-table-id=08 plan-id=09 cohort-id=01
| | build expressions: c_customer_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q24a.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q24a.test
index bd0d8ec9e..95d203547 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q24a.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q24a.test
@@ -529,7 +529,7 @@ max-parallelism=10 segment-costs=[48705523, 35898928, 840287] cpu-comparison-res
| |
| |--F25:PLAN FRAGMENT [HASH(ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=314.51MB mem-reservation=51.00MB thread-reservation=1 runtime-filters-memory=17.00MB
-| | | max-parallelism=120 segment-costs=[1741477038]
+| | | max-parallelism=2030 segment-costs=[1741477038]
| | JOIN BUILD
| | | join-table-id=04 plan-id=05 cohort-id=02
| | | build expressions: sr_item_sk, sr_ticket_number
@@ -565,7 +565,7 @@ max-parallelism=10 segment-costs=[48705523, 35898928, 840287] cpu-comparison-res
| F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=35.00MB mem-reservation=35.00MB thread-reservation=0 runtime-filters-memory=35.00MB
| Per-Instance Resources: mem-estimate=56.75MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[2213742480]
+| max-parallelism=230 segment-costs=[2213742480]
| 19:HASH JOIN [INNER JOIN, BROADCAST]
| | hash-table-id=05
| | hash predicates: ss_store_sk = s_store_sk
@@ -1090,7 +1090,7 @@ max-parallelism=10 segment-costs=[48705523, 35898928, 840287] cpu-comparison-res
| |
| |--F25:PLAN FRAGMENT [HASH(ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=314.51MB mem-reservation=51.00MB thread-reservation=1 runtime-filters-memory=17.00MB
-| | | max-parallelism=120 segment-costs=[1741477038]
+| | | max-parallelism=2030 segment-costs=[1741477038]
| | JOIN BUILD
| | | join-table-id=04 plan-id=05 cohort-id=02
| | | build expressions: sr_item_sk, sr_ticket_number
@@ -1126,7 +1126,7 @@ max-parallelism=10 segment-costs=[48705523, 35898928, 840287] cpu-comparison-res
| F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=35.00MB mem-reservation=35.00MB thread-reservation=0 runtime-filters-memory=35.00MB
| Per-Instance Resources: mem-estimate=56.75MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[2213742480]
+| max-parallelism=230 segment-costs=[2213742480]
| 19:HASH JOIN [INNER JOIN, BROADCAST]
| | hash-table-id=05
| | hash predicates: ss_store_sk = s_store_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q24b.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q24b.test
index ac063c592..161d69dac 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q24b.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q24b.test
@@ -530,7 +530,7 @@ max-parallelism=10 segment-costs=[48705523, 35898928, 840287] cpu-comparison-res
| |
| |--F25:PLAN FRAGMENT [HASH(ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=314.51MB mem-reservation=51.00MB thread-reservation=1 runtime-filters-memory=17.00MB
-| | | max-parallelism=120 segment-costs=[1741477038]
+| | | max-parallelism=2030 segment-costs=[1741477038]
| | JOIN BUILD
| | | join-table-id=04 plan-id=05 cohort-id=02
| | | build expressions: sr_item_sk, sr_ticket_number
@@ -566,7 +566,7 @@ max-parallelism=10 segment-costs=[48705523, 35898928, 840287] cpu-comparison-res
| F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=35.00MB mem-reservation=35.00MB thread-reservation=0 runtime-filters-memory=35.00MB
| Per-Instance Resources: mem-estimate=56.75MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[2213742480]
+| max-parallelism=230 segment-costs=[2213742480]
| 19:HASH JOIN [INNER JOIN, BROADCAST]
| | hash-table-id=05
| | hash predicates: ss_store_sk = s_store_sk
@@ -1091,7 +1091,7 @@ max-parallelism=10 segment-costs=[48705523, 35898928, 840287] cpu-comparison-res
| |
| |--F25:PLAN FRAGMENT [HASH(ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=314.51MB mem-reservation=51.00MB thread-reservation=1 runtime-filters-memory=17.00MB
-| | | max-parallelism=120 segment-costs=[1741477038]
+| | | max-parallelism=2030 segment-costs=[1741477038]
| | JOIN BUILD
| | | join-table-id=04 plan-id=05 cohort-id=02
| | | build expressions: sr_item_sk, sr_ticket_number
@@ -1127,7 +1127,7 @@ max-parallelism=10 segment-costs=[48705523, 35898928, 840287] cpu-comparison-res
| F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=35.00MB mem-reservation=35.00MB thread-reservation=0 runtime-filters-memory=35.00MB
| Per-Instance Resources: mem-estimate=56.75MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[2213742480]
+| max-parallelism=230 segment-costs=[2213742480]
| 19:HASH JOIN [INNER JOIN, BROADCAST]
| | hash-table-id=05
| | hash predicates: ss_store_sk = s_store_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q28.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q28.test
index 2290ff04e..2ec4ad831 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q28.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q28.test
@@ -315,7 +315,7 @@ PLAN-ROOT SINK
| |
| F15:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=26.94MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[28737987584, 475]
+| max-parallelism=1824 segment-costs=[28737987584, 475]
| 16:AGGREGATE [STREAMING]
| | output: avg(ss_list_price), count(ss_list_price)
| | group by: ss_list_price
@@ -392,7 +392,7 @@ PLAN-ROOT SINK
| |
| F12:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=26.94MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[28737987584, 475]
+| max-parallelism=1824 segment-costs=[28737987584, 475]
| 13:AGGREGATE [STREAMING]
| | output: avg(ss_list_price), count(ss_list_price)
| | group by: ss_list_price
@@ -469,7 +469,7 @@ PLAN-ROOT SINK
| |
| F09:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=26.94MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[28737987584, 475]
+| max-parallelism=1824 segment-costs=[28737987584, 475]
| 10:AGGREGATE [STREAMING]
| | output: avg(ss_list_price), count(ss_list_price)
| | group by: ss_list_price
@@ -546,7 +546,7 @@ PLAN-ROOT SINK
| |
| F06:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=26.94MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[28737987584, 475]
+| max-parallelism=1824 segment-costs=[28737987584, 475]
| 07:AGGREGATE [STREAMING]
| | output: avg(ss_list_price), count(ss_list_price)
| | group by: ss_list_price
@@ -623,7 +623,7 @@ PLAN-ROOT SINK
| |
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=26.94MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[28737987584, 475]
+| max-parallelism=1824 segment-costs=[28737987584, 475]
| 04:AGGREGATE [STREAMING]
| | output: avg(ss_list_price), count(ss_list_price)
| | group by: ss_list_price
@@ -679,7 +679,7 @@ max-parallelism=10 segment-costs=[61225, 60750, 1] cpu-comparison-result=120 [ma
|
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Instance Resources: mem-estimate=26.94MB mem-reservation=10.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[28737987584, 475]
+max-parallelism=1824 segment-costs=[28737987584, 475]
01:AGGREGATE [STREAMING]
| output: avg(ss_list_price), count(ss_list_price)
| group by: ss_list_price
@@ -766,7 +766,7 @@ PLAN-ROOT SINK
| |
| F15:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=26.94MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[28737987584, 475]
+| max-parallelism=1824 segment-costs=[28737987584, 475]
| 16:AGGREGATE [STREAMING]
| | output: avg(ss_list_price), count(ss_list_price)
| | group by: ss_list_price
@@ -843,7 +843,7 @@ PLAN-ROOT SINK
| |
| F12:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=26.94MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[28737987584, 475]
+| max-parallelism=1824 segment-costs=[28737987584, 475]
| 13:AGGREGATE [STREAMING]
| | output: avg(ss_list_price), count(ss_list_price)
| | group by: ss_list_price
@@ -920,7 +920,7 @@ PLAN-ROOT SINK
| |
| F09:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=26.94MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[28737987584, 475]
+| max-parallelism=1824 segment-costs=[28737987584, 475]
| 10:AGGREGATE [STREAMING]
| | output: avg(ss_list_price), count(ss_list_price)
| | group by: ss_list_price
@@ -997,7 +997,7 @@ PLAN-ROOT SINK
| |
| F06:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=26.94MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[28737987584, 475]
+| max-parallelism=1824 segment-costs=[28737987584, 475]
| 07:AGGREGATE [STREAMING]
| | output: avg(ss_list_price), count(ss_list_price)
| | group by: ss_list_price
@@ -1074,7 +1074,7 @@ PLAN-ROOT SINK
| |
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=26.94MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[28737987584, 475]
+| max-parallelism=1824 segment-costs=[28737987584, 475]
| 04:AGGREGATE [STREAMING]
| | output: avg(ss_list_price), count(ss_list_price)
| | group by: ss_list_price
@@ -1130,7 +1130,7 @@ max-parallelism=10 segment-costs=[61225, 60750, 1] cpu-comparison-result=120 [ma
|
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Instance Resources: mem-estimate=26.94MB mem-reservation=10.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[28737987584, 475]
+max-parallelism=1824 segment-costs=[28737987584, 475]
01:AGGREGATE [STREAMING]
| output: avg(ss_list_price), count(ss_list_price)
| group by: ss_list_price
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q29.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q29.test
index 8042ad5ff..d0451618e 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q29.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q29.test
@@ -350,7 +350,7 @@ max-parallelism=360 segment-costs=[3531191941, 2649756] cpu-comparison-result=18
|
|--F14:PLAN FRAGMENT [HASH(cs_bill_customer_sk,cs_item_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=65.90MB mem-reservation=43.00MB thread-reservation=1 runtime-filters-memory=9.00MB
-| | max-parallelism=120 segment-costs=[46728813] cpu-comparison-result=160 [max(160 (self) vs 115 (sum children))]
+| | max-parallelism=360 segment-costs=[46728813] cpu-comparison-result=160 [max(160 (self) vs 115 (sum children))]
| JOIN BUILD
| | join-table-id=02 plan-id=03 cohort-id=01
| | build expressions: sr_customer_sk, sr_item_sk
@@ -686,7 +686,7 @@ max-parallelism=550 segment-costs=[5450197971, 2649756] cpu-comparison-result=19
|
|--F15:PLAN FRAGMENT [HASH(cs_bill_customer_sk,cs_item_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=61.21MB mem-reservation=43.00MB thread-reservation=1 runtime-filters-memory=9.00MB
-| | max-parallelism=120 segment-costs=[46728813] cpu-comparison-result=170 [max(170 (self) vs 115 (sum children))]
+| | max-parallelism=550 segment-costs=[46728813] cpu-comparison-result=170 [max(170 (self) vs 115 (sum children))]
| JOIN BUILD
| | join-table-id=02 plan-id=03 cohort-id=01
| | build expressions: sr_customer_sk, sr_item_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q31.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q31.test
index f3536e5c0..ea76aca6d 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q31.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q31.test
@@ -497,7 +497,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
|
|--F29:PLAN FRAGMENT [HASH(ca_county)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=10.22MB mem-reservation=2.88MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1506199] cpu-comparison-result=140 [max(120 (self) vs 140 (sum children))]
+| | max-parallelism=2147483640 segment-costs=[1506199] cpu-comparison-result=140 [max(120 (self) vs 140 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: ca_county
@@ -639,7 +639,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
|
|--F32:PLAN FRAGMENT [HASH(ca_county)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=10.22MB mem-reservation=2.88MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1506199] cpu-comparison-result=140 [max(120 (self) vs 140 (sum children))]
+| | max-parallelism=2147483640 segment-costs=[1506199] cpu-comparison-result=140 [max(120 (self) vs 140 (sum children))]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: ca_county
@@ -781,7 +781,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
|
|--F35:PLAN FRAGMENT [HASH(ca_county)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=10.22MB mem-reservation=2.88MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1506199] cpu-comparison-result=140 [max(120 (self) vs 140 (sum children))]
+| | max-parallelism=2147483640 segment-costs=[1506199] cpu-comparison-result=140 [max(120 (self) vs 140 (sum children))]
| JOIN BUILD
| | join-table-id=06 plan-id=07 cohort-id=01
| | build expressions: ca_county
@@ -923,7 +923,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
|
|--F38:PLAN FRAGMENT [HASH(ca_county)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=10.22MB mem-reservation=2.88MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1506199] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=2147483640 segment-costs=[1506199] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=09 plan-id=10 cohort-id=01
| | build expressions: ca_county
@@ -953,7 +953,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
| F09:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=9.00MB mem-reservation=9.00MB thread-reservation=0 runtime-filters-memory=9.00MB
| Per-Instance Resources: mem-estimate=102.66MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[5191623302, 75399] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| max-parallelism=187 segment-costs=[5191623302, 75399] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| 17:AGGREGATE [STREAMING]
| | output: sum(ss_ext_sales_price)
| | group by: ca_county, d_qoy, d_year
@@ -1057,7 +1057,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
|
|--F41:PLAN FRAGMENT [HASH(ca_county)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=10.22MB mem-reservation=2.88MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1506199] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=2147483640 segment-costs=[1506199] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=12 plan-id=13 cohort-id=01
| | build expressions: ca_county
@@ -1087,7 +1087,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
| F04:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=9.00MB mem-reservation=9.00MB thread-reservation=0 runtime-filters-memory=9.00MB
| Per-Instance Resources: mem-estimate=102.66MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[5191623302, 75399] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| max-parallelism=187 segment-costs=[5191623302, 75399] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| 11:AGGREGATE [STREAMING]
| | output: sum(ss_ext_sales_price)
| | group by: ca_county, d_qoy, d_year
@@ -1204,7 +1204,7 @@ max-parallelism=10 segment-costs=[5798599, 75399] cpu-comparison-result=120 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=9.00MB mem-reservation=9.00MB thread-reservation=0 runtime-filters-memory=9.00MB
Per-Instance Resources: mem-estimate=102.66MB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[5191623302, 75399] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+max-parallelism=187 segment-costs=[5191623302, 75399] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: ca_county, d_qoy, d_year
@@ -1333,7 +1333,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
|
|--F29:PLAN FRAGMENT [HASH(ca_county)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=10.22MB mem-reservation=2.88MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1506199] cpu-comparison-result=140 [max(120 (self) vs 140 (sum children))]
+| | max-parallelism=2147483640 segment-costs=[1506199] cpu-comparison-result=140 [max(120 (self) vs 140 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: ca_county
@@ -1475,7 +1475,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
|
|--F32:PLAN FRAGMENT [HASH(ca_county)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=10.22MB mem-reservation=2.88MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1506199] cpu-comparison-result=140 [max(120 (self) vs 140 (sum children))]
+| | max-parallelism=2147483640 segment-costs=[1506199] cpu-comparison-result=140 [max(120 (self) vs 140 (sum children))]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: ca_county
@@ -1617,7 +1617,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
|
|--F35:PLAN FRAGMENT [HASH(ca_county)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=10.22MB mem-reservation=2.88MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1506199] cpu-comparison-result=140 [max(120 (self) vs 140 (sum children))]
+| | max-parallelism=2147483640 segment-costs=[1506199] cpu-comparison-result=140 [max(120 (self) vs 140 (sum children))]
| JOIN BUILD
| | join-table-id=06 plan-id=07 cohort-id=01
| | build expressions: ca_county
@@ -1759,7 +1759,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
|
|--F38:PLAN FRAGMENT [HASH(ca_county)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=10.22MB mem-reservation=2.88MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1506199] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=2147483640 segment-costs=[1506199] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=09 plan-id=10 cohort-id=01
| | build expressions: ca_county
@@ -1789,7 +1789,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
| F09:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=9.00MB mem-reservation=9.00MB thread-reservation=0 runtime-filters-memory=9.00MB
| Per-Instance Resources: mem-estimate=102.66MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[5191623302, 75399] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| max-parallelism=187 segment-costs=[5191623302, 75399] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| 17:AGGREGATE [STREAMING]
| | output: sum(ss_ext_sales_price)
| | group by: ca_county, d_qoy, d_year
@@ -1893,7 +1893,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
|
|--F41:PLAN FRAGMENT [HASH(ca_county)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=10.22MB mem-reservation=2.88MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1506199] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=2147483640 segment-costs=[1506199] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=12 plan-id=13 cohort-id=01
| | build expressions: ca_county
@@ -1923,7 +1923,7 @@ max-parallelism=2147483640 segment-costs=[9223372036854775807, 11705881825640448
| F04:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=9.00MB mem-reservation=9.00MB thread-reservation=0 runtime-filters-memory=9.00MB
| Per-Instance Resources: mem-estimate=102.66MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[5191623302, 75399] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| max-parallelism=187 segment-costs=[5191623302, 75399] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| 11:AGGREGATE [STREAMING]
| | output: sum(ss_ext_sales_price)
| | group by: ca_county, d_qoy, d_year
@@ -2040,7 +2040,7 @@ max-parallelism=10 segment-costs=[5798599, 75399] cpu-comparison-result=120 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=9.00MB mem-reservation=9.00MB thread-reservation=0 runtime-filters-memory=9.00MB
Per-Instance Resources: mem-estimate=102.66MB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[5191623302, 75399] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+max-parallelism=187 segment-costs=[5191623302, 75399] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: ca_county, d_qoy, d_year
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q32.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q32.test
index 7c8732129..6f748c4a2 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q32.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q32.test
@@ -218,7 +218,7 @@ max-parallelism=20 segment-costs=[164665069, 1] cpu-comparison-result=145 [max(2
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=33.62MB mem-reservation=18.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[13102409376, 5628] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=1320 segment-costs=[13102409376, 5628] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 06:AGGREGATE [STREAMING]
| | output: avg(cs_ext_discount_amt)
| | group by: cs_item_sk
@@ -428,7 +428,7 @@ max-parallelism=10 segment-costs=[13669196, 1] cpu-comparison-result=145 [max(30
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=33.62MB mem-reservation=18.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[13102409376, 5628] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=1320 segment-costs=[13102409376, 5628] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 06:AGGREGATE [STREAMING]
| | output: avg(cs_ext_discount_amt)
| | group by: cs_item_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q36.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q36.test
index a7b44f301..4471fbb01 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q36.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q36.test
@@ -230,7 +230,7 @@ max-parallelism=10 segment-costs=[4200, 7007, 65] cpu-comparison-result=120 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
Per-Instance Resources: mem-estimate=53.80MB mem-reservation=14.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[16365317428, 196] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+max-parallelism=374 segment-costs=[16365317428, 196] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
07:AGGREGATE [STREAMING]
| Class 0
| output: sum(ss_net_profit), sum(ss_ext_sales_price)
@@ -445,7 +445,7 @@ max-parallelism=10 segment-costs=[4200, 7007, 65] cpu-comparison-result=120 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
Per-Instance Resources: mem-estimate=53.80MB mem-reservation=14.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[16365317428, 196] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+max-parallelism=374 segment-costs=[16365317428, 196] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
07:AGGREGATE [STREAMING]
| Class 0
| output: sum(ss_net_profit), sum(ss_ext_sales_price)
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q37.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q37.test
index e913cf245..d370f9c3b 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q37.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q37.test
@@ -208,7 +208,7 @@ max-parallelism=670 segment-costs=[6661472314, 237864496] cpu-comparison-result=
|
|--F08:PLAN FRAGMENT [HASH(inv_item_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=31.21MB mem-reservation=18.00MB thread-reservation=1 runtime-filters-memory=1.00MB
-| | max-parallelism=120 segment-costs=[6626964] cpu-comparison-result=140 [max(140 (self) vs 14 (sum children))]
+| | max-parallelism=670 segment-costs=[6626964] cpu-comparison-result=140 [max(140 (self) vs 14 (sum children))]
| JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: i_item_sk
@@ -282,7 +282,7 @@ max-parallelism=670 segment-costs=[6661472314, 237864496] cpu-comparison-result=
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=23.50MB mem-reservation=256.00KB thread-reservation=1
-max-parallelism=120 segment-costs=[2093896922]
+max-parallelism=210 segment-costs=[2093896922]
01:SCAN HDFS [tpcds_partitioned_parquet_snap.inventory, RANDOM]
HDFS partitions=261/261 files=261 size=44.10MB
predicates: inv_quantity_on_hand <= CAST(500 AS INT), inv_quantity_on_hand >= CAST(100 AS INT)
@@ -391,7 +391,7 @@ max-parallelism=670 segment-costs=[6661472314, 237864496] cpu-comparison-result=
|
|--F08:PLAN FRAGMENT [HASH(inv_item_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=31.21MB mem-reservation=18.00MB thread-reservation=1 runtime-filters-memory=1.00MB
-| | max-parallelism=120 segment-costs=[6626964] cpu-comparison-result=140 [max(140 (self) vs 14 (sum children))]
+| | max-parallelism=670 segment-costs=[6626964] cpu-comparison-result=140 [max(140 (self) vs 14 (sum children))]
| JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: i_item_sk
@@ -465,7 +465,7 @@ max-parallelism=670 segment-costs=[6661472314, 237864496] cpu-comparison-result=
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=23.50MB mem-reservation=256.00KB thread-reservation=1
-max-parallelism=120 segment-costs=[2093896922]
+max-parallelism=210 segment-costs=[2093896922]
01:SCAN HDFS [tpcds_partitioned_parquet_snap.inventory, RANDOM]
HDFS partitions=261/261 files=261 size=44.10MB
predicates: inv_quantity_on_hand <= CAST(500 AS INT), inv_quantity_on_hand >= CAST(100 AS INT)
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q38.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q38.test
index 2773fff5d..eaf43861e 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q38.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q38.test
@@ -266,7 +266,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
|
|--F13:PLAN FRAGMENT [HASH(c_last_name,c_first_name,d_date)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=1.03GB mem-reservation=37.00MB thread-reservation=1 runtime-filters-memory=3.00MB
-| | max-parallelism=120 segment-costs=[6048443344] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=5560 segment-costs=[6048443344] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: d_date, c_first_name, c_last_name
@@ -295,7 +295,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
| F08:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=16.00MB mem-reservation=16.00MB thread-reservation=0 runtime-filters-memory=16.00MB
| Per-Instance Resources: mem-estimate=574.53MB mem-reservation=34.12MB thread-reservation=1
-| max-parallelism=120 segment-costs=[10046570752, 85345744] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| max-parallelism=1010 segment-costs=[10046570752, 85345744] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| 17:AGGREGATE [STREAMING]
| | group by: c_last_name, c_first_name, d_date
| | mem-estimate=537.92MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
@@ -396,7 +396,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
|
|--F16:PLAN FRAGMENT [HASH(c_last_name,c_first_name,d_date)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=2.05GB mem-reservation=37.00MB thread-reservation=1 runtime-filters-memory=3.00MB
-| | max-parallelism=120 segment-costs=[12067416912] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=5560 segment-costs=[12067416912] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: d_date, c_first_name, c_last_name
@@ -425,7 +425,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
| F04:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=16.00MB mem-reservation=16.00MB thread-reservation=0 runtime-filters-memory=16.00MB
| Per-Instance Resources: mem-estimate=727.70MB mem-reservation=35.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[19953869696, 170275664] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| max-parallelism=1831 segment-costs=[19953869696, 170275664] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| 11:AGGREGATE [STREAMING]
| | group by: c_last_name, c_first_name, d_date
| | mem-estimate=691.10MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
@@ -530,7 +530,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
Per-Instance Resources: mem-estimate=1.01GB mem-reservation=38.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[39814825952, 340542624] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+max-parallelism=1824 segment-costs=[39814825952, 340542624] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
05:AGGREGATE [STREAMING]
| group by: c_last_name, c_first_name, d_date
| mem-estimate=998.17MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
@@ -666,7 +666,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
|
|--F14:PLAN FRAGMENT [HASH(c_last_name,c_first_name,d_date)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=1.03GB mem-reservation=37.00MB thread-reservation=1 runtime-filters-memory=3.00MB
-| | max-parallelism=120 segment-costs=[6048443344] cpu-comparison-result=141 [max(120 (self) vs 141 (sum children))]
+| | max-parallelism=5560 segment-costs=[6048443344] cpu-comparison-result=141 [max(120 (self) vs 141 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: d_date, c_first_name, c_last_name
@@ -748,7 +748,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
| |
| |--F16:PLAN FRAGMENT [HASH(web_sales.ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=43.43MB mem-reservation=33.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[31288109]
+| | | max-parallelism=1000 segment-costs=[31288109]
| | JOIN BUILD
| | | join-table-id=02 plan-id=03 cohort-id=02
| | | build expressions: customer.c_customer_sk
@@ -804,7 +804,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
|
|--F17:PLAN FRAGMENT [HASH(c_last_name,c_first_name,d_date)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=2.05GB mem-reservation=37.00MB thread-reservation=1 runtime-filters-memory=3.00MB
-| | max-parallelism=120 segment-costs=[12067416912] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=5560 segment-costs=[12067416912] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: d_date, c_first_name, c_last_name
@@ -833,7 +833,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
| F04:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=16.00MB mem-reservation=16.00MB thread-reservation=0 runtime-filters-memory=16.00MB
| Per-Instance Resources: mem-estimate=727.70MB mem-reservation=35.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[19953869696, 170275664] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| max-parallelism=1831 segment-costs=[19953869696, 170275664] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| 11:AGGREGATE [STREAMING]
| | group by: c_last_name, c_first_name, d_date
| | mem-estimate=691.10MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
@@ -938,7 +938,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
Per-Instance Resources: mem-estimate=1.01GB mem-reservation=38.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[39814825952, 340542624] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+max-parallelism=1824 segment-costs=[39814825952, 340542624] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
05:AGGREGATE [STREAMING]
| group by: c_last_name, c_first_name, d_date
| mem-estimate=998.17MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q40.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q40.test
index a7ea6f3ef..b39c176e3 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q40.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q40.test
@@ -309,7 +309,7 @@ max-parallelism=390 segment-costs=[3897933946, 183759] cpu-comparison-result=176
|
|--F11:PLAN FRAGMENT [HASH(cs_item_sk,cs_order_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=167.72MB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[872471816]
+| | max-parallelism=390 segment-costs=[872471816]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: cr_item_sk, cr_order_number
@@ -525,7 +525,7 @@ max-parallelism=390 segment-costs=[3897933946, 183759] cpu-comparison-result=176
|
|--F11:PLAN FRAGMENT [HASH(cs_item_sk,cs_order_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=167.72MB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[872471816]
+| | max-parallelism=390 segment-costs=[872471816]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: cr_item_sk, cr_order_number
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q43.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q43.test
index aebd272f5..cf0d8a8e5 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q43.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q43.test
@@ -135,7 +135,7 @@ max-parallelism=10 segment-costs=[62079, 900, 16] cpu-comparison-result=120 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=32.25MB mem-reservation=11.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[11567246304, 1059] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
+max-parallelism=374 segment-costs=[11567246304, 1059] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
05:AGGREGATE [STREAMING]
| output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Sa [...]
| group by: s_store_name, s_store_id
@@ -271,7 +271,7 @@ max-parallelism=10 segment-costs=[62079, 900, 16] cpu-comparison-result=120 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=32.25MB mem-reservation=11.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[11567246304, 1059] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
+max-parallelism=374 segment-costs=[11567246304, 1059] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
05:AGGREGATE [STREAMING]
| output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Sa [...]
| group by: s_store_name, s_store_id
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q44.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q44.test
index a36a9709c..2c4f64e25 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q44.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q44.test
@@ -439,7 +439,7 @@ max-parallelism=4 segment-costs=[573669, 1] cpu-comparison-result=480 [max(4 (se
| | | | |
| | | | F10:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=10.00MB thread-reservation=1
-| | | | max-parallelism=120 segment-costs=[17477682390, 11]
+| | | | max-parallelism=1750 segment-costs=[17477682390, 11]
| | | | 03:AGGREGATE [STREAMING]
| | | | | output: avg(ss_net_profit)
| | | | | group by: ss_store_sk
@@ -475,7 +475,7 @@ max-parallelism=4 segment-costs=[573669, 1] cpu-comparison-result=480 [max(4 (se
| | | |
| | | F08:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=11.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[8857656658, 5628]
+| | | max-parallelism=890 segment-costs=[8857656658, 5628]
| | | 01:AGGREGATE [STREAMING]
| | | | output: avg(ss_net_profit)
| | | | group by: ss_item_sk
@@ -597,7 +597,7 @@ max-parallelism=4 segment-costs=[573669, 1] cpu-comparison-result=480 [max(4 (se
| | |
| | F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=10.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[17477682390, 11]
+| | max-parallelism=1750 segment-costs=[17477682390, 11]
| | 12:AGGREGATE [STREAMING]
| | | output: avg(ss_net_profit)
| | | group by: ss_store_sk
@@ -633,7 +633,7 @@ max-parallelism=4 segment-costs=[573669, 1] cpu-comparison-result=480 [max(4 (se
| |
| F01:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=26.62MB mem-reservation=11.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[8857656658, 5628]
+| max-parallelism=890 segment-costs=[8857656658, 5628]
| 10:AGGREGATE [STREAMING]
| | output: avg(ss_net_profit)
| | group by: ss_item_sk
@@ -856,7 +856,7 @@ max-parallelism=4 segment-costs=[573669, 1] cpu-comparison-result=480 [max(4 (se
| | | | |
| | | | F10:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=10.00MB thread-reservation=1
-| | | | max-parallelism=120 segment-costs=[17477682390, 11]
+| | | | max-parallelism=1750 segment-costs=[17477682390, 11]
| | | | 03:AGGREGATE [STREAMING]
| | | | | output: avg(ss_net_profit)
| | | | | group by: ss_store_sk
@@ -892,7 +892,7 @@ max-parallelism=4 segment-costs=[573669, 1] cpu-comparison-result=480 [max(4 (se
| | | |
| | | F08:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=11.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[8857656658, 5628]
+| | | max-parallelism=890 segment-costs=[8857656658, 5628]
| | | 01:AGGREGATE [STREAMING]
| | | | output: avg(ss_net_profit)
| | | | group by: ss_item_sk
@@ -1022,7 +1022,7 @@ max-parallelism=4 segment-costs=[573669, 1] cpu-comparison-result=480 [max(4 (se
| | |
| | F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=26.62MB mem-reservation=10.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[17477682390, 11]
+| | max-parallelism=1750 segment-costs=[17477682390, 11]
| | 12:AGGREGATE [STREAMING]
| | | output: avg(ss_net_profit)
| | | group by: ss_store_sk
@@ -1058,7 +1058,7 @@ max-parallelism=4 segment-costs=[573669, 1] cpu-comparison-result=480 [max(4 (se
| |
| F01:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Instance Resources: mem-estimate=26.62MB mem-reservation=11.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[8857656658, 5628]
+| max-parallelism=890 segment-costs=[8857656658, 5628]
| 10:AGGREGATE [STREAMING]
| | output: avg(ss_net_profit)
| | group by: ss_item_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q45.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q45.test
index fcf62cf01..c343dbd9f 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q45.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q45.test
@@ -197,7 +197,7 @@ max-parallelism=10 segment-costs=[56827531, 200, 7] cpu-comparison-result=120 [m
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=18.00MB mem-reservation=18.00MB thread-reservation=0 runtime-filters-memory=18.00MB
Per-Instance Resources: mem-estimate=104.15MB mem-reservation=34.12MB thread-reservation=1
-max-parallelism=120 segment-costs=[1668962985, 1141303] cpu-comparison-result=120 [max(120 (self) vs 75 (sum children))]
+max-parallelism=170 segment-costs=[1668962985, 1141303] cpu-comparison-result=120 [max(120 (self) vs 75 (sum children))]
12:AGGREGATE [STREAMING]
| output: sum(ws_sales_price)
| group by: ca_zip, ca_county
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q46.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q46.test
index 40f6e244e..ade3dbcd9 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q46.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q46.test
@@ -307,7 +307,7 @@ max-parallelism=50 segment-costs=[467823596, 5489644] cpu-comparison-result=120
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=27.00MB mem-reservation=27.00MB thread-reservation=0 runtime-filters-memory=27.00MB
Per-Instance Resources: mem-estimate=67.43MB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[1582397600, 5489644] cpu-comparison-result=120 [max(120 (self) vs 53 (sum children))]
+max-parallelism=160 segment-costs=[1582397600, 5489644] cpu-comparison-result=120 [max(120 (self) vs 53 (sum children))]
09:AGGREGATE [STREAMING]
| output: sum(ss_coupon_amt), sum(ss_net_profit)
| group by: ss_ticket_number, ss_customer_sk, ss_addr_sk, ca_city
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q47.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q47.test
index bf1dbfe5d..55822b228 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q47.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q47.test
@@ -445,7 +445,7 @@ max-parallelism=30940 segment-costs=[1154962800, 975139200, 309341155912, 10] cp
| F10:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
| Per-Instance Resources: mem-estimate=607.88MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[20603343132, 17300336] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=434 segment-costs=[20603343132, 17300336] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 30:AGGREGATE [STREAMING]
| | output: sum(ss_sales_price)
| | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
@@ -644,7 +644,7 @@ max-parallelism=30940 segment-costs=[1154962800, 975139200, 309341155912, 10] cp
| F05:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
| Per-Instance Resources: mem-estimate=607.88MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[20603343132, 17300336] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=434 segment-costs=[20603343132, 17300336] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 07:AGGREGATE [STREAMING]
| | output: sum(ss_sales_price)
| | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
@@ -800,7 +800,7 @@ max-parallelism=30940 segment-costs=[1154962800, 975139200, 309341155912, 10] cp
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
Per-Instance Resources: mem-estimate=607.88MB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[20603343132, 17300336] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+max-parallelism=434 segment-costs=[20603343132, 17300336] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
20:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
@@ -1005,7 +1005,7 @@ max-parallelism=30940 segment-costs=[1154962800, 975139200, 309341155912, 10] cp
| F10:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
| Per-Instance Resources: mem-estimate=607.88MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[20603343132, 17300336] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=434 segment-costs=[20603343132, 17300336] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 30:AGGREGATE [STREAMING]
| | output: sum(ss_sales_price)
| | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
@@ -1204,7 +1204,7 @@ max-parallelism=30940 segment-costs=[1154962800, 975139200, 309341155912, 10] cp
| F05:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
| Per-Instance Resources: mem-estimate=607.88MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[20603343132, 17300336] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=434 segment-costs=[20603343132, 17300336] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 07:AGGREGATE [STREAMING]
| | output: sum(ss_sales_price)
| | group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
@@ -1360,7 +1360,7 @@ max-parallelism=30940 segment-costs=[1154962800, 975139200, 309341155912, 10] cp
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
Per-Instance Resources: mem-estimate=607.88MB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[20603343132, 17300336] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+max-parallelism=434 segment-costs=[20603343132, 17300336] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
20:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: i_category, i_brand, s_store_name, s_company_name, d_year, d_moy
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q48.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q48.test
index 19b973d54..9ca92448b 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q48.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q48.test
@@ -200,7 +200,7 @@ PLAN-ROOT SINK
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=4.00MB mem-reservation=4.00MB thread-reservation=0 runtime-filters-memory=4.00MB
Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[28601287292, 1] cpu-comparison-result=120 [max(120 (self) vs 62 (sum children))]
+max-parallelism=374 segment-costs=[28601287292, 1] cpu-comparison-result=120 [max(120 (self) vs 62 (sum children))]
09:AGGREGATE
| output: sum(CAST(ss_quantity AS BIGINT))
| mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
@@ -393,7 +393,7 @@ PLAN-ROOT SINK
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=4.00MB mem-reservation=4.00MB thread-reservation=0 runtime-filters-memory=4.00MB
Per-Instance Resources: mem-estimate=16.02MB mem-reservation=8.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[28601287292, 1] cpu-comparison-result=120 [max(120 (self) vs 62 (sum children))]
+max-parallelism=374 segment-costs=[28601287292, 1] cpu-comparison-result=120 [max(120 (self) vs 62 (sum children))]
09:AGGREGATE
| output: sum(CAST(ss_quantity AS BIGINT))
| mem-estimate=16.00KB mem-reservation=0B spill-buffer=2.00MB thread-reservation=0
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q50.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q50.test
index cdab21f50..92077da33 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q50.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q50.test
@@ -335,7 +335,7 @@ max-parallelism=3770 segment-costs=[37652994992, 67444256] cpu-comparison-result
|
|--F11:PLAN FRAGMENT [HASH(ss_customer_sk,ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=385.60MB mem-reservation=67.00MB thread-reservation=1 runtime-filters-memory=33.00MB
-| | max-parallelism=120 segment-costs=[2612215428]
+| | max-parallelism=3770 segment-costs=[2612215428]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: sr_customer_sk, sr_item_sk, sr_ticket_number
@@ -549,7 +549,7 @@ max-parallelism=3770 segment-costs=[37652994992, 67444256] cpu-comparison-result
|
|--F11:PLAN FRAGMENT [HASH(ss_customer_sk,ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=385.60MB mem-reservation=67.00MB thread-reservation=1 runtime-filters-memory=33.00MB
-| | max-parallelism=120 segment-costs=[2612215428]
+| | max-parallelism=3770 segment-costs=[2612215428]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: sr_customer_sk, sr_item_sk, sr_ticket_number
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q51.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q51.test
index e5394ccc4..d79bc5332 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q51.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q51.test
@@ -266,7 +266,7 @@ max-parallelism=487520 segment-costs=[4875148176256]
|
|--F09:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=1.09GB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[4421184496] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=487520 segment-costs=[4421184496] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: d_date, ws_item_sk
@@ -310,7 +310,7 @@ max-parallelism=487520 segment-costs=[4875148176256]
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=492.60MB mem-reservation=34.12MB thread-reservation=1
-| max-parallelism=120 segment-costs=[10916352000, 59061624] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=1100 segment-costs=[10916352000, 59061624] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 03:AGGREGATE [STREAMING]
| | output: sum(ws_sales_price)
| | group by: ws_item_sk, d_date
@@ -408,7 +408,7 @@ max-parallelism=2620 segment-costs=[26156055728, 17279870976, 9044932480] cpu-co
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
Per-Instance Resources: mem-estimate=1.18GB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[43392128000, 236248240] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+max-parallelism=1824 segment-costs=[43392128000, 236248240] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
09:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: ss_item_sk, d_date
@@ -532,7 +532,7 @@ max-parallelism=487520 segment-costs=[4875148176256]
|
|--F09:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=1.09GB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[4421184496] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=487520 segment-costs=[4421184496] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: d_date, ws_item_sk
@@ -576,7 +576,7 @@ max-parallelism=487520 segment-costs=[4875148176256]
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=492.60MB mem-reservation=34.12MB thread-reservation=1
-| max-parallelism=120 segment-costs=[10916352000, 59061624] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=1100 segment-costs=[10916352000, 59061624] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 03:AGGREGATE [STREAMING]
| | output: sum(ws_sales_price)
| | group by: ws_item_sk, d_date
@@ -674,7 +674,7 @@ max-parallelism=2620 segment-costs=[26156055728, 17279870976, 9044932480] cpu-co
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
Per-Instance Resources: mem-estimate=1.18GB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[43392128000, 236248240] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+max-parallelism=1824 segment-costs=[43392128000, 236248240] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
09:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: ss_item_sk, d_date
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q54.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q54.test
index d35adecae..551c05b02 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q54.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q54.test
@@ -649,7 +649,7 @@ max-parallelism=30 segment-costs=[249887815, 47575] cpu-comparison-result=212 [m
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=19.28MB mem-reservation=8.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[8834586785]
+max-parallelism=890 segment-costs=[8834586785]
20:HASH JOIN [INNER JOIN, BROADCAST]
| hash-table-id=05
| hash predicates: ss_customer_sk = c_customer_sk
@@ -1187,7 +1187,7 @@ max-parallelism=30 segment-costs=[249887815, 47575] cpu-comparison-result=212 [m
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=19.28MB mem-reservation=8.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[8834586785]
+max-parallelism=890 segment-costs=[8834586785]
20:HASH JOIN [INNER JOIN, BROADCAST]
| hash-table-id=05
| hash predicates: ss_customer_sk = c_customer_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q57.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q57.test
index f97216581..395504b86 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q57.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q57.test
@@ -398,7 +398,7 @@ max-parallelism=138140 segment-costs=[1381352210632, 15] cpu-comparison-result=3
|
|--F17:PLAN FRAGMENT [HASH(rank(),i_category,cc_name,i_brand)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=481.42MB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1536030384] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=138140 segment-costs=[1536030384] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: rank() - 1, i_category, cc_name, i_brand
@@ -442,7 +442,7 @@ max-parallelism=138140 segment-costs=[1381352210632, 15] cpu-comparison-result=3
| F10:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
| Per-Instance Resources: mem-estimate=583.89MB mem-reservation=35.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[9250019376, 36436436] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=435 segment-costs=[9250019376, 36436436] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 30:AGGREGATE [STREAMING]
| | output: sum(cs_sales_price)
| | group by: i_category, i_brand, cc_name, d_year, d_moy
@@ -649,7 +649,7 @@ max-parallelism=7830 segment-costs=[2279256532, 1869016832, 78215835360] cpu-com
| F05:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
| Per-Instance Resources: mem-estimate=583.89MB mem-reservation=35.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[9250019376, 36436436] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=435 segment-costs=[9250019376, 36436436] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 07:AGGREGATE [STREAMING]
| | output: sum(cs_sales_price)
| | group by: i_category, i_brand, cc_name, d_year, d_moy
@@ -805,7 +805,7 @@ max-parallelism=7830 segment-costs=[2279256532, 1869016832, 78215835360] cpu-com
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
Per-Instance Resources: mem-estimate=583.89MB mem-reservation=35.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[9250019376, 36436436] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+max-parallelism=435 segment-costs=[9250019376, 36436436] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
20:AGGREGATE [STREAMING]
| output: sum(cs_sales_price)
| group by: i_category, i_brand, cc_name, d_year, d_moy
@@ -966,7 +966,7 @@ max-parallelism=138140 segment-costs=[1381352210632, 15] cpu-comparison-result=3
|
|--F17:PLAN FRAGMENT [HASH(rank(),i_category,cc_name,i_brand)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=481.42MB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1536030384] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=138140 segment-costs=[1536030384] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: rank() - 1, i_category, cc_name, i_brand
@@ -1010,7 +1010,7 @@ max-parallelism=138140 segment-costs=[1381352210632, 15] cpu-comparison-result=3
| F10:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
| Per-Instance Resources: mem-estimate=583.89MB mem-reservation=35.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[9250019376, 36436436] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=435 segment-costs=[9250019376, 36436436] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 30:AGGREGATE [STREAMING]
| | output: sum(cs_sales_price)
| | group by: i_category, i_brand, cc_name, d_year, d_moy
@@ -1217,7 +1217,7 @@ max-parallelism=7830 segment-costs=[2279256532, 1869016832, 78215835360] cpu-com
| F05:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
| Per-Instance Resources: mem-estimate=583.89MB mem-reservation=35.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[9250019376, 36436436] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=435 segment-costs=[9250019376, 36436436] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 07:AGGREGATE [STREAMING]
| | output: sum(cs_sales_price)
| | group by: i_category, i_brand, cc_name, d_year, d_moy
@@ -1373,7 +1373,7 @@ max-parallelism=7830 segment-costs=[2279256532, 1869016832, 78215835360] cpu-com
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
Per-Instance Resources: mem-estimate=583.89MB mem-reservation=35.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[9250019376, 36436436] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+max-parallelism=435 segment-costs=[9250019376, 36436436] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
20:AGGREGATE [STREAMING]
| output: sum(cs_sales_price)
| group by: i_category, i_brand, cc_name, d_year, d_moy
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q58.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q58.test
index f8a66dd69..c1b51b0fe 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q58.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q58.test
@@ -458,7 +458,7 @@ max-parallelism=10 segment-costs=[379841, 545771, 8] cpu-comparison-result=360 [
| F14:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=27.88MB mem-reservation=2.12MB thread-reservation=1
-| max-parallelism=120 segment-costs=[6593625912, 8699] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=660 segment-costs=[6593625912, 8699] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 32:AGGREGATE [STREAMING]
| | output: sum(ws_ext_sales_price)
| | group by: i_item_id
@@ -671,7 +671,7 @@ max-parallelism=10 segment-costs=[379841, 545771, 8] cpu-comparison-result=360 [
| F07:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=27.88MB mem-reservation=3.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[13096830510, 8699] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=1310 segment-costs=[13096830510, 8699] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 21:AGGREGATE [STREAMING]
| | output: sum(cs_ext_sales_price)
| | group by: i_item_id
@@ -868,7 +868,7 @@ max-parallelism=10 segment-costs=[379841, 545771, 8] cpu-comparison-result=360 [
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
Per-Instance Resources: mem-estimate=27.88MB mem-reservation=10.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[26101094864, 8699] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+max-parallelism=1824 segment-costs=[26101094864, 8699] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
10:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: i_item_id
@@ -1108,7 +1108,7 @@ max-parallelism=10 segment-costs=[379841, 545771, 8] cpu-comparison-result=360 [
| F14:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=27.88MB mem-reservation=2.12MB thread-reservation=1
-| max-parallelism=120 segment-costs=[6593625912, 8699] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=660 segment-costs=[6593625912, 8699] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 32:AGGREGATE [STREAMING]
| | output: sum(ws_ext_sales_price)
| | group by: i_item_id
@@ -1321,7 +1321,7 @@ max-parallelism=10 segment-costs=[379841, 545771, 8] cpu-comparison-result=360 [
| F07:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=27.88MB mem-reservation=3.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[13096830510, 8699] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=1310 segment-costs=[13096830510, 8699] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 21:AGGREGATE [STREAMING]
| | output: sum(cs_ext_sales_price)
| | group by: i_item_id
@@ -1518,7 +1518,7 @@ max-parallelism=10 segment-costs=[379841, 545771, 8] cpu-comparison-result=360 [
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
Per-Instance Resources: mem-estimate=27.88MB mem-reservation=10.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[26101094864, 8699] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+max-parallelism=1824 segment-costs=[26101094864, 8699] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
10:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: i_item_id
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q59.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q59.test
index 8a426b0ab..2dede7e21 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q59.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q59.test
@@ -361,7 +361,7 @@ max-parallelism=10 segment-costs=[10416118, 27] cpu-comparison-result=284 [max(1
| F05:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
| Per-Instance Resources: mem-estimate=714.25MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[86591807200, 841508] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=1824 segment-costs=[86591807200, 841508] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 11:AGGREGATE [STREAMING]
| | output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = [...]
| | group by: d_week_seq, ss_store_sk
@@ -518,7 +518,7 @@ max-parallelism=10 segment-costs=[63384540, 12594879] cpu-comparison-result=142
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=714.25MB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[86591807200, 841508] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+max-parallelism=1824 segment-costs=[86591807200, 841508] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
03:AGGREGATE [STREAMING]
| output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Sa [...]
| group by: d_week_seq, ss_store_sk
@@ -713,7 +713,7 @@ max-parallelism=10 segment-costs=[10416118, 27] cpu-comparison-result=284 [max(1
| F05:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
| Per-Instance Resources: mem-estimate=714.25MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[86591807200, 841508] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=1824 segment-costs=[86591807200, 841508] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 11:AGGREGATE [STREAMING]
| | output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = [...]
| | group by: d_week_seq, ss_store_sk
@@ -870,7 +870,7 @@ max-parallelism=10 segment-costs=[63384540, 12594879] cpu-comparison-result=142
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=714.25MB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[86591807200, 841508] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+max-parallelism=1824 segment-costs=[86591807200, 841508] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
03:AGGREGATE [STREAMING]
| output: sum(CASE WHEN (d_day_name = 'Sunday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Monday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Tuesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Wednesday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Thursday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Friday') THEN ss_sales_price ELSE NULL END), sum(CASE WHEN (d_day_name = 'Sa [...]
| group by: d_week_seq, ss_store_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q62.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q62.test
index 196c04384..7269f5a91 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q62.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q62.test
@@ -184,7 +184,7 @@ max-parallelism=10 segment-costs=[11215, 300, 10] cpu-comparison-result=120 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=4.00MB mem-reservation=4.00MB thread-reservation=0 runtime-filters-memory=4.00MB
Per-Instance Resources: mem-estimate=29.66MB mem-reservation=2.12MB thread-reservation=1
-max-parallelism=120 segment-costs=[25666142848, 127] cpu-comparison-result=120 [max(120 (self) vs 44 (sum children))]
+max-parallelism=1824 segment-costs=[25666142848, 127] cpu-comparison-result=120 [max(120 (self) vs 44 (sum children))]
09:AGGREGATE [STREAMING]
| output: sum(CAST(CASE WHEN (CAST(ws_ship_date_sk AS BIGINT) - CAST(ws_sold_date_sk AS BIGINT) <= CAST(30 AS BIGINT)) THEN CAST(1 AS TINYINT) ELSE CAST(0 AS TINYINT) END AS BIGINT)), sum(CAST(CASE WHEN (CAST(ws_ship_date_sk AS BIGINT) - CAST(ws_sold_date_sk AS BIGINT) > CAST(30 AS BIGINT)) AND (CAST(ws_ship_date_sk AS BIGINT) - CAST(ws_sold_date_sk AS BIGINT) <= CAST(60 AS BIGINT)) THEN CAST(1 AS TINYINT) ELSE CAST(0 AS TINYINT) END AS BIGINT)), sum(CAST(CASE WHEN (CAST(ws_ship_date_sk [...]
| group by: substr(w_warehouse_name, CAST(1 AS BIGINT), CAST(20 AS BIGINT)), sm_type, web_name
@@ -387,7 +387,7 @@ max-parallelism=10 segment-costs=[11215, 300, 10] cpu-comparison-result=120 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=4.00MB mem-reservation=4.00MB thread-reservation=0 runtime-filters-memory=4.00MB
Per-Instance Resources: mem-estimate=29.66MB mem-reservation=2.12MB thread-reservation=1
-max-parallelism=120 segment-costs=[25666142848, 127] cpu-comparison-result=120 [max(120 (self) vs 44 (sum children))]
+max-parallelism=1824 segment-costs=[25666142848, 127] cpu-comparison-result=120 [max(120 (self) vs 44 (sum children))]
09:AGGREGATE [STREAMING]
| output: sum(CAST(CASE WHEN (CAST(ws_ship_date_sk AS BIGINT) - CAST(ws_sold_date_sk AS BIGINT) <= CAST(30 AS BIGINT)) THEN CAST(1 AS TINYINT) ELSE CAST(0 AS TINYINT) END AS BIGINT)), sum(CAST(CASE WHEN (CAST(ws_ship_date_sk AS BIGINT) - CAST(ws_sold_date_sk AS BIGINT) > CAST(30 AS BIGINT)) AND (CAST(ws_ship_date_sk AS BIGINT) - CAST(ws_sold_date_sk AS BIGINT) <= CAST(60 AS BIGINT)) THEN CAST(1 AS TINYINT) ELSE CAST(0 AS TINYINT) END AS BIGINT)), sum(CAST(CASE WHEN (CAST(ws_ship_date_sk [...]
| group by: substr(w_warehouse_name, CAST(1 AS BIGINT), CAST(20 AS BIGINT)), sm_type, web_name
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q64.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q64.test
index 0c8dbac98..fc69ec648 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q64.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q64.test
@@ -916,7 +916,7 @@ max-parallelism=720 segment-costs=[7157397120, 285947776] cpu-comparison-result=
|
|--F54:PLAN FRAGMENT [HASH(i_item_sk,s_store_name,s_zip)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=2.17GB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[2837428864] cpu-comparison-result=508 [max(120 (self) vs 508 (sum children))]
+| | max-parallelism=720 segment-costs=[2837428864] cpu-comparison-result=508 [max(120 (self) vs 508 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: i_item_sk, s_store_name, s_zip
@@ -1011,7 +1011,7 @@ max-parallelism=720 segment-costs=[7157397120, 285947776] cpu-comparison-result=
| | |
| | |--F56:PLAN FRAGMENT [HASH(cs_item_sk,cs_order_number)] hosts=10 instances=120
| | | | Per-Instance Resources: mem-estimate=195.35MB mem-reservation=34.00MB thread-reservation=1
-| | | | max-parallelism=120 segment-costs=[875846949]
+| | | | max-parallelism=1580 segment-costs=[875846949]
| | | JOIN BUILD
| | | | join-table-id=02 plan-id=03 cohort-id=03
| | | | build expressions: cr_item_sk, cr_order_number
@@ -1137,7 +1137,7 @@ max-parallelism=720 segment-costs=[7157397120, 285947776] cpu-comparison-result=
| |
| |--F59:PLAN FRAGMENT [HASH(c_current_addr_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=27.80MB mem-reservation=17.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[16194677]
+| | | max-parallelism=1660 segment-costs=[16194677]
| | JOIN BUILD
| | | join-table-id=05 plan-id=06 cohort-id=02
| | | build expressions: ad2.ca_address_sk
@@ -1764,7 +1764,7 @@ max-parallelism=1660 segment-costs=[16507498321, 245448064] cpu-comparison-resul
| |
| |--F74:PLAN FRAGMENT [HASH(cs_item_sk,cs_order_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=212.35MB mem-reservation=51.00MB thread-reservation=1 runtime-filters-memory=17.00MB
-| | | max-parallelism=120 segment-costs=[875846949]
+| | | max-parallelism=1580 segment-costs=[875846949]
| | JOIN BUILD
| | | join-table-id=20 plan-id=21 cohort-id=05
| | | build expressions: cr_item_sk, cr_order_number
@@ -1892,7 +1892,7 @@ max-parallelism=1660 segment-costs=[16507498321, 245448064] cpu-comparison-resul
|
|--F77:PLAN FRAGMENT [HASH(c_current_addr_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=27.80MB mem-reservation=17.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[16194677]
+| | max-parallelism=1660 segment-costs=[16194677]
| JOIN BUILD
| | join-table-id=23 plan-id=24 cohort-id=01
| | build expressions: ad2.ca_address_sk
@@ -2467,7 +2467,7 @@ max-parallelism=720 segment-costs=[7157397120, 285947776] cpu-comparison-result=
|
|--F54:PLAN FRAGMENT [HASH(i_item_sk,s_store_name,s_zip)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=2.17GB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[2837428864] cpu-comparison-result=508 [max(120 (self) vs 508 (sum children))]
+| | max-parallelism=720 segment-costs=[2837428864] cpu-comparison-result=508 [max(120 (self) vs 508 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: i_item_sk, s_store_name, s_zip
@@ -2562,7 +2562,7 @@ max-parallelism=720 segment-costs=[7157397120, 285947776] cpu-comparison-result=
| | |
| | |--F56:PLAN FRAGMENT [HASH(cs_item_sk,cs_order_number)] hosts=10 instances=120
| | | | Per-Instance Resources: mem-estimate=195.35MB mem-reservation=34.00MB thread-reservation=1
-| | | | max-parallelism=120 segment-costs=[875846949]
+| | | | max-parallelism=1580 segment-costs=[875846949]
| | | JOIN BUILD
| | | | join-table-id=02 plan-id=03 cohort-id=03
| | | | build expressions: cr_item_sk, cr_order_number
@@ -2688,7 +2688,7 @@ max-parallelism=720 segment-costs=[7157397120, 285947776] cpu-comparison-result=
| |
| |--F59:PLAN FRAGMENT [HASH(c_current_addr_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=27.80MB mem-reservation=17.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[16194677]
+| | | max-parallelism=1660 segment-costs=[16194677]
| | JOIN BUILD
| | | join-table-id=05 plan-id=06 cohort-id=02
| | | build expressions: ad2.ca_address_sk
@@ -3315,7 +3315,7 @@ max-parallelism=1660 segment-costs=[16507498321, 245448064] cpu-comparison-resul
| |
| |--F74:PLAN FRAGMENT [HASH(cs_item_sk,cs_order_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=212.35MB mem-reservation=51.00MB thread-reservation=1 runtime-filters-memory=17.00MB
-| | | max-parallelism=120 segment-costs=[875846949]
+| | | max-parallelism=1580 segment-costs=[875846949]
| | JOIN BUILD
| | | join-table-id=20 plan-id=21 cohort-id=05
| | | build expressions: cr_item_sk, cr_order_number
@@ -3443,7 +3443,7 @@ max-parallelism=1660 segment-costs=[16507498321, 245448064] cpu-comparison-resul
|
|--F77:PLAN FRAGMENT [HASH(c_current_addr_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=27.80MB mem-reservation=17.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[16194677]
+| | max-parallelism=1660 segment-costs=[16194677]
| JOIN BUILD
| | join-table-id=23 plan-id=24 cohort-id=01
| | build expressions: ad2.ca_address_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q65.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q65.test
index 00fc063a3..f26c1d930 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q65.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q65.test
@@ -265,7 +265,7 @@ max-parallelism=80 segment-costs=[712023759, 705357736, 19] cpu-comparison-resul
| F05:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=1.18GB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[34785941968, 6431183] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=1824 segment-costs=[34785941968, 6431183] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 05:AGGREGATE [STREAMING]
| | output: sum(ss_sales_price)
| | group by: ss_store_sk, ss_item_sk
@@ -410,7 +410,7 @@ max-parallelism=80 segment-costs=[712023759, 705357736, 19] cpu-comparison-resul
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=4.00MB mem-reservation=4.00MB thread-reservation=0 runtime-filters-memory=4.00MB
Per-Instance Resources: mem-estimate=1.18GB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[34785941968, 6431183] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+max-parallelism=1824 segment-costs=[34785941968, 6431183] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
10:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: ss_store_sk, ss_item_sk
@@ -556,7 +556,7 @@ max-parallelism=80 segment-costs=[712023759, 705357736, 19] cpu-comparison-resul
| F05:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=1.18GB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[34785941968, 6431183] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=1824 segment-costs=[34785941968, 6431183] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 05:AGGREGATE [STREAMING]
| | output: sum(ss_sales_price)
| | group by: ss_store_sk, ss_item_sk
@@ -701,7 +701,7 @@ max-parallelism=80 segment-costs=[712023759, 705357736, 19] cpu-comparison-resul
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=4.00MB mem-reservation=4.00MB thread-reservation=0 runtime-filters-memory=4.00MB
Per-Instance Resources: mem-estimate=1.18GB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[34785941968, 6431183] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+max-parallelism=1824 segment-costs=[34785941968, 6431183] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
10:AGGREGATE [STREAMING]
| output: sum(ss_sales_price)
| group by: ss_store_sk, ss_item_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q67.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q67.test
index d72eb26d1..3326d1349 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q67.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q67.test
@@ -300,7 +300,7 @@ max-parallelism=43740 segment-costs=[437394584891, 431787704320, 400, 19] cpu-co
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
Per-Instance Resources: mem-estimate=17.30GB mem-reservation=219.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[725651763392, 48785661952] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+max-parallelism=1824 segment-costs=[725651763392, 48785661952] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
07:AGGREGATE [STREAMING]
| Class 0
| output: sum(coalesce(ss_sales_price * CAST(ss_quantity AS DECIMAL(10,0)), CAST(0 AS DECIMAL(18,2))))
@@ -563,7 +563,7 @@ max-parallelism=43740 segment-costs=[437394584891, 431787704320, 400, 19] cpu-co
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=3.00MB mem-reservation=3.00MB thread-reservation=0 runtime-filters-memory=3.00MB
Per-Instance Resources: mem-estimate=17.30GB mem-reservation=219.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[725651763392, 48785661952] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+max-parallelism=1824 segment-costs=[725651763392, 48785661952] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
07:AGGREGATE [STREAMING]
| Class 0
| output: sum(coalesce(ss_sales_price * CAST(ss_quantity AS DECIMAL(10,0)), CAST(0 AS DECIMAL(18,2))))
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q70.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q70.test
index bfaac7c0a..e1dff6e82 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q70.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q70.test
@@ -307,7 +307,7 @@ max-parallelism=10 segment-costs=[4292, 8184, 67] cpu-comparison-result=142 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=51.86MB mem-reservation=14.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[103871678176, 200] cpu-comparison-result=142 [max(120 (self) vs 142 (sum children))]
+max-parallelism=1824 segment-costs=[103871678176, 200] cpu-comparison-result=142 [max(120 (self) vs 142 (sum children))]
15:AGGREGATE [STREAMING]
| Class 0
| output: sum(ss_net_profit)
@@ -385,7 +385,7 @@ max-parallelism=120 segment-costs=[103871678176, 200] cpu-comparison-result=142
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
| Per-Instance Resources: mem-estimate=27.33MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[34752191200, 1] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
+| max-parallelism=1824 segment-costs=[34752191200, 1] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
| 08:AGGREGATE [STREAMING]
| | output: sum(ss_net_profit)
| | group by: s_state
@@ -642,7 +642,7 @@ max-parallelism=10 segment-costs=[4292, 8184, 67] cpu-comparison-result=142 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=51.86MB mem-reservation=14.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[103871678176, 200] cpu-comparison-result=142 [max(120 (self) vs 142 (sum children))]
+max-parallelism=1824 segment-costs=[103871678176, 200] cpu-comparison-result=142 [max(120 (self) vs 142 (sum children))]
15:AGGREGATE [STREAMING]
| Class 0
| output: sum(ss_net_profit)
@@ -720,7 +720,7 @@ max-parallelism=120 segment-costs=[103871678176, 200] cpu-comparison-result=142
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
| Per-Instance Resources: mem-estimate=27.33MB mem-reservation=10.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[34752191200, 1] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
+| max-parallelism=1824 segment-costs=[34752191200, 1] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
| 08:AGGREGATE [STREAMING]
| | output: sum(ss_net_profit)
| | group by: s_state
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q72.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q72.test
index 2b9022ea0..f54e10465 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q72.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q72.test
@@ -420,7 +420,7 @@ max-parallelism=556900 segment-costs=[5568985430776, 9996825600] cpu-comparison-
|
|--F17:PLAN FRAGMENT [HASH(cs_item_sk,d2.d_date_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=467.89MB mem-reservation=36.00MB thread-reservation=1 runtime-filters-memory=2.00MB
-| | max-parallelism=120 segment-costs=[2087306718]
+| | max-parallelism=556900 segment-costs=[2087306718]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: inv_item_sk, inv_date_sk
@@ -857,7 +857,7 @@ max-parallelism=556900 segment-costs=[5568985430776, 9996825600] cpu-comparison-
|
|--F17:PLAN FRAGMENT [HASH(cs_item_sk,d2.d_date_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=467.89MB mem-reservation=36.00MB thread-reservation=1 runtime-filters-memory=2.00MB
-| | max-parallelism=120 segment-costs=[2087306718]
+| | max-parallelism=556900 segment-costs=[2087306718]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: inv_item_sk, inv_date_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q74.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q74.test
index d20d42d17..ce54b9729 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q74.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q74.test
@@ -446,7 +446,7 @@ max-parallelism=120 segment-costs=[8229827352, 25431513260, 7] cpu-comparison-re
| |
| |--F24:PLAN FRAGMENT [HASH(ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=60.70MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[32108421]
+| | | max-parallelism=250 segment-costs=[32108421]
| | JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: c_customer_sk
@@ -576,7 +576,7 @@ max-parallelism=120 segment-costs=[8229827352, 25431513260, 7] cpu-comparison-re
| F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| Per-Instance Resources: mem-estimate=863.35MB mem-reservation=42.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[11682566112, 120323864] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| max-parallelism=374 segment-costs=[11682566112, 120323864] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| 06:AGGREGATE [STREAMING]
| | output: max(ss_net_paid)
| | group by: c_customer_id, c_first_name, c_last_name, d_year
@@ -733,7 +733,7 @@ max-parallelism=120 segment-costs=[8229827352, 25431513260, 7] cpu-comparison-re
| |
| |--F30:PLAN FRAGMENT [HASH(ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=60.70MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[32108421]
+| | | max-parallelism=250 segment-costs=[32108421]
| | JOIN BUILD
| | | join-table-id=07 plan-id=08 cohort-id=04
| | | build expressions: c_customer_sk
@@ -839,7 +839,7 @@ max-parallelism=120 segment-costs=[8229827352, 25431513260, 7] cpu-comparison-re
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
Per-Instance Resources: mem-estimate=863.35MB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[11682566112, 120323864] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+max-parallelism=374 segment-costs=[11682566112, 120323864] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
13:AGGREGATE [STREAMING]
| output: max(ss_net_paid)
| group by: c_customer_id, c_first_name, c_last_name, d_year
@@ -1022,7 +1022,7 @@ max-parallelism=120 segment-costs=[8229827352, 25431513260, 7] cpu-comparison-re
| |
| |--F26:PLAN FRAGMENT [HASH(ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=60.70MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[32108421]
+| | | max-parallelism=250 segment-costs=[32108421]
| | JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: c_customer_sk
@@ -1169,7 +1169,7 @@ max-parallelism=120 segment-costs=[8229827352, 25431513260, 7] cpu-comparison-re
| |
| |--F29:PLAN FRAGMENT [HASH(ss_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=60.70MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[32108421]
+| | | max-parallelism=1000 segment-costs=[32108421]
| | JOIN BUILD
| | | join-table-id=04 plan-id=05 cohort-id=03
| | | build expressions: c_customer_sk
@@ -1203,7 +1203,7 @@ max-parallelism=120 segment-costs=[8229827352, 25431513260, 7] cpu-comparison-re
| F12:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| Per-Instance Resources: mem-estimate=29.12MB mem-reservation=8.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[1854545548]
+| max-parallelism=190 segment-costs=[1854545548]
| 04:HASH JOIN [INNER JOIN, BROADCAST]
| | hash-table-id=05
| | hash predicates: ss_sold_date_sk = d_date_sk
@@ -1317,7 +1317,7 @@ max-parallelism=120 segment-costs=[8229827352, 25431513260, 7] cpu-comparison-re
| |
| |--F32:PLAN FRAGMENT [HASH(ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=60.70MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[32108421]
+| | | max-parallelism=250 segment-costs=[32108421]
| | JOIN BUILD
| | | join-table-id=07 plan-id=08 cohort-id=04
| | | build expressions: c_customer_sk
@@ -1440,7 +1440,7 @@ max-parallelism=1000 segment-costs=[9924644012, 120323864] cpu-comparison-result
|
|--F34:PLAN FRAGMENT [HASH(ss_customer_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=60.70MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | max-parallelism=120 segment-costs=[32108421]
+| | max-parallelism=1000 segment-costs=[32108421]
| JOIN BUILD
| | join-table-id=09 plan-id=10 cohort-id=01
| | build expressions: c_customer_sk
@@ -1475,7 +1475,7 @@ max-parallelism=1000 segment-costs=[9924644012, 120323864] cpu-comparison-result
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
Per-Instance Resources: mem-estimate=29.12MB mem-reservation=8.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[1854545548]
+max-parallelism=190 segment-costs=[1854545548]
11:HASH JOIN [INNER JOIN, BROADCAST]
| hash-table-id=10
| hash predicates: ss_sold_date_sk = d_date_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q75.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q75.test
index aecef4836..cb0d086ee 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q75.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q75.test
@@ -830,7 +830,7 @@ max-parallelism=10 segment-costs=[6359079, 8] cpu-comparison-result=700 [max(10
| | | F24:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | | Per-Instance Resources: mem-estimate=22.40MB mem-reservation=8.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[2030835613]
+| | | max-parallelism=210 segment-costs=[2030835613]
| | | 37:HASH JOIN [INNER JOIN, BROADCAST]
| | | | hash-table-id=05
| | | | hash predicates: ss_sold_date_sk = d_date_sk
@@ -1287,7 +1287,7 @@ max-parallelism=20 segment-costs=[11682782269, 10827281] cpu-comparison-result=3
| | F06:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=22.40MB mem-reservation=8.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[2030835613]
+| | max-parallelism=210 segment-costs=[2030835613]
| | 13:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash-table-id=14
| | | hash predicates: ss_sold_date_sk = d_date_sk
@@ -1788,7 +1788,7 @@ max-parallelism=10 segment-costs=[6359079, 8] cpu-comparison-result=700 [max(10
| | | F24:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | | Per-Instance Resources: mem-estimate=22.40MB mem-reservation=8.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[2030835613]
+| | | max-parallelism=210 segment-costs=[2030835613]
| | | 37:HASH JOIN [INNER JOIN, BROADCAST]
| | | | hash-table-id=05
| | | | hash predicates: ss_sold_date_sk = d_date_sk
@@ -2245,7 +2245,7 @@ max-parallelism=20 segment-costs=[11682782269, 10827281] cpu-comparison-result=3
| | F06:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=22.40MB mem-reservation=8.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[2030835613]
+| | max-parallelism=210 segment-costs=[2030835613]
| | 13:HASH JOIN [INNER JOIN, BROADCAST]
| | | hash-table-id=14
| | | hash predicates: ss_sold_date_sk = d_date_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q76.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q76.test
index 9cef1d36e..17c3788c0 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q76.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q76.test
@@ -412,7 +412,7 @@ max-parallelism=120 segment-costs=[24435663828, 5369] cpu-comparison-result=240
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
| Per-Instance Resources: mem-estimate=25.38MB mem-reservation=128.00KB thread-reservation=1
-| max-parallelism=120 segment-costs=[2284928041]
+| max-parallelism=230 segment-costs=[2284928041]
| 06:SCAN HDFS [tpcds_partitioned_parquet_snap.web_sales, RANDOM]
| HDFS partitions=1824/1824 files=1824 size=84.18MB
| predicates: ws_ship_hdemo_sk IS NULL
@@ -731,7 +731,7 @@ max-parallelism=120 segment-costs=[24435138014, 5369] cpu-comparison-result=250
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
| Per-Instance Resources: mem-estimate=16.78MB mem-reservation=128.00KB thread-reservation=1
-| max-parallelism=120 segment-costs=[2284928041]
+| max-parallelism=230 segment-costs=[2284928041]
| 06:SCAN HDFS [tpcds_partitioned_parquet_snap.web_sales, RANDOM]
| HDFS partitions=1824/1824 files=1824 size=84.18MB
| predicates: ws_ship_hdemo_sk IS NULL
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q77.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q77.test
index 54ad7b7bc..020034ba5 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q77.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q77.test
@@ -692,7 +692,7 @@ max-parallelism=120 segment-costs=[4009, 146, 10941, 221609, 1440] cpu-compariso
| F14:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
| Per-Instance Resources: mem-estimate=44.75MB mem-reservation=2.12MB thread-reservation=1
-| max-parallelism=120 segment-costs=[10741940992, 141] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
+| max-parallelism=1080 segment-costs=[10741940992, 141] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
| 28:AGGREGATE [STREAMING]
| | output: sum(ws_ext_sales_price), sum(ws_net_profit)
| | group by: wp_web_page_sk
@@ -821,7 +821,7 @@ max-parallelism=120 segment-costs=[4009, 146, 10941, 221609, 1440] cpu-compariso
| | F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=27.56MB mem-reservation=2.03MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1837818200, 2] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| | max-parallelism=190 segment-costs=[1837818200, 2] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| | 21:AGGREGATE [STREAMING]
| | | output: sum(cr_return_amount), sum(cr_net_loss)
| | | group by: cr_call_center_sk
@@ -894,7 +894,7 @@ max-parallelism=120 segment-costs=[4009, 146, 10941, 221609, 1440] cpu-compariso
| F08:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=44.75MB mem-reservation=3.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[17439362496, 2] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=1750 segment-costs=[17439362496, 2] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 17:AGGREGATE [STREAMING]
| | output: sum(cs_ext_sales_price), sum(cs_net_profit)
| | group by: cs_call_center_sk
@@ -983,7 +983,7 @@ max-parallelism=120 segment-costs=[4009, 146, 10941, 221609, 1440] cpu-compariso
| F04:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
| Per-Instance Resources: mem-estimate=44.75MB mem-reservation=2.50MB thread-reservation=1
-| max-parallelism=120 segment-costs=[4433642728, 52] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
+| max-parallelism=450 segment-costs=[4433642728, 52] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
| 12:AGGREGATE [STREAMING]
| | output: sum(sr_return_amt), sum(sr_net_loss)
| | group by: s_store_sk
@@ -1091,7 +1091,7 @@ max-parallelism=120 segment-costs=[4009, 146, 10941, 221609, 1440] cpu-compariso
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=44.75MB mem-reservation=10.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[43425877456, 52] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
+max-parallelism=1824 segment-costs=[43425877456, 52] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
06:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price), sum(ss_net_profit)
| group by: s_store_sk
@@ -1396,7 +1396,7 @@ max-parallelism=120 segment-costs=[4009, 146, 10941, 221609, 1440] cpu-compariso
| F14:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
| Per-Instance Resources: mem-estimate=44.75MB mem-reservation=2.12MB thread-reservation=1
-| max-parallelism=120 segment-costs=[10741940992, 141] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
+| max-parallelism=1080 segment-costs=[10741940992, 141] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
| 28:AGGREGATE [STREAMING]
| | output: sum(ws_ext_sales_price), sum(ws_net_profit)
| | group by: wp_web_page_sk
@@ -1525,7 +1525,7 @@ max-parallelism=120 segment-costs=[4009, 146, 10941, 221609, 1440] cpu-compariso
| | F11:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=27.56MB mem-reservation=2.03MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1837818200, 2] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| | max-parallelism=190 segment-costs=[1837818200, 2] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| | 21:AGGREGATE [STREAMING]
| | | output: sum(cr_return_amount), sum(cr_net_loss)
| | | group by: cr_call_center_sk
@@ -1598,7 +1598,7 @@ max-parallelism=120 segment-costs=[4009, 146, 10941, 221609, 1440] cpu-compariso
| F08:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=44.75MB mem-reservation=3.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[17439362496, 2] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=1750 segment-costs=[17439362496, 2] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 17:AGGREGATE [STREAMING]
| | output: sum(cs_ext_sales_price), sum(cs_net_profit)
| | group by: cs_call_center_sk
@@ -1687,7 +1687,7 @@ max-parallelism=120 segment-costs=[4009, 146, 10941, 221609, 1440] cpu-compariso
| F04:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
| Per-Instance Resources: mem-estimate=44.75MB mem-reservation=2.50MB thread-reservation=1
-| max-parallelism=120 segment-costs=[4433642728, 52] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
+| max-parallelism=450 segment-costs=[4433642728, 52] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
| 12:AGGREGATE [STREAMING]
| | output: sum(sr_return_amt), sum(sr_net_loss)
| | group by: s_store_sk
@@ -1795,7 +1795,7 @@ max-parallelism=120 segment-costs=[4009, 146, 10941, 221609, 1440] cpu-compariso
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=44.75MB mem-reservation=10.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[43425877456, 52] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
+max-parallelism=1824 segment-costs=[43425877456, 52] cpu-comparison-result=120 [max(120 (self) vs 22 (sum children))]
06:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price), sum(ss_net_profit)
| group by: s_store_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q78.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q78.test
index 3541ac47f..3f9f296c5 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q78.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q78.test
@@ -310,7 +310,7 @@ max-parallelism=540 segment-costs=[5328485636, 2640179688, 11] cpu-comparison-re
|
|--F13:PLAN FRAGMENT [HASH(d_year,cs_item_sk,cs_bill_customer_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=46.12MB mem-reservation=23.00MB thread-reservation=1 runtime-filters-memory=6.00MB
-| | max-parallelism=120 segment-costs=[28029254] cpu-comparison-result=240 [max(120 (self) vs 240 (sum children))]
+| | max-parallelism=540 segment-costs=[28029254] cpu-comparison-result=240 [max(120 (self) vs 240 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: d_year, ss_customer_sk, ss_item_sk
@@ -335,7 +335,7 @@ max-parallelism=540 segment-costs=[5328485636, 2640179688, 11] cpu-comparison-re
| |
| |--F14:PLAN FRAGMENT [HASH(d_year,ws_item_sk,ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=31.06MB mem-reservation=14.50MB thread-reservation=1 runtime-filters-memory=6.00MB
-| | | max-parallelism=120 segment-costs=[27536277] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | | max-parallelism=270 segment-costs=[27536277] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| | JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: d_year, ss_customer_sk, ss_item_sk
@@ -366,7 +366,7 @@ max-parallelism=540 segment-costs=[5328485636, 2640179688, 11] cpu-comparison-re
| | F08:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| | Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| | Per-Instance Resources: mem-estimate=716.24MB mem-reservation=42.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[15975372088, 96623448] cpu-comparison-result=120 [max(120 (self) vs 41 (sum children))]
+| | max-parallelism=374 segment-costs=[15975372088, 96623448] cpu-comparison-result=120 [max(120 (self) vs 41 (sum children))]
| | 05:AGGREGATE [STREAMING]
| | | output: sum(CAST(ss_quantity AS BIGINT)), sum(ss_wholesale_cost), sum(ss_sales_price)
| | | group by: d_year, ss_item_sk, ss_customer_sk
@@ -475,7 +475,7 @@ max-parallelism=540 segment-costs=[5328485636, 2640179688, 11] cpu-comparison-re
| F04:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=6.00MB mem-reservation=6.00MB thread-reservation=0 runtime-filters-memory=6.00MB
| Per-Instance Resources: mem-estimate=210.75MB mem-reservation=34.12MB thread-reservation=1
-| max-parallelism=120 segment-costs=[4007839024, 24155686] cpu-comparison-result=120 [max(120 (self) vs 41 (sum children))]
+| max-parallelism=374 segment-costs=[4007839024, 24155686] cpu-comparison-result=120 [max(120 (self) vs 41 (sum children))]
| 11:AGGREGATE [STREAMING]
| | output: sum(CAST(ws_quantity AS BIGINT)), sum(ws_wholesale_cost), sum(ws_sales_price)
| | group by: d_year, ws_item_sk, ws_bill_customer_sk
@@ -588,7 +588,7 @@ max-parallelism=540 segment-costs=[5328485636, 2640179688, 11] cpu-comparison-re
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=6.00MB mem-reservation=6.00MB thread-reservation=0 runtime-filters-memory=6.00MB
Per-Instance Resources: mem-estimate=377.97MB mem-reservation=35.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[7966737988, 48128260] cpu-comparison-result=120 [max(120 (self) vs 41 (sum children))]
+max-parallelism=374 segment-costs=[7966737988, 48128260] cpu-comparison-result=120 [max(120 (self) vs 41 (sum children))]
17:AGGREGATE [STREAMING]
| output: sum(CAST(cs_quantity AS BIGINT)), sum(cs_wholesale_cost), sum(cs_sales_price)
| group by: d_year, cs_item_sk, cs_bill_customer_sk
@@ -723,7 +723,7 @@ max-parallelism=540 segment-costs=[5328485636, 2640179688, 11] cpu-comparison-re
|
|--F16:PLAN FRAGMENT [HASH(d_year,cs_item_sk,cs_bill_customer_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=46.12MB mem-reservation=23.00MB thread-reservation=1 runtime-filters-memory=6.00MB
-| | max-parallelism=120 segment-costs=[28029254] cpu-comparison-result=302 [max(120 (self) vs 302 (sum children))]
+| | max-parallelism=540 segment-costs=[28029254] cpu-comparison-result=302 [max(120 (self) vs 302 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: d_year, ss_customer_sk, ss_item_sk
@@ -748,7 +748,7 @@ max-parallelism=540 segment-costs=[5328485636, 2640179688, 11] cpu-comparison-re
| |
| |--F17:PLAN FRAGMENT [HASH(d_year,ws_item_sk,ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=31.06MB mem-reservation=14.50MB thread-reservation=1 runtime-filters-memory=6.00MB
-| | | max-parallelism=120 segment-costs=[27536277] cpu-comparison-result=151 [max(120 (self) vs 151 (sum children))]
+| | | max-parallelism=270 segment-costs=[27536277] cpu-comparison-result=151 [max(120 (self) vs 151 (sum children))]
| | JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: d_year, ss_customer_sk, ss_item_sk
@@ -835,7 +835,7 @@ max-parallelism=540 segment-costs=[5328485636, 2640179688, 11] cpu-comparison-re
| | |
| | |--F19:PLAN FRAGMENT [HASH(ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | | | Per-Instance Resources: mem-estimate=297.51MB mem-reservation=34.00MB thread-reservation=1
-| | | | max-parallelism=120 segment-costs=[1741477038]
+| | | | max-parallelism=1600 segment-costs=[1741477038]
| | | JOIN BUILD
| | | | join-table-id=03 plan-id=04 cohort-id=03
| | | | build expressions: sr_item_sk, sr_ticket_number
@@ -954,7 +954,7 @@ max-parallelism=540 segment-costs=[5328485636, 2640179688, 11] cpu-comparison-re
| |
| |--F21:PLAN FRAGMENT [HASH(ws_item_sk,ws_order_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=82.11MB mem-reservation=34.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[435380418]
+| | | max-parallelism=400 segment-costs=[435380418]
| | JOIN BUILD
| | | join-table-id=05 plan-id=06 cohort-id=02
| | | build expressions: wr_item_sk, wr_order_number
@@ -1075,7 +1075,7 @@ max-parallelism=800 segment-costs=[7951475722, 48128260] cpu-comparison-result=1
|
|--F23:PLAN FRAGMENT [HASH(cs_item_sk,cs_order_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=153.91MB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[870784250]
+| | max-parallelism=800 segment-costs=[870784250]
| JOIN BUILD
| | join-table-id=07 plan-id=08 cohort-id=01
| | build expressions: cr_item_sk, cr_order_number
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q80.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q80.test
index 43b56469a..c194fd8d0 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q80.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q80.test
@@ -745,7 +745,7 @@ max-parallelism=120 segment-costs=[2765, 146813, 135, 1101330, 8175] cpu-compari
| |
| |--F41:PLAN FRAGMENT [HASH(ws_item_sk,ws_order_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=96.00MB mem-reservation=34.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[437067939]
+| | | max-parallelism=220 segment-costs=[437067939]
| | JOIN BUILD
| | | join-table-id=14 plan-id=15 cohort-id=03
| | | build expressions: wr_item_sk, wr_order_number
@@ -973,7 +973,7 @@ max-parallelism=120 segment-costs=[2765, 146813, 135, 1101330, 8175] cpu-compari
| |
| |--F36:PLAN FRAGMENT [HASH(cs_item_sk,cs_order_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=181.54MB mem-reservation=34.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[874159382]
+| | | max-parallelism=440 segment-costs=[874159382]
| | JOIN BUILD
| | | join-table-id=09 plan-id=10 cohort-id=02
| | | build expressions: cr_item_sk, cr_order_number
@@ -1202,7 +1202,7 @@ max-parallelism=870 segment-costs=[8605527592, 53] cpu-comparison-result=187 [ma
|
|--F31:PLAN FRAGMENT [HASH(ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=352.60MB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1748226948]
+| | max-parallelism=870 segment-costs=[1748226948]
| JOIN BUILD
| | join-table-id=04 plan-id=05 cohort-id=01
| | build expressions: sr_item_sk, sr_ticket_number
@@ -1503,7 +1503,7 @@ max-parallelism=120 segment-costs=[2765, 146813, 135, 1101330, 8175] cpu-compari
| |
| |--F41:PLAN FRAGMENT [HASH(ws_item_sk,ws_order_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=96.00MB mem-reservation=34.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[437067939]
+| | | max-parallelism=220 segment-costs=[437067939]
| | JOIN BUILD
| | | join-table-id=14 plan-id=15 cohort-id=03
| | | build expressions: wr_item_sk, wr_order_number
@@ -1731,7 +1731,7 @@ max-parallelism=120 segment-costs=[2765, 146813, 135, 1101330, 8175] cpu-compari
| |
| |--F36:PLAN FRAGMENT [HASH(cs_item_sk,cs_order_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=181.54MB mem-reservation=34.00MB thread-reservation=1
-| | | max-parallelism=120 segment-costs=[874159382]
+| | | max-parallelism=440 segment-costs=[874159382]
| | JOIN BUILD
| | | join-table-id=09 plan-id=10 cohort-id=02
| | | build expressions: cr_item_sk, cr_order_number
@@ -1960,7 +1960,7 @@ max-parallelism=870 segment-costs=[8605527592, 53] cpu-comparison-result=187 [ma
|
|--F31:PLAN FRAGMENT [HASH(ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=352.60MB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1748226948]
+| | max-parallelism=870 segment-costs=[1748226948]
| JOIN BUILD
| | join-table-id=04 plan-id=05 cohort-id=01
| | build expressions: sr_item_sk, sr_ticket_number
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q82.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q82.test
index 3bde6ddf4..2e3f7d1ba 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q82.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q82.test
@@ -209,7 +209,7 @@ max-parallelism=1320 segment-costs=[13125921748, 475716832] cpu-comparison-resul
|
|--F08:PLAN FRAGMENT [HASH(i_item_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=61.43MB mem-reservation=35.00MB thread-reservation=1 runtime-filters-memory=1.00MB
-| | max-parallelism=120 segment-costs=[104970938]
+| | max-parallelism=1320 segment-costs=[104970938]
| JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: inv_item_sk
@@ -224,7 +224,7 @@ max-parallelism=1320 segment-costs=[13125921748, 475716832] cpu-comparison-resul
| F02:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=23.50MB mem-reservation=256.00KB thread-reservation=1
-| max-parallelism=120 segment-costs=[2093896922]
+| max-parallelism=210 segment-costs=[2093896922]
| 01:SCAN HDFS [tpcds_partitioned_parquet_snap.inventory, RANDOM]
| HDFS partitions=261/261 files=261 size=44.10MB
| predicates: inv_quantity_on_hand <= CAST(500 AS INT), inv_quantity_on_hand >= CAST(100 AS INT)
@@ -394,7 +394,7 @@ max-parallelism=1320 segment-costs=[13125921748, 475716832] cpu-comparison-resul
|
|--F08:PLAN FRAGMENT [HASH(i_item_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=61.43MB mem-reservation=35.00MB thread-reservation=1 runtime-filters-memory=1.00MB
-| | max-parallelism=120 segment-costs=[104970938]
+| | max-parallelism=1320 segment-costs=[104970938]
| JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: inv_item_sk
@@ -409,7 +409,7 @@ max-parallelism=1320 segment-costs=[13125921748, 475716832] cpu-comparison-resul
| F02:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=23.50MB mem-reservation=256.00KB thread-reservation=1
-| max-parallelism=120 segment-costs=[2093896922]
+| max-parallelism=210 segment-costs=[2093896922]
| 01:SCAN HDFS [tpcds_partitioned_parquet_snap.inventory, RANDOM]
| HDFS partitions=261/261 files=261 size=44.10MB
| predicates: inv_quantity_on_hand <= CAST(500 AS INT), inv_quantity_on_hand >= CAST(100 AS INT)
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q83.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q83.test
index 5b729f05f..156f76ec8 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q83.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q83.test
@@ -436,7 +436,7 @@ max-parallelism=10 segment-costs=[378391, 316268, 6] cpu-comparison-result=320 [
| F12:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=27.56MB mem-reservation=2.03MB thread-reservation=1
-| max-parallelism=120 segment-costs=[1403735046, 5256] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=150 segment-costs=[1403735046, 5256] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 19:AGGREGATE [STREAMING]
| | output: sum(CAST(cr_return_quantity AS BIGINT))
| | group by: i_item_id
@@ -812,7 +812,7 @@ max-parallelism=10 segment-costs=[378391, 316268, 6] cpu-comparison-result=320 [
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
Per-Instance Resources: mem-estimate=27.56MB mem-reservation=2.50MB thread-reservation=1
-max-parallelism=120 segment-costs=[2701533578, 7249] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+max-parallelism=280 segment-costs=[2701533578, 7249] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
09:AGGREGATE [STREAMING]
| output: sum(CAST(sr_return_quantity AS BIGINT))
| group by: i_item_id
@@ -1035,7 +1035,7 @@ max-parallelism=10 segment-costs=[378391, 316268, 6] cpu-comparison-result=320 [
| F12:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=27.56MB mem-reservation=2.03MB thread-reservation=1
-| max-parallelism=120 segment-costs=[1403735046, 5256] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+| max-parallelism=150 segment-costs=[1403735046, 5256] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
| 19:AGGREGATE [STREAMING]
| | output: sum(CAST(cr_return_quantity AS BIGINT))
| | group by: i_item_id
@@ -1411,7 +1411,7 @@ max-parallelism=10 segment-costs=[378391, 316268, 6] cpu-comparison-result=320 [
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
Per-Instance Resources: mem-estimate=27.56MB mem-reservation=2.50MB thread-reservation=1
-max-parallelism=120 segment-costs=[2701533578, 7249] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
+max-parallelism=280 segment-costs=[2701533578, 7249] cpu-comparison-result=120 [max(120 (self) vs 36 (sum children))]
09:AGGREGATE [STREAMING]
| output: sum(CAST(sr_return_quantity AS BIGINT))
| group by: i_item_id
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q84.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q84.test
index 6dc71ea7a..e302b9c96 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q84.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q84.test
@@ -295,7 +295,7 @@ max-parallelism=1410 segment-costs=[14062042891, 7] cpu-comparison-result=220 [m
|
|--F11:PLAN FRAGMENT [HASH(cd_demo_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=45.78MB mem-reservation=35.00MB thread-reservation=1 runtime-filters-memory=1.00MB
-| | max-parallelism=120 segment-costs=[32342796]
+| | max-parallelism=1410 segment-costs=[32342796]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: c_current_cdemo_sk
@@ -528,7 +528,7 @@ max-parallelism=1410 segment-costs=[14062042891, 7] cpu-comparison-result=220 [m
|
|--F11:PLAN FRAGMENT [HASH(cd_demo_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=45.78MB mem-reservation=35.00MB thread-reservation=1 runtime-filters-memory=1.00MB
-| | max-parallelism=120 segment-costs=[32342796]
+| | max-parallelism=1410 segment-costs=[32342796]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: c_current_cdemo_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q85.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q85.test
index 483495e5d..b5b57eb1f 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q85.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q85.test
@@ -443,7 +443,7 @@ max-parallelism=10 segment-costs=[267088, 4] cpu-comparison-result=163 [max(20 (
| F01:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=4.00MB mem-reservation=4.00MB thread-reservation=0 runtime-filters-memory=4.00MB
| Per-Instance Resources: mem-estimate=22.29MB mem-reservation=128.00KB thread-reservation=1
-| max-parallelism=120 segment-costs=[34764441468]
+| max-parallelism=1824 segment-costs=[34764441468]
| 10:HASH JOIN [INNER JOIN, BROADCAST]
| | hash-table-id=04
| | hash predicates: ws_item_sk = wr_item_sk, ws_order_number = wr_order_number
@@ -897,7 +897,7 @@ max-parallelism=10 segment-costs=[267088, 4] cpu-comparison-result=173 [max(20 (
| F01:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=4.00MB mem-reservation=4.00MB thread-reservation=0 runtime-filters-memory=4.00MB
| Per-Instance Resources: mem-estimate=17.41MB mem-reservation=128.00KB thread-reservation=1
-| max-parallelism=120 segment-costs=[34719000056]
+| max-parallelism=1824 segment-costs=[34719000056]
| 00:SCAN HDFS [tpcds_partitioned_parquet_snap.web_sales, RANDOM]
| HDFS partitions=1824/1824 files=1824 size=84.18MB
| predicates: ws_net_profit <= CAST(200 AS DECIMAL(5,0)) OR ws_net_profit <= CAST(300 AS DECIMAL(5,0)) OR ws_net_profit <= CAST(250 AS DECIMAL(5,0)), ws_net_profit <= CAST(200 AS DECIMAL(5,0)) OR ws_net_profit <= CAST(300 AS DECIMAL(5,0)) OR ws_net_profit >= CAST(50 AS DECIMAL(3,0)), ws_net_profit <= CAST(200 AS DECIMAL(5,0)) OR ws_net_profit >= CAST(150 AS DECIMAL(5,0)) OR ws_net_profit <= CAST(250 AS DECIMAL(5,0)), ws_net_profit <= CAST(200 AS DECIMAL(5,0)) OR ws_net_profit >= CAST [...]
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q86.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q86.test
index 8693ab5fa..27553e024 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q86.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q86.test
@@ -207,7 +207,7 @@ max-parallelism=10 segment-costs=[3152, 6006, 49] cpu-comparison-result=120 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=51.92MB mem-reservation=6.12MB thread-reservation=1
-max-parallelism=120 segment-costs=[23864285056, 149] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+max-parallelism=1824 segment-costs=[23864285056, 149] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
05:AGGREGATE [STREAMING]
| Class 0
| output: sum(ws_net_paid)
@@ -384,7 +384,7 @@ max-parallelism=10 segment-costs=[3152, 6006, 49] cpu-comparison-result=120 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=51.92MB mem-reservation=6.12MB thread-reservation=1
-max-parallelism=120 segment-costs=[23864285056, 149] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+max-parallelism=1824 segment-costs=[23864285056, 149] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
05:AGGREGATE [STREAMING]
| Class 0
| output: sum(ws_net_paid)
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q87.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q87.test
index e0077def6..a21077748 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q87.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q87.test
@@ -259,7 +259,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
|
|--F13:PLAN FRAGMENT [HASH(c_last_name,c_first_name,d_date)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=1.03GB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[6048443344] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=5560 segment-costs=[6048443344] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: d_date, c_first_name, c_last_name
@@ -287,7 +287,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
| F08:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| Per-Instance Resources: mem-estimate=574.53MB mem-reservation=34.12MB thread-reservation=1
-| max-parallelism=120 segment-costs=[10046570752, 85345744] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| max-parallelism=1010 segment-costs=[10046570752, 85345744] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| 17:AGGREGATE [STREAMING]
| | group by: c_last_name, c_first_name, d_date
| | mem-estimate=537.92MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
@@ -388,7 +388,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
|
|--F16:PLAN FRAGMENT [HASH(c_last_name,c_first_name,d_date)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=2.04GB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[12067416912] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=5560 segment-costs=[12067416912] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: d_date, c_first_name, c_last_name
@@ -416,7 +416,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
| F04:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| Per-Instance Resources: mem-estimate=727.70MB mem-reservation=35.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[19953869696, 170275664] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| max-parallelism=1831 segment-costs=[19953869696, 170275664] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| 11:AGGREGATE [STREAMING]
| | group by: c_last_name, c_first_name, d_date
| | mem-estimate=691.10MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
@@ -522,7 +522,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
Per-Instance Resources: mem-estimate=1.01GB mem-reservation=38.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[39814825952, 340542624] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+max-parallelism=1824 segment-costs=[39814825952, 340542624] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
05:AGGREGATE [STREAMING]
| group by: c_last_name, c_first_name, d_date
| mem-estimate=998.17MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
@@ -652,7 +652,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
|
|--F14:PLAN FRAGMENT [HASH(c_last_name,c_first_name,d_date)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=1.03GB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[6048443344] cpu-comparison-result=141 [max(120 (self) vs 141 (sum children))]
+| | max-parallelism=5560 segment-costs=[6048443344] cpu-comparison-result=141 [max(120 (self) vs 141 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: d_date, c_first_name, c_last_name
@@ -734,7 +734,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
| |
| |--F16:PLAN FRAGMENT [HASH(web_sales.ws_bill_customer_sk)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=43.43MB mem-reservation=33.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[31288109]
+| | | max-parallelism=1000 segment-costs=[31288109]
| | JOIN BUILD
| | | join-table-id=02 plan-id=03 cohort-id=02
| | | build expressions: customer.c_customer_sk
@@ -789,7 +789,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
|
|--F17:PLAN FRAGMENT [HASH(c_last_name,c_first_name,d_date)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=2.04GB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[12067416912] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=5560 segment-costs=[12067416912] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=03 plan-id=04 cohort-id=01
| | build expressions: d_date, c_first_name, c_last_name
@@ -817,7 +817,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
| F04:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
| Per-Instance Resources: mem-estimate=727.70MB mem-reservation=35.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[19953869696, 170275664] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+| max-parallelism=1831 segment-costs=[19953869696, 170275664] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
| 11:AGGREGATE [STREAMING]
| | group by: c_last_name, c_first_name, d_date
| | mem-estimate=691.10MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
@@ -923,7 +923,7 @@ max-parallelism=5560 segment-costs=[24134218912, 55518577664, 1] cpu-comparison-
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=17.00MB mem-reservation=17.00MB thread-reservation=0 runtime-filters-memory=17.00MB
Per-Instance Resources: mem-estimate=1.01GB mem-reservation=38.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[39814825952, 340542624] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
+max-parallelism=1824 segment-costs=[39814825952, 340542624] cpu-comparison-result=120 [max(120 (self) vs 31 (sum children))]
05:AGGREGATE [STREAMING]
| group by: c_last_name, c_first_name, d_date
| mem-estimate=998.17MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q92.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q92.test
index 76fb8379e..a7b484c58 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q92.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q92.test
@@ -221,7 +221,7 @@ max-parallelism=10 segment-costs=[6834375, 1] cpu-comparison-result=145 [max(30
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=33.62MB mem-reservation=17.12MB thread-reservation=1
-| max-parallelism=120 segment-costs=[6596416128, 5628] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=660 segment-costs=[6596416128, 5628] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 06:AGGREGATE [STREAMING]
| | output: avg(ws_ext_discount_amt)
| | group by: ws_item_sk
@@ -445,7 +445,7 @@ max-parallelism=10 segment-costs=[6834375, 1] cpu-comparison-result=145 [max(30
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=33.62MB mem-reservation=17.12MB thread-reservation=1
-| max-parallelism=120 segment-costs=[6596416128, 5628] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=660 segment-costs=[6596416128, 5628] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 06:AGGREGATE [STREAMING]
| | output: avg(ws_ext_discount_amt)
| | group by: ws_item_sk
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q93.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q93.test
index f3a9abdb1..fc1bc3164 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q93.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q93.test
@@ -186,7 +186,7 @@ max-parallelism=2650 segment-costs=[26410170448, 765955] cpu-comparison-result=1
|
|--F07:PLAN FRAGMENT [HASH(ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=352.60MB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1748226948]
+| | max-parallelism=2650 segment-costs=[1748226948]
| JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: sr_item_sk, sr_ticket_number
@@ -327,7 +327,7 @@ max-parallelism=2650 segment-costs=[26410170448, 765955] cpu-comparison-result=1
|
|--F07:PLAN FRAGMENT [HASH(ss_item_sk,ss_ticket_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=352.60MB mem-reservation=34.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[1748226948]
+| | max-parallelism=2650 segment-costs=[1748226948]
| JOIN BUILD
| | join-table-id=01 plan-id=02 cohort-id=01
| | build expressions: sr_item_sk, sr_ticket_number
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q95.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q95.test
index fe1beaf2d..52e898f14 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q95.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q95.test
@@ -298,7 +298,7 @@ max-parallelism=6110 segment-costs=[61063014652, 144764852, 19579100, 1] cpu-com
|
|--F12:PLAN FRAGMENT [HASH(ws1.ws_order_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=3.30GB mem-reservation=44.50MB thread-reservation=1 runtime-filters-memory=2.00MB
-| | max-parallelism=120 segment-costs=[28652108028, 182858479] cpu-comparison-result=290 [max(140 (self) vs 290 (sum children))]
+| | max-parallelism=6110 segment-costs=[28652108028, 182858479] cpu-comparison-result=290 [max(140 (self) vs 290 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: ws1.ws_order_number
@@ -314,7 +314,7 @@ max-parallelism=6110 segment-costs=[61063014652, 144764852, 19579100, 1] cpu-com
| |
| |--F13:PLAN FRAGMENT [HASH(ws1.ws_order_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=23.14MB mem-reservation=10.50MB thread-reservation=1 runtime-filters-memory=2.00MB
-| | | max-parallelism=120 segment-costs=[7099675] cpu-comparison-result=150 [max(150 (self) vs 42 (sum children))]
+| | | max-parallelism=6110 segment-costs=[7099675] cpu-comparison-result=150 [max(150 (self) vs 42 (sum children))]
| | JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: ws1.ws_order_number
@@ -473,7 +473,7 @@ max-parallelism=6110 segment-costs=[61063014652, 144764852, 19579100, 1] cpu-com
| |
| |--F17:PLAN FRAGMENT [HASH(ws1.ws_order_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=894.14MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[2193717500]
+| | | max-parallelism=6110 segment-costs=[2193717500]
| | JOIN BUILD
| | | join-table-id=05 plan-id=06 cohort-id=02
| | | build expressions: ws2.ws_order_number
@@ -538,7 +538,7 @@ max-parallelism=6110 segment-costs=[61063014652, 144764852, 19579100, 1] cpu-com
|
|--F18:PLAN FRAGMENT [HASH(ws1.ws_order_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=102.72MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | max-parallelism=120 segment-costs=[218533970]
+| | max-parallelism=6110 segment-costs=[218533970]
| JOIN BUILD
| | join-table-id=06 plan-id=07 cohort-id=01
| | build expressions: wr_order_number
@@ -577,7 +577,7 @@ max-parallelism=6110 segment-costs=[61063014652, 144764852, 19579100, 1] cpu-com
|
|--F19:PLAN FRAGMENT [HASH(ws1.ws_order_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=894.14MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | max-parallelism=120 segment-costs=[2193717500]
+| | max-parallelism=6110 segment-costs=[2193717500]
| JOIN BUILD
| | join-table-id=07 plan-id=08 cohort-id=01
| | build expressions: ws2.ws_order_number
@@ -677,7 +677,7 @@ max-parallelism=6110 segment-costs=[61063014652, 144764852, 19579100, 1] cpu-com
|
|--F12:PLAN FRAGMENT [HASH(ws1.ws_order_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=3.30GB mem-reservation=44.50MB thread-reservation=1 runtime-filters-memory=2.00MB
-| | max-parallelism=120 segment-costs=[28652108028, 182858479] cpu-comparison-result=290 [max(140 (self) vs 290 (sum children))]
+| | max-parallelism=6110 segment-costs=[28652108028, 182858479] cpu-comparison-result=290 [max(140 (self) vs 290 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: ws1.ws_order_number
@@ -693,7 +693,7 @@ max-parallelism=6110 segment-costs=[61063014652, 144764852, 19579100, 1] cpu-com
| |
| |--F13:PLAN FRAGMENT [HASH(ws1.ws_order_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=23.14MB mem-reservation=10.50MB thread-reservation=1 runtime-filters-memory=2.00MB
-| | | max-parallelism=120 segment-costs=[7099675] cpu-comparison-result=150 [max(150 (self) vs 42 (sum children))]
+| | | max-parallelism=6110 segment-costs=[7099675] cpu-comparison-result=150 [max(150 (self) vs 42 (sum children))]
| | JOIN BUILD
| | | join-table-id=01 plan-id=02 cohort-id=02
| | | build expressions: ws1.ws_order_number
@@ -852,7 +852,7 @@ max-parallelism=6110 segment-costs=[61063014652, 144764852, 19579100, 1] cpu-com
| |
| |--F17:PLAN FRAGMENT [HASH(ws1.ws_order_number)] hosts=10 instances=120
| | | Per-Instance Resources: mem-estimate=894.14MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | | max-parallelism=120 segment-costs=[2193717500]
+| | | max-parallelism=6110 segment-costs=[2193717500]
| | JOIN BUILD
| | | join-table-id=05 plan-id=06 cohort-id=02
| | | build expressions: ws2.ws_order_number
@@ -917,7 +917,7 @@ max-parallelism=6110 segment-costs=[61063014652, 144764852, 19579100, 1] cpu-com
|
|--F18:PLAN FRAGMENT [HASH(ws1.ws_order_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=102.72MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | max-parallelism=120 segment-costs=[218533970]
+| | max-parallelism=6110 segment-costs=[218533970]
| JOIN BUILD
| | join-table-id=06 plan-id=07 cohort-id=01
| | build expressions: wr_order_number
@@ -956,7 +956,7 @@ max-parallelism=6110 segment-costs=[61063014652, 144764852, 19579100, 1] cpu-com
|
|--F19:PLAN FRAGMENT [HASH(ws1.ws_order_number)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=894.14MB mem-reservation=50.00MB thread-reservation=1 runtime-filters-memory=16.00MB
-| | max-parallelism=120 segment-costs=[2193717500]
+| | max-parallelism=6110 segment-costs=[2193717500]
| JOIN BUILD
| | join-table-id=07 plan-id=08 cohort-id=01
| | build expressions: ws2.ws_order_number
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q97.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q97.test
index d75323c54..6eaf77b48 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q97.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q97.test
@@ -166,7 +166,7 @@ max-parallelism=5620 segment-costs=[17381120224, 56159909888, 1] cpu-comparison-
|
|--F07:PLAN FRAGMENT [HASH(ss_customer_sk,ss_item_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=1.71GB mem-reservation=68.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[8690781560, 8640155648] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=5620 segment-costs=[8690781560, 8640155648] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: cs_bill_customer_sk, cs_item_sk
@@ -186,7 +186,7 @@ max-parallelism=5620 segment-costs=[17381120224, 56159909888, 1] cpu-comparison-
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=536.62MB mem-reservation=35.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[13102409376, 50625912] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=1320 segment-costs=[13102409376, 50625912] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 07:AGGREGATE [STREAMING]
| | group by: cs_bill_customer_sk, cs_item_sk
| | mem-estimate=514.99MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
@@ -257,7 +257,7 @@ max-parallelism=5620 segment-costs=[17381120224, 56159909888, 1] cpu-comparison-
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
Per-Instance Resources: mem-estimate=848.27MB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[26112255712, 101249248] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+max-parallelism=1824 segment-costs=[26112255712, 101249248] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
03:AGGREGATE [STREAMING]
| group by: ss_customer_sk, ss_item_sk
| mem-estimate=826.65MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
@@ -354,7 +354,7 @@ max-parallelism=5620 segment-costs=[17381120224, 56159909888, 1] cpu-comparison-
|
|--F07:PLAN FRAGMENT [HASH(ss_customer_sk,ss_item_sk)] hosts=10 instances=120
| | Per-Instance Resources: mem-estimate=1.71GB mem-reservation=68.00MB thread-reservation=1
-| | max-parallelism=120 segment-costs=[8690781560, 8640155648] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
+| | max-parallelism=5620 segment-costs=[8690781560, 8640155648] cpu-comparison-result=120 [max(120 (self) vs 120 (sum children))]
| JOIN BUILD
| | join-table-id=00 plan-id=01 cohort-id=01
| | build expressions: cs_bill_customer_sk, cs_item_sk
@@ -374,7 +374,7 @@ max-parallelism=5620 segment-costs=[17381120224, 56159909888, 1] cpu-comparison-
| F03:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
| Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
| Per-Instance Resources: mem-estimate=536.62MB mem-reservation=35.00MB thread-reservation=1
-| max-parallelism=120 segment-costs=[13102409376, 50625912] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+| max-parallelism=1320 segment-costs=[13102409376, 50625912] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
| 07:AGGREGATE [STREAMING]
| | group by: cs_bill_customer_sk, cs_item_sk
| | mem-estimate=514.99MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
@@ -445,7 +445,7 @@ max-parallelism=5620 segment-costs=[17381120224, 56159909888, 1] cpu-comparison-
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=1.00MB mem-reservation=1.00MB thread-reservation=0 runtime-filters-memory=1.00MB
Per-Instance Resources: mem-estimate=848.27MB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[26112255712, 101249248] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
+max-parallelism=1824 segment-costs=[26112255712, 101249248] cpu-comparison-result=120 [max(120 (self) vs 11 (sum children))]
03:AGGREGATE [STREAMING]
| group by: ss_customer_sk, ss_item_sk
| mem-estimate=826.65MB mem-reservation=34.00MB spill-buffer=2.00MB thread-reservation=0
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q98.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q98.test
index 9299cc8ea..cf199ef2b 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q98.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q98.test
@@ -182,7 +182,7 @@ max-parallelism=1610 segment-costs=[16055904544, 511793440] cpu-comparison-resul
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=793.78MB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[20917930720, 511793440] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+max-parallelism=1824 segment-costs=[20917930720, 511793440] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: i_item_id, i_item_desc, i_category, i_class, i_current_price
@@ -338,7 +338,7 @@ max-parallelism=1610 segment-costs=[16055904544, 511793440] cpu-comparison-resul
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=2.00MB mem-reservation=2.00MB thread-reservation=0 runtime-filters-memory=2.00MB
Per-Instance Resources: mem-estimate=793.78MB mem-reservation=42.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[20917930720, 511793440] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
+max-parallelism=1824 segment-costs=[20917930720, 511793440] cpu-comparison-result=120 [max(120 (self) vs 25 (sum children))]
05:AGGREGATE [STREAMING]
| output: sum(ss_ext_sales_price)
| group by: i_item_id, i_item_desc, i_category, i_class, i_current_price
diff --git a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q99.test b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q99.test
index 946ae22cf..14e717365 100644
--- a/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q99.test
+++ b/testdata/workloads/functional-planner/queries/PlannerTest/tpcds_cpu_cost/tpcds-q99.test
@@ -184,7 +184,7 @@ max-parallelism=10 segment-costs=[23471, 300, 10] cpu-comparison-result=120 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=4.00MB mem-reservation=4.00MB thread-reservation=0 runtime-filters-memory=4.00MB
Per-Instance Resources: mem-estimate=29.96MB mem-reservation=3.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[52016860400, 287] cpu-comparison-result=120 [max(120 (self) vs 44 (sum children))]
+max-parallelism=1831 segment-costs=[52016860400, 287] cpu-comparison-result=120 [max(120 (self) vs 44 (sum children))]
09:AGGREGATE [STREAMING]
| output: sum(CAST(CASE WHEN (CAST(cs_ship_date_sk AS BIGINT) - CAST(cs_sold_date_sk AS BIGINT) <= CAST(30 AS BIGINT)) THEN CAST(1 AS TINYINT) ELSE CAST(0 AS TINYINT) END AS BIGINT)), sum(CAST(CASE WHEN (CAST(cs_ship_date_sk AS BIGINT) - CAST(cs_sold_date_sk AS BIGINT) > CAST(30 AS BIGINT)) AND (CAST(cs_ship_date_sk AS BIGINT) - CAST(cs_sold_date_sk AS BIGINT) <= CAST(60 AS BIGINT)) THEN CAST(1 AS TINYINT) ELSE CAST(0 AS TINYINT) END AS BIGINT)), sum(CAST(CASE WHEN (CAST(cs_ship_date_sk [...]
| group by: substr(w_warehouse_name, CAST(1 AS BIGINT), CAST(20 AS BIGINT)), sm_type, cc_name
@@ -387,7 +387,7 @@ max-parallelism=10 segment-costs=[23471, 300, 10] cpu-comparison-result=120 [max
F00:PLAN FRAGMENT [RANDOM] hosts=10 instances=120
Per-Host Shared Resources: mem-estimate=4.00MB mem-reservation=4.00MB thread-reservation=0 runtime-filters-memory=4.00MB
Per-Instance Resources: mem-estimate=29.96MB mem-reservation=3.00MB thread-reservation=1
-max-parallelism=120 segment-costs=[52016860400, 287] cpu-comparison-result=120 [max(120 (self) vs 44 (sum children))]
+max-parallelism=1831 segment-costs=[52016860400, 287] cpu-comparison-result=120 [max(120 (self) vs 44 (sum children))]
09:AGGREGATE [STREAMING]
| output: sum(CAST(CASE WHEN (CAST(cs_ship_date_sk AS BIGINT) - CAST(cs_sold_date_sk AS BIGINT) <= CAST(30 AS BIGINT)) THEN CAST(1 AS TINYINT) ELSE CAST(0 AS TINYINT) END AS BIGINT)), sum(CAST(CASE WHEN (CAST(cs_ship_date_sk AS BIGINT) - CAST(cs_sold_date_sk AS BIGINT) > CAST(30 AS BIGINT)) AND (CAST(cs_ship_date_sk AS BIGINT) - CAST(cs_sold_date_sk AS BIGINT) <= CAST(60 AS BIGINT)) THEN CAST(1 AS TINYINT) ELSE CAST(0 AS TINYINT) END AS BIGINT)), sum(CAST(CASE WHEN (CAST(cs_ship_date_sk [...]
| group by: substr(w_warehouse_name, CAST(1 AS BIGINT), CAST(20 AS BIGINT)), sm_type, cc_name
diff --git a/testdata/workloads/functional-query/queries/QueryTest/processing-cost-admission-slots.test b/testdata/workloads/functional-query/queries/QueryTest/processing-cost-admission-slots.test
index 118df2588..422d43af5 100644
--- a/testdata/workloads/functional-query/queries/QueryTest/processing-cost-admission-slots.test
+++ b/testdata/workloads/functional-query/queries/QueryTest/processing-cost-admission-slots.test
@@ -35,8 +35,10 @@ limit 100;
aggregation(SUM, AdmissionSlots): 16
row_regex: .* AvgAdmissionSlotsPerExecutor: 6 .*
row_regex: .* Executor group 2 \(large\):.*
-row_regex: .* CpuAsk: 16 .*
+row_regex: .* CpuAsk: 18 .*
+row_regex: .* CpuAskBounded: 16 .*
row_regex: .* EffectiveParallelism: 16 .*
+row_regex: .* MaxParallelism: 16 .*
====
---- QUERY: TPCDS-Q1-CPC-LARGEST-FRAGMENT
-- Expect a total of 3 admission slots given to this query if using LARGEST_FRAGMENT strategy.
@@ -69,8 +71,10 @@ limit 100;
aggregation(SUM, AdmissionSlots): 3
!row_regex: .* AvgAdmissionSlotsPerExecutor: .*
row_regex: .* Executor group 2 \(large\):.*
-row_regex: .* CpuAsk: 16 .*
+row_regex: .* CpuAsk: 18 .*
+row_regex: .* CpuAskBounded: 16 .*
row_regex: .* EffectiveParallelism: 16 .*
+row_regex: .* MaxParallelism: 16 .*
====
---- QUERY: TPCDS-Q1-NO-CPC
-- Expect a total of 3 admission slots given to this query if COMPUTE_PROCESSING_COST is disabled.
@@ -106,5 +110,7 @@ aggregation(SUM, AdmissionSlots): 3
!row_regex: .* AvgAdmissionSlotsPerExecutor: .*
row_regex: .* Executor group 2 \(large\):.*
!row_regex: .* CpuAsk: .*
+!row_regex: .* CpuAskBounded: .*
!row_regex: .* EffectiveParallelism: .*
+!row_regex: .* MaxParallelism: .*
====
diff --git a/tests/custom_cluster/test_executor_groups.py b/tests/custom_cluster/test_executor_groups.py
index ce12e0322..2ab71b4aa 100644
--- a/tests/custom_cluster/test_executor_groups.py
+++ b/tests/custom_cluster/test_executor_groups.py
@@ -1084,22 +1084,33 @@ class TestExecutorGroups(CustomClusterTestSuite):
["EffectiveParallelism:", "CpuAsk:", "AvgAdmissionSlotsPerExecutor:"])
# Test combination of PROCESSING_COST_MIN_THREADS and MAX_FRAGMENT_INSTANCES_PER_NODE.
+ # Show how CpuAsk and CpuAskBounded react to it, among other things.
self._set_query_options({'MAX_FRAGMENT_INSTANCES_PER_NODE': '3'})
self._run_query_and_verify_profile(GROUPING_TEST_QUERY,
["Executor Group: root.large-group", "EffectiveParallelism: 9",
- "ExecutorGroupsConsidered: 3", "AvgAdmissionSlotsPerExecutor: 3"])
+ "ExecutorGroupsConsidered: 3", "AvgAdmissionSlotsPerExecutor: 3",
+ "CpuAsk: 9", "CpuAskBounded: 9"])
self._set_query_options({'MAX_FRAGMENT_INSTANCES_PER_NODE': '4'})
self._run_query_and_verify_profile(GROUPING_TEST_QUERY,
["Executor Group: root.large-group", "EffectiveParallelism: 12",
- "ExecutorGroupsConsidered: 3", "AvgAdmissionSlotsPerExecutor: 4"])
+ "ExecutorGroupsConsidered: 3", "AvgAdmissionSlotsPerExecutor: 4",
+ "CpuAsk: 12", "CpuAskBounded: 12"])
self._set_query_options({'PROCESSING_COST_MIN_THREADS': '2'})
self._run_query_and_verify_profile(GROUPING_TEST_QUERY,
["Executor Group: root.large-group", "EffectiveParallelism: 12",
- "ExecutorGroupsConsidered: 3", "AvgAdmissionSlotsPerExecutor: 4"])
+ "ExecutorGroupsConsidered: 3", "AvgAdmissionSlotsPerExecutor: 4",
+ # at root.tiny
+ "Verdict: not enough per-host memory, not enough cpu cores",
+ "CpuAsk: 6", "CpuAskBounded: 4",
+ # at root.small
+ "Verdict: not enough per-host memory", "CpuAsk: 8", "CpuAskBounded: 8",
+ # at root.large
+ "Verdict: Match", "CpuAsk: 12", "CpuAskBounded: 12"])
self._set_query_options({'MAX_FRAGMENT_INSTANCES_PER_NODE': '2'})
self._run_query_and_verify_profile(GROUPING_TEST_QUERY,
["Executor Group: root.small-group", "EffectiveParallelism: 4",
- "ExecutorGroupsConsidered: 2", "AvgAdmissionSlotsPerExecutor: 2"])
+ "ExecutorGroupsConsidered: 2", "AvgAdmissionSlotsPerExecutor: 2",
+ "CpuAsk: 6", "CpuAskBounded: 4"])
self._set_query_options({'MAX_FRAGMENT_INSTANCES_PER_NODE': '1'})
result = self.execute_query_expect_failure(self.client, CPU_TEST_QUERY)
status = (r"PROCESSING_COST_MIN_THREADS \(2\) can not be larger than "
@@ -1328,23 +1339,33 @@ class TestExecutorGroups(CustomClusterTestSuite):
'MAX_FRAGMENT_INSTANCES_PER_NODE': '1'})
self._run_query_and_verify_profile(CPU_TEST_QUERY,
["Executor Group: root.large-group", "EffectiveParallelism: 3",
- "ExecutorGroupsConsidered: 3", "CpuAsk: 100",
- "Verdict: Match", "AvgAdmissionSlotsPerExecutor: 1"])
+ "ExecutorGroupsConsidered: 3", "CpuAsk: 267",
+ "Verdict: no executor group set fit. Admit to last executor group set.",
+ "AvgAdmissionSlotsPerExecutor: 1"])
+
+ # set MAX_FRAGMENT_INSTANCES_PER_NODE=3.
+ self._set_query_options({'MAX_FRAGMENT_INSTANCES_PER_NODE': '3'})
+ self._run_query_and_verify_profile(CPU_TEST_QUERY,
+ ["Executor Group: root.large-group", "EffectiveParallelism: 9",
+ "ExecutorGroupsConsidered: 3", "CpuAsk: 267",
+ "Verdict: no executor group set fit. Admit to last executor group set.",
+ "AvgAdmissionSlotsPerExecutor: 3"])
# Unset MAX_FRAGMENT_INSTANCES_PER_NODE.
self._set_query_options({'MAX_FRAGMENT_INSTANCES_PER_NODE': ''})
# Expect that a query still admitted to last group even if
# its resource requirement exceed the limit on that last executor group.
+ # CpuAsk is 534 at root.small and 500 at other group sets.
self._run_query_and_verify_profile(CPU_TEST_QUERY,
["Executor Group: root.large-group", "EffectiveParallelism: 15",
- "ExecutorGroupsConsidered: 3", "CpuAsk: 534",
+ "ExecutorGroupsConsidered: 3", "CpuAsk: 534", "CpuAsk: 500",
"Verdict: no executor group set fit. Admit to last executor group set.",
"AvgAdmissionSlotsPerExecutor: 5"])
# Check resource pools on the Web queries site and admission site
- self._verify_query_num_for_resource_pool("root.large", 2)
- self._verify_total_admitted_queries("root.large", 2)
+ self._verify_query_num_for_resource_pool("root.large", 3)
+ self._verify_total_admitted_queries("root.large", 3)
@pytest.mark.execute_serially
def test_no_skip_resource_checking(self):
@@ -1387,14 +1408,14 @@ class TestExecutorGroups(CustomClusterTestSuite):
# if MAX_FRAGMENT_INSTANCES_PER_NODE is limited to 1.
self._set_query_options({'MAX_FRAGMENT_INSTANCES_PER_NODE': '1'})
self._run_query_and_verify_profile(high_scan_cost_query,
- ["Executor Group: root.tiny-group", "ExecutorGroupsConsidered: 1",
- "Verdict: Match", "CpuAsk: 1",
+ ["Executor Group: root.small-group", "ExecutorGroupsConsidered: 2",
+ "Verdict: Match", "CpuAsk: 8",
"AvgAdmissionSlotsPerExecutor: 1"])
# Check resource pools on the Web queries site and admission site
- self._verify_query_num_for_resource_pool("root.tiny", 1)
+ self._verify_query_num_for_resource_pool("root.small", 1)
self._verify_query_num_for_resource_pool("root.large", 2)
- self._verify_total_admitted_queries("root.tiny", 1)
+ self._verify_total_admitted_queries("root.small", 1)
self._verify_total_admitted_queries("root.large", 2)
@pytest.mark.execute_serially