Skip to content

Commit 396d0c1

Browse files
authored
data query uses different local compute tasks param (24-3) (#8633)
1 parent 04883d2 commit 396d0c1

File tree

4 files changed

+13
-2
lines changed

4 files changed

+13
-2
lines changed

ydb/core/kqp/executer_actor/kqp_planner.cpp

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

259259
auto placingOptions = ResourceManager_->GetPlacingOptions();
260260

261+
ui64 nonParallelLimit = placingOptions.MaxNonParallelTasksExecutionLimit;
262+
if (MayRunTasksLocally) {
263+
// not applied to column shards and external sources
264+
nonParallelLimit = placingOptions.MaxNonParallelDataQueryTasksLimit;
265+
}
266+
261267
bool singleNodeExecutionMakeSence = (
262-
ResourceEstimations.size() <= placingOptions.MaxNonParallelTasksExecutionLimit ||
268+
ResourceEstimations.size() <= nonParallelLimit ||
263269
// all readers are located on the one node.
264270
TasksPerNode.size() == 1
265271
);

ydb/core/kqp/rm_service/kqp_rm_service.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ class TKqpResourceManager : public IKqpResourceManager {
145145
TPlannerPlacingOptions GetPlacingOptions() override {
146146
return TPlannerPlacingOptions{
147147
.MaxNonParallelTasksExecutionLimit = MaxNonParallelTasksExecutionLimit.load(),
148+
.MaxNonParallelDataQueryTasksLimit = MaxNonParallelDataQueryTasksLimit.load(),
148149
.MaxNonParallelTopStageExecutionLimit = MaxNonParallelTopStageExecutionLimit.load(),
149150
.PreferLocalDatacenterExecution = PreferLocalDatacenterExecution.load(),
150151
};
@@ -425,6 +426,7 @@ class TKqpResourceManager : public IKqpResourceManager {
425426
MaxNonParallelTopStageExecutionLimit.store(config.GetMaxNonParallelTopStageExecutionLimit());
426427
MaxNonParallelTasksExecutionLimit.store(config.GetMaxNonParallelTasksExecutionLimit());
427428
PreferLocalDatacenterExecution.store(config.GetPreferLocalDatacenterExecution());
429+
MaxNonParallelDataQueryTasksLimit.store(config.GetMaxNonParallelDataQueryTasksLimit());
428430
}
429431

430432
ui32 GetNodeId() override {
@@ -474,6 +476,7 @@ class TKqpResourceManager : public IKqpResourceManager {
474476
std::atomic<ui64> MaxNonParallelTopStageExecutionLimit = 1;
475477
std::atomic<ui64> MaxNonParallelTasksExecutionLimit = 8;
476478
std::atomic<bool> PreferLocalDatacenterExecution = true;
479+
std::atomic<ui64> MaxNonParallelDataQueryTasksLimit = 1000;
477480

478481
// current state
479482
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
@@ -204,6 +204,7 @@ struct TKqpLocalNodeResources {
204204

205205
struct TPlannerPlacingOptions {
206206
ui64 MaxNonParallelTasksExecutionLimit = 8;
207+
ui64 MaxNonParallelDataQueryTasksLimit = 1000;
207208
ui64 MaxNonParallelTopStageExecutionLimit = 1;
208209
bool PreferLocalDatacenterExecution = true;
209210
};

ydb/core/protos/table_service_config.proto

Lines changed: 2 additions & 1 deletion
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 {
@@ -301,6 +302,6 @@ message TTableServiceConfig {
301302
optional uint64 QueryReplayCacheUploadTTLSec = 62 [default = 36000];
302303

303304
optional bool EnableQueryServiceSpilling = 63 [ default = true ];
304-
305+
305306
optional bool EnableImplicitQueryParameterTypes = 66 [ default = false ];
306307
};

0 commit comments

Comments
 (0)