@@ -126,6 +126,20 @@ void TShardsScanningPolicy::FillRequestScanFeatures(const NKikimrTxDataShard::TK
126126 maxInFlight = ProtoConfig.GetScanLimit ();
127127 }
128128}
129+
130+ TConclusionStatus TCPULimits::DeserializeFromProto (const NKikimrKqp::TEvStartKqpTasksRequest& config) {
131+ const auto share = config.GetPoolMaxCpuShare ();
132+ if (share <= 0 || 1 < share) {
133+ return TConclusionStatus::Fail (" cpu share have to be in (0, 1] interval" );
134+ }
135+ NActors::TExecutorPoolStats poolStats;
136+ TVector<NActors::TExecutorThreadStats> threadsStats;
137+ TActivationContext::ActorSystem ()->GetPoolStats (TActivationContext::AsActorContext ().SelfID .PoolID (), poolStats, threadsStats);
138+ CPUGroupThreadsLimit = Max<ui64>(poolStats.MaxThreadCount , 1 ) * share;
139+ CPUGroupName = config.GetSchedulerGroup ();
140+ return TConclusionStatus::Success ();
141+ }
142+
129143}
130144} // namespace NKikimr
131145
@@ -146,8 +160,10 @@ IActor* CreateKqpScanComputeActor(const TActorId& executerId, ui64 txId,
146160
147161IActor* CreateKqpScanFetcher (const NKikimrKqp::TKqpSnapshot& snapshot, std::vector<NActors::TActorId>&& computeActors,
148162 const NKikimrTxDataShard::TKqpTransaction::TScanTaskMeta& meta, const NYql::NDq::TComputeRuntimeSettings& settings,
149- const ui64 txId, TMaybe<ui64> lockTxId, ui32 lockNodeId, TMaybe<NKikimrDataEvents::ELockMode> lockMode, const TShardsScanningPolicy& shardsScanningPolicy, TIntrusivePtr<TKqpCounters> counters, NWilson::TTraceId traceId) {
150- return new NScanPrivate::TKqpScanFetcherActor (snapshot, settings, std::move (computeActors), txId, lockTxId, lockNodeId, lockMode, meta, shardsScanningPolicy, counters, std::move (traceId));
163+ const ui64 txId, TMaybe<ui64> lockTxId, ui32 lockNodeId, TMaybe<NKikimrDataEvents::ELockMode> lockMode,
164+ const TShardsScanningPolicy& shardsScanningPolicy, TIntrusivePtr<TKqpCounters> counters, NWilson::TTraceId traceId,
165+ const TCPULimits& cpuLimits) {
166+ return new NScanPrivate::TKqpScanFetcherActor (snapshot, settings, std::move (computeActors), txId, lockTxId, lockNodeId, lockMode, meta, shardsScanningPolicy, counters, std::move (traceId), cpuLimits);
151167}
152168
153169}
0 commit comments