Skip to content

Commit f9621d6

Browse files
swalrus1PavelEfarinov
authored andcommitted
deduplication memory fixes (ydb-platform#22532)
1 parent f08107c commit f9621d6

File tree

9 files changed

+39
-11
lines changed

9 files changed

+39
-11
lines changed

ydb/core/driver_lib/run/kikimr_services_initializers.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2260,6 +2260,29 @@ void TCompGroupedMemoryLimiterInitializer::InitializeServices(NActors::TActorSys
22602260
}
22612261
}
22622262

2263+
TDeduplicationGroupedMemoryLimiterInitializer::TDeduplicationGroupedMemoryLimiterInitializer(const TKikimrRunConfig& runConfig)
2264+
: IKikimrServicesInitializer(runConfig)
2265+
{
2266+
}
2267+
2268+
void TDeduplicationGroupedMemoryLimiterInitializer::InitializeServices(NActors::TActorSystemSetup* setup, const NKikimr::TAppData* appData) {
2269+
NOlap::NGroupedMemoryManager::TConfig serviceConfig;
2270+
if (Config.GetDeduplicationGroupedMemoryLimiterConfig().GetCountBuckets() == 0) {
2271+
Config.MutableDeduplicationGroupedMemoryLimiterConfig()->SetCountBuckets(1);
2272+
}
2273+
Y_ABORT_UNLESS(serviceConfig.DeserializeFromProto(Config.GetDeduplicationGroupedMemoryLimiterConfig()));
2274+
2275+
if (serviceConfig.IsEnabled()) {
2276+
TIntrusivePtr<::NMonitoring::TDynamicCounters> tabletGroup = GetServiceCounters(appData->Counters, "tablets");
2277+
TIntrusivePtr<::NMonitoring::TDynamicCounters> countersGroup = tabletGroup->GetSubgroup("type", "TX_DEDU_GROUPED_MEMORY_LIMITER");
2278+
2279+
auto service = NOlap::NGroupedMemoryManager::TDeduplicationMemoryLimiterOperator::CreateService(serviceConfig, countersGroup);
2280+
2281+
setup->LocalServices.push_back(std::make_pair(NOlap::NGroupedMemoryManager::TDeduplicationMemoryLimiterOperator::MakeServiceId(NodeId),
2282+
TActorSetupCmd(service, TMailboxType::HTSwap, appData->UserPoolId)));
2283+
}
2284+
}
2285+
22632286
TCompDiskLimiterInitializer::TCompDiskLimiterInitializer(const TKikimrRunConfig& runConfig)
22642287
: IKikimrServicesInitializer(runConfig) {
22652288
}

ydb/core/driver_lib/run/kikimr_services_initializers.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,12 @@ class TCompGroupedMemoryLimiterInitializer: public IKikimrServicesInitializer {
415415
void InitializeServices(NActors::TActorSystemSetup* setup, const NKikimr::TAppData* appData) override;
416416
};
417417

418+
class TDeduplicationGroupedMemoryLimiterInitializer: public IKikimrServicesInitializer {
419+
public:
420+
TDeduplicationGroupedMemoryLimiterInitializer(const TKikimrRunConfig& runConfig);
421+
void InitializeServices(NActors::TActorSystemSetup* setup, const NKikimr::TAppData* appData) override;
422+
};
423+
418424
class TCompPrioritiesInitializer: public IKikimrServicesInitializer {
419425
public:
420426
TCompPrioritiesInitializer(const TKikimrRunConfig& runConfig);

ydb/core/driver_lib/run/run.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1741,6 +1741,7 @@ TIntrusivePtr<TServiceInitializersList> TKikimrRunner::CreateServiceInitializers
17411741
if (serviceMask.EnableGroupedMemoryLimiter) {
17421742
sil->AddServiceInitializer(new TScanGroupedMemoryLimiterInitializer(runConfig));
17431743
sil->AddServiceInitializer(new TCompGroupedMemoryLimiterInitializer(runConfig));
1744+
sil->AddServiceInitializer(new TDeduplicationGroupedMemoryLimiterInitializer(runConfig));
17441745
}
17451746

17461747
if (serviceMask.EnableCompPriorities) {

ydb/core/protos/config.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2523,6 +2523,7 @@ message TAppConfig {
25232523
optional TCompositeConveyorConfig CompositeConveyorConfig = 109;
25242524
optional TGeneralCacheConfig PortionsMetadataCache = 110;
25252525
optional TGeneralCacheConfig ColumnDataCache = 111;
2526+
optional TGroupedMemoryLimiterConfig DeduplicationGroupedMemoryLimiterConfig = 112;
25262527
}
25272528

25282529
message TYdbVersion {

ydb/core/protos/console_config.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ message TConfigItem {
154154

155155
CompositeConveyorConfigItem = 109;
156156
PortionsMetadataCacheItem = 110;
157+
DeduGroupedMemoryLimiterConfig = 112;
157158

158159
// synthetic kinds for audit purposes only
159160
DatabaseYamlConfigChangeItem = 32767;

ydb/core/tx/columnshard/engines/reader/simple_reader/duplicates/context.cpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,10 @@
44

55
namespace NKikimr::NOlap::NReader::NSimple::NDuplicateFiltering {
66

7-
namespace {
8-
9-
static std::shared_ptr<NOlap::NGroupedMemoryManager::TStageFeatures> DeduplicationStageFeatures =
10-
NOlap::NGroupedMemoryManager::TDeduplicationMemoryLimiterOperator::BuildStageFeatures("DEFAULT", 1000000000);
11-
12-
}
13-
147
TInternalFilterConstructor::TInternalFilterConstructor(const TEvRequestFilter::TPtr& request, TColumnDataSplitter&& splitter)
158
: OriginalRequest(request)
169
, Intervals(std::move(splitter))
17-
, ProcessGuard(NGroupedMemoryManager::TDeduplicationMemoryLimiterOperator::BuildProcessGuard({ DeduplicationStageFeatures }))
10+
, ProcessGuard(NGroupedMemoryManager::TDeduplicationMemoryLimiterOperator::BuildProcessGuard({}))
1811
, ScopeGuard(ProcessGuard->BuildScopeGuard(1))
1912
, GroupGuard(ScopeGuard->BuildGroupGuard())
2013
{

ydb/core/tx/columnshard/engines/reader/simple_reader/duplicates/context.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,10 @@ class TInternalFilterConstructor: TMoveOnly {
101101
return ProcessGuard->GetProcessId();
102102
}
103103
ui64 GetMemoryScopeId() const {
104-
return ScopeGuard->GetProcessId();
104+
return ScopeGuard->GetScopeId();
105105
}
106106
ui64 GetMemoryGroupId() const {
107-
return GroupGuard->GetProcessId();
107+
return GroupGuard->GetGroupId();
108108
}
109109
};
110110

ydb/core/tx/columnshard/engines/reader/simple_reader/duplicates/manager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class TColumnDataAllocation: public NGroupedMemoryManager::IAllocation {
6969
private:
7070
virtual void DoOnAllocationImpossible(const TString& errorMessage) override {
7171
AFL_VERIFY(Callback);
72-
Callback->OnError(errorMessage);
72+
Callback->OnError(TStringBuilder() << "cannot allocate memory: " << errorMessage);
7373
}
7474
virtual bool DoOnAllocated(std::shared_ptr<NGroupedMemoryManager::TAllocationGuard>&& guard,
7575
const std::shared_ptr<NGroupedMemoryManager::IAllocation>& /*allocation*/) override {

ydb/tests/library/harness/kikimr_config.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ def __init__(
165165
enable_resource_pools=None,
166166
scan_grouped_memory_limiter_config=None,
167167
comp_grouped_memory_limiter_config=None,
168+
deduplication_grouped_memory_limiter_config=None,
168169
query_service_config=None,
169170
domain_login_only=None,
170171
use_self_management=False,
@@ -408,6 +409,8 @@ def __init__(
408409
self.yaml_config["scan_grouped_memory_limiter_config"] = scan_grouped_memory_limiter_config
409410
if comp_grouped_memory_limiter_config:
410411
self.yaml_config["comp_grouped_memory_limiter_config"] = comp_grouped_memory_limiter_config
412+
if deduplication_grouped_memory_limiter_config:
413+
self.yaml_config["deduplication_grouped_memory_limiter_config"] = deduplication_grouped_memory_limiter_config
411414

412415
self.__build()
413416

0 commit comments

Comments
 (0)