Skip to content

Commit 457afaa

Browse files
authored
data query uses different local compute tasks param (#8632)
1 parent 35c8dfe commit 457afaa

File tree

4 files changed

+12
-1
lines changed

4 files changed

+12
-1
lines changed

ydb/core/kqp/executer_actor/kqp_planner.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,8 +279,14 @@ std::unique_ptr<IEventHandle> TKqpPlanner::AssignTasksToNodes() {
279279

280280
auto placingOptions = ResourceManager_->GetPlacingOptions();
281281

282+
ui64 nonParallelLimit = placingOptions.MaxNonParallelTasksExecutionLimit;
283+
if (MayRunTasksLocally) {
284+
// not applied to column shards and external sources
285+
nonParallelLimit = placingOptions.MaxNonParallelDataQueryTasksLimit;
286+
}
287+
282288
bool singleNodeExecutionMakeSence = (
283-
ResourceEstimations.size() <= placingOptions.MaxNonParallelTasksExecutionLimit ||
289+
ResourceEstimations.size() <= nonParallelLimit ||
284290
// all readers are located on the one node.
285291
TasksPerNode.size() == 1
286292
);

ydb/core/kqp/rm_service/kqp_rm_service.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ class TKqpResourceManager : public IKqpResourceManager {
187187
TPlannerPlacingOptions GetPlacingOptions() override {
188188
return TPlannerPlacingOptions{
189189
.MaxNonParallelTasksExecutionLimit = MaxNonParallelTasksExecutionLimit.load(),
190+
.MaxNonParallelDataQueryTasksLimit = MaxNonParallelDataQueryTasksLimit.load(),
190191
.MaxNonParallelTopStageExecutionLimit = MaxNonParallelTopStageExecutionLimit.load(),
191192
.PreferLocalDatacenterExecution = PreferLocalDatacenterExecution.load(),
192193
};
@@ -476,6 +477,7 @@ class TKqpResourceManager : public IKqpResourceManager {
476477
MaxNonParallelTopStageExecutionLimit.store(config.GetMaxNonParallelTopStageExecutionLimit());
477478
MaxNonParallelTasksExecutionLimit.store(config.GetMaxNonParallelTasksExecutionLimit());
478479
PreferLocalDatacenterExecution.store(config.GetPreferLocalDatacenterExecution());
480+
MaxNonParallelDataQueryTasksLimit.store(config.GetMaxNonParallelDataQueryTasksLimit());
479481
}
480482

481483
ui32 GetNodeId() override {
@@ -526,6 +528,7 @@ class TKqpResourceManager : public IKqpResourceManager {
526528
std::atomic<ui64> MaxNonParallelTopStageExecutionLimit = 1;
527529
std::atomic<ui64> MaxNonParallelTasksExecutionLimit = 8;
528530
std::atomic<bool> PreferLocalDatacenterExecution = true;
531+
std::atomic<ui64> MaxNonParallelDataQueryTasksLimit = 1000;
529532

530533
// current state
531534
std::atomic<ui64> LastResourceBrokerTaskId = 0;

ydb/core/kqp/rm_service/kqp_rm_service.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ struct TKqpLocalNodeResources {
238238

239239
struct TPlannerPlacingOptions {
240240
ui64 MaxNonParallelTasksExecutionLimit = 8;
241+
ui64 MaxNonParallelDataQueryTasksLimit = 1000;
241242
ui64 MaxNonParallelTopStageExecutionLimit = 1;
242243
bool PreferLocalDatacenterExecution = true;
243244
};

ydb/core/protos/table_service_config.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ message TTableServiceConfig {
5050
optional uint64 MaxNonParallelTasksExecutionLimit = 25 [default = 8];
5151
optional uint64 MaxNonParallelTopStageExecutionLimit = 26 [default = 1];
5252
optional bool PreferLocalDatacenterExecution = 27 [ default = true ];
53+
optional uint64 MaxNonParallelDataQueryTasksLimit = 28 [default = 1000];
5354
}
5455

5556
message TSpillingServiceConfig {

0 commit comments

Comments
 (0)