Skip to content

Commit 3e4dfbd

Browse files
committed
build fixes
1 parent f30a500 commit 3e4dfbd

File tree

5 files changed

+37
-36
lines changed

5 files changed

+37
-36
lines changed

ydb/core/driver_lib/run/kikimr_services_initializers.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1174,6 +1174,7 @@ void TSharedCacheInitializer::InitializeServices(
11741174
config->TotalAsyncQueueInFlyLimit = cfg.GetAsyncQueueInFlyLimit();
11751175
config->TotalScanQueueInFlyLimit = cfg.GetScanQueueInFlyLimit();
11761176
config->ReplacementPolicy = cfg.GetReplacementPolicy();
1177+
config->LimitBytes = cfg.GetMemoryLimit();
11771178

11781179
if (cfg.HasActivePagesReservationPercent()) {
11791180
config->ActivePagesReservationPercent = cfg.GetActivePagesReservationPercent();
@@ -1185,10 +1186,6 @@ void TSharedCacheInitializer::InitializeServices(
11851186
TIntrusivePtr<::NMonitoring::TDynamicCounters> tabletGroup = GetServiceCounters(appData->Counters, "tablets");
11861187
TIntrusivePtr<::NMonitoring::TDynamicCounters> sausageGroup = tabletGroup->GetSubgroup("type", "S_CACHE");
11871188

1188-
config->CacheConfig = new TCacheCacheConfig(cfg.GetMemoryLimit(),
1189-
sausageGroup->GetCounter("fresh"),
1190-
sausageGroup->GetCounter("staging"),
1191-
sausageGroup->GetCounter("warm"));
11921189
config->Counters = new TSharedPageCacheCounters(sausageGroup);
11931190

11941191
setup->LocalServices.push_back(std::pair<TActorId, TActorSetupCmd>(MakeSharedPageCacheId(0),

ydb/core/tablet_flat/shared_sausagecache.cpp

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
namespace NKikimr {
1919

2020
TSharedPageCacheCounters::TSharedPageCacheCounters(const TIntrusivePtr<::NMonitoring::TDynamicCounters> &group)
21-
: Counters(counters)
22-
, FreshBytes(counters->GetCounter("fresh"))
23-
, StagingBytes(counters->GetCounter("staging"))
24-
, WarmBytes(counters->GetCounter("warm"))
21+
: Counters(group)
22+
, FreshBytes(group->GetCounter("fresh"))
23+
, StagingBytes(group->GetCounter("staging"))
24+
, WarmBytes(group->GetCounter("warm"))
2525
, MemLimitBytes(group->GetCounter("MemLimitBytes"))
2626
, ConfigLimitBytes(group->GetCounter("ConfigLimitBytes"))
2727
, ActivePages(group->GetCounter("ActivePages"))
@@ -482,7 +482,6 @@ class TSharedPageCache : public TActorBootstrapped<TSharedPageCache> {
482482

483483
// 0 means unlimited
484484
ui64 MemLimitBytes = 0;
485-
ui64 ConfigLimitBytes;
486485

487486
THolder<ICacheCache<TPage>> CreateCache() {
488487
// TODO: pass actual limit to cache config
@@ -502,24 +501,22 @@ class TSharedPageCache : public TActorBootstrapped<TSharedPageCache> {
502501
}
503502

504503
void ActualizeCacheSizeLimit() {
505-
if ((ui64)SizeOverride != Config->CacheConfig->Limit) {
506-
Config->CacheConfig->SetLimit(SizeOverride);
504+
if ((ui64)SizeOverride != Config->LimitBytes) {
505+
Config->LimitBytes = SizeOverride;
507506
}
508507

509-
ConfigLimitBytes = Config->CacheConfig->Limit;
510-
511-
ui64 limit = ConfigLimitBytes;
512-
if (MemLimitBytes && ConfigLimitBytes > MemLimitBytes) {
508+
ui64 limit = Config->LimitBytes;
509+
if (MemLimitBytes && Config->LimitBytes > MemLimitBytes) {
513510
limit = MemLimitBytes;
514511
}
515512

516513
// limit of cache depends only on config and mem because passive pages may go in and out arbitrary
517514
// we may have some passive bytes, so if we fully fill this Cache we may exceed the limit
518515
// because of that DoGC should be called to ensure limits
519-
Cache->UpdateCacheSize(limit);
516+
Cache.UpdateLimit(limit);
520517

521518
if (Config->Counters) {
522-
Config->Counters->ConfigLimitBytes->Set(ConfigLimitBytes);
519+
Config->Counters->ConfigLimitBytes->Set(Config->LimitBytes);
523520
Config->Counters->ActiveLimitBytes->Set(limit);
524521
}
525522
}
@@ -529,13 +526,13 @@ class TSharedPageCache : public TActorBootstrapped<TSharedPageCache> {
529526
// update StatActiveBytes + StatPassiveBytes
530527
ProcessGCList();
531528

532-
ui64 configActiveReservedBytes = ConfigLimitBytes * Config->ActivePagesReservationPercent / 100;
529+
ui64 configActiveReservedBytes = Config->LimitBytes * Config->ActivePagesReservationPercent / 100;
533530

534531
THashSet<TCollection*> recheck;
535532
while (MemLimitBytes && GetStatAllBytes() > MemLimitBytes
536-
|| GetStatAllBytes() > ConfigLimitBytes && StatActiveBytes > configActiveReservedBytes) {
533+
|| GetStatAllBytes() > Config->LimitBytes && StatActiveBytes > configActiveReservedBytes) {
537534
TIntrusiveList<TPage> pages = Cache.EvictNext();
538-
if (!page) {
535+
if (pages.Empty()) {
539536
break;
540537
}
541538
while (!pages.Empty()) {
@@ -575,12 +572,12 @@ class TSharedPageCache : public TActorBootstrapped<TSharedPageCache> {
575572

576573
DoGC();
577574

578-
if (MemLimitBytes && MemLimitBytes < ConfigLimitBytes) {
575+
if (MemLimitBytes && MemLimitBytes < Config->LimitBytes) {
579576
// in normal scenario we expect that we can fill the whole shared cache
580-
ui64 memTableReservedBytes = ConfigLimitBytes * Config->MemTableReservationPercent / 100;
577+
ui64 memTableReservedBytes = Config->LimitBytes * Config->MemTableReservationPercent / 100;
581578
ui64 memTableTotal = MemTableTracker->GetTotalConsumption();
582579
if (memTableTotal > memTableReservedBytes) {
583-
ui64 toCompact = Min(ConfigLimitBytes - MemLimitBytes, memTableTotal - memTableReservedBytes);
580+
ui64 toCompact = Min(Config->LimitBytes - MemLimitBytes, memTableTotal - memTableReservedBytes);
584581
auto registrations = MemTableTracker->SelectForCompaction(toCompact);
585582
for (auto registration : registrations) {
586583
Send(registration.first->Owner, new NSharedCache::TEvMemTableCompact(registration.first->Table, registration.second));
@@ -1396,9 +1393,9 @@ class TSharedPageCache : public TActorBootstrapped<TSharedPageCache> {
13961393
const auto* msg = ev->Get();
13971394

13981395
if (msg->Record.GetMemoryLimit() != 0) {
1399-
Config->CacheConfig->SetLimit(msg->Record.GetMemoryLimit());
1400-
SizeOverride = Config->CacheConfig->Limit;
1401-
// limit will be updated with ActualizeCacheSizeLimit call
1396+
Config->LimitBytes = msg->Record.GetMemoryLimit();
1397+
SizeOverride = Config->LimitBytes;
1398+
ActualizeCacheSizeLimit();
14021399
}
14031400

14041401
if (msg->Record.HasActivePagesReservationPercent()) {
@@ -1491,9 +1488,8 @@ class TSharedPageCache : public TActorBootstrapped<TSharedPageCache> {
14911488
: MemObserver(std::move(memObserver))
14921489
, MemTableTracker(std::make_shared<TSharedPageCacheMemTableTracker>(config->Counters))
14931490
, Config(std::move(config))
1494-
, SizeOverride(Config->CacheConfig->Limit, 1, Max<i64>())
1495-
, ConfigLimitBytes(Config->CacheConfig->Limit)
1496-
, Cache(CreateCache())
1491+
, Cache(1, CreateCache(), Config->Counters->ReplacementPolicySize(Config->ReplacementPolicy))
1492+
, SizeOverride(Config->LimitBytes, 1, Max<i64>())
14971493
{
14981494
AsyncRequests.Limit = Config->TotalAsyncQueueInFlyLimit;
14991495
ScanRequests.Limit = Config->TotalScanQueueInFlyLimit;

ydb/core/tablet_flat/shared_sausagecache.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ struct TSharedPageCacheCounters final : public TAtomicRefCount<TSharedPageCacheC
2727

2828
const TIntrusivePtr<::NMonitoring::TDynamicCounters> Counters;
2929

30+
const TCounterPtr FreshBytes;
31+
const TCounterPtr StagingBytes;
32+
const TCounterPtr WarmBytes;
33+
3034
const TCounterPtr MemLimitBytes;
3135
const TCounterPtr ConfigLimitBytes;
3236
const TCounterPtr ActivePages;
@@ -55,7 +59,7 @@ struct TSharedPageCacheCounters final : public TAtomicRefCount<TSharedPageCacheC
5559
struct TSharedPageCacheConfig {
5660
using TReplacementPolicy = NKikimrSharedCache::TReplacementPolicy;
5761

58-
TIntrusivePtr<TCacheCacheConfig> CacheConfig;
62+
ui64 LimitBytes;
5963
ui64 TotalScanQueueInFlyLimit = 512 * 1024 * 1024;
6064
ui64 TotalAsyncQueueInFlyLimit = 512 * 1024 * 1024;
6165
TString CacheName = "SharedPageCache";

ydb/core/tablet_flat/test/libs/exec/runner.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ namespace NFake {
183183
{ /*_ Shared page collection cache service, used by executor */
184184
auto config = MakeHolder<TSharedPageCacheConfig>();
185185

186-
config->CacheConfig = new TCacheCacheConfig(conf.Shared, nullptr, nullptr, nullptr);
186+
config->LimitBytes = conf.Shared;
187187
config->TotalAsyncQueueInFlyLimit = conf.AsyncQueue;
188188
config->TotalScanQueueInFlyLimit = conf.ScanQueue;
189189
config->Counters = MakeIntrusive<TSharedPageCacheCounters>(Env.GetDynamicCounters());

ydb/core/tablet_flat/ut/ut_shared_sausagecache.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,13 @@ void WaitEvent(TMyEnvBase& env, ui32 eventType, ui32 requiredCount = 1) {
124124

125125
void RestartAndClearCache(TMyEnvBase& env) {
126126
env.SendSync(new TEvents::TEvPoison, false, true);
127-
env->Send(MakeSharedPageCacheId(), TActorId{}, new NMemory::TEvConsumerLimit(0_MB));
128-
WaitEvent(env, NMemory::EvConsumerLimit);
129-
env->Send(MakeSharedPageCacheId(), TActorId{}, new NMemory::TEvConsumerLimit(8_MB));
130-
WaitEvent(env, NMemory::EvConsumerLimit);
127+
128+
env->GetMemObserver()->NotifyStat({200*MB, 100*MB, 100*MB});
129+
WaitEvent(env, NSharedCache::EvMem);
130+
131+
env->GetMemObserver()->NotifyStat({100*MB, 200*MB, 200*MB});
132+
WaitEvent(env, NSharedCache::EvMem);
133+
131134
env.FireDummyTablet(ui32(NFake::TDummy::EFlg::Comp));
132135
}
133136

@@ -260,8 +263,9 @@ Y_UNIT_TEST(MemTableLimits) {
260263
Cerr << "...waiting until compacted" << Endl;
261264
env.WaitFor<NFake::TEvCompacted>();
262265

266+
TRetriedCounters retried;
263267
for (i64 key = 0; key < 10; ++key) {
264-
env.SendSync(new NFake::TEvExecute{ new TTxReadRow(key) });
268+
env.SendSync(new NFake::TEvExecute{ new TTxReadRow(key, retried) });
265269
}
266270

267271
// write 10 rows, each ~50KB

0 commit comments

Comments
 (0)