Skip to content

Commit 3734eda

Browse files
different request variants need different memory profiles (#7664)
1 parent 010b521 commit 3734eda

File tree

1 file changed

+25
-6
lines changed
  • ydb/core/tx/columnshard/engines/reader/plain_reader/iterator

1 file changed

+25
-6
lines changed

ydb/core/tx/columnshard/engines/reader/plain_reader/iterator/context.cpp

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -252,16 +252,35 @@ std::shared_ptr<TFetchingScript> TSpecialReadContext::BuildColumnsFetchingPlan(c
252252
TSpecialReadContext::TSpecialReadContext(const std::shared_ptr<TReadContext>& commonContext)
253253
: CommonContext(commonContext) {
254254

255+
ReadMetadata = dynamic_pointer_cast<const TReadMetadata>(CommonContext->GetReadMetadata());
256+
Y_ABORT_UNLESS(ReadMetadata);
257+
Y_ABORT_UNLESS(ReadMetadata->SelectInfo);
258+
259+
double kffFilter = 0.45;
260+
double kffFetching = 0.45;
261+
double kffMerge = 0.10;
262+
TString stagePrefix;
263+
if (ReadMetadata->GetEarlyFilterColumnIds().size()) {
264+
stagePrefix = "EF";
265+
kffFilter = 0.7;
266+
kffFetching = 0.15;
267+
kffMerge = 0.15;
268+
} else {
269+
stagePrefix = "FO";
270+
kffFilter = 0.1;
271+
kffFetching = 0.75;
272+
kffMerge = 0.15;
273+
}
274+
255275
std::vector<std::shared_ptr<NGroupedMemoryManager::TStageFeatures>> stages = {
256-
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures("FILTER", 0.70 * TGlobalLimits::ScanMemoryLimit),
257-
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures("FETCHING", 0.15 * TGlobalLimits::ScanMemoryLimit),
258-
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures("MERGE", 0.15 * TGlobalLimits::ScanMemoryLimit)
276+
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures(
277+
stagePrefix + "::FILTER", kffFilter * TGlobalLimits::ScanMemoryLimit),
278+
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures(
279+
stagePrefix + "::FETCHING", kffFetching * TGlobalLimits::ScanMemoryLimit),
280+
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures(stagePrefix + "::MERGE", kffMerge * TGlobalLimits::ScanMemoryLimit)
259281
};
260282
ProcessMemoryGuard =
261283
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildProcessGuard(CommonContext->GetReadMetadata()->GetTxId(), stages);
262-
ReadMetadata = dynamic_pointer_cast<const TReadMetadata>(CommonContext->GetReadMetadata());
263-
Y_ABORT_UNLESS(ReadMetadata);
264-
Y_ABORT_UNLESS(ReadMetadata->SelectInfo);
265284

266285
auto readSchema = ReadMetadata->GetResultSchema();
267286
SpecColumns = std::make_shared<TColumnsSet>(TIndexInfo::GetSnapshotColumnIdsSet(), readSchema);

0 commit comments

Comments
 (0)