Skip to content

Commit

Permalink
different request variants need different memory profiles (ydb-platfo…
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanmorozov333 authored and zverevgeny committed Sep 12, 2024
1 parent ab0940d commit 464e1d3
Showing 1 changed file with 25 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -252,16 +252,35 @@ std::shared_ptr<TFetchingScript> TSpecialReadContext::BuildColumnsFetchingPlan(c
TSpecialReadContext::TSpecialReadContext(const std::shared_ptr<TReadContext>& commonContext)
: CommonContext(commonContext) {

ReadMetadata = dynamic_pointer_cast<const TReadMetadata>(CommonContext->GetReadMetadata());
Y_ABORT_UNLESS(ReadMetadata);
Y_ABORT_UNLESS(ReadMetadata->SelectInfo);

double kffFilter = 0.45;
double kffFetching = 0.45;
double kffMerge = 0.10;
TString stagePrefix;
if (ReadMetadata->GetEarlyFilterColumnIds().size()) {
stagePrefix = "EF";
kffFilter = 0.7;
kffFetching = 0.15;
kffMerge = 0.15;
} else {
stagePrefix = "FO";
kffFilter = 0.1;
kffFetching = 0.75;
kffMerge = 0.15;
}

std::vector<std::shared_ptr<NGroupedMemoryManager::TStageFeatures>> stages = {
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures("FILTER", 0.70 * TGlobalLimits::ScanMemoryLimit),
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures("FETCHING", 0.15 * TGlobalLimits::ScanMemoryLimit),
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures("MERGE", 0.15 * TGlobalLimits::ScanMemoryLimit)
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures(
stagePrefix + "::FILTER", kffFilter * TGlobalLimits::ScanMemoryLimit),
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures(
stagePrefix + "::FETCHING", kffFetching * TGlobalLimits::ScanMemoryLimit),
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildStageFeatures(stagePrefix + "::MERGE", kffMerge * TGlobalLimits::ScanMemoryLimit)
};
ProcessMemoryGuard =
NGroupedMemoryManager::TScanMemoryLimiterOperator::BuildProcessGuard(CommonContext->GetReadMetadata()->GetTxId(), stages);
ReadMetadata = dynamic_pointer_cast<const TReadMetadata>(CommonContext->GetReadMetadata());
Y_ABORT_UNLESS(ReadMetadata);
Y_ABORT_UNLESS(ReadMetadata->SelectInfo);

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

0 comments on commit 464e1d3

Please sign in to comment.