@@ -54,7 +54,7 @@ using TPendingRequests = THashMap<TIntrusivePtr<TRequest>, ui32>;
54
54
55
55
struct TCollection {
56
56
TLogoBlobID Id;
57
- TSet <TActorId> InMemoryOwners;
57
+ TMap <TActorId, TIntrusiveConstPtr<NPageCollection::IPageCollection> > InMemoryOwners;
58
58
TSet<TActorId> Owners;
59
59
TPageMap<TIntrusivePtr<TPage>> PageMap;
60
60
ui64 TotalSize;
@@ -765,8 +765,8 @@ class TSharedPageCache : public TActorBootstrapped<TSharedPageCache> {
765
765
}
766
766
767
767
if (loadedPages) {
768
- for (const auto & owner : collection->InMemoryOwners ) {
769
- NotifyOwners (msg-> PageCollection , loadedPages, owner);
768
+ for (const auto & [ owner, pageCollection] : collection->InMemoryOwners ) {
769
+ NotifyOwners (pageCollection , loadedPages, owner);
770
770
}
771
771
}
772
772
}
@@ -1101,7 +1101,7 @@ class TSharedPageCache : public TActorBootstrapped<TSharedPageCache> {
1101
1101
}
1102
1102
1103
1103
void TryMoveToTryKeepInMemoryCache (TCollection& collection, TIntrusiveConstPtr<NPageCollection::IPageCollection> pageCollection, const TActorId& owner) {
1104
- if (!collection.InMemoryOwners .insert (owner).second ) {
1104
+ if (!collection.InMemoryOwners .emplace (owner, pageCollection ).second ) {
1105
1105
return ;
1106
1106
}
1107
1107
@@ -1175,15 +1175,9 @@ class TSharedPageCache : public TActorBootstrapped<TSharedPageCache> {
1175
1175
case PageStateLoaded:
1176
1176
Cache.Erase (page);
1177
1177
page->EnsureNoCacheFlags ();
1178
+ RemoveActivePage (page);
1178
1179
page->CacheMode = targetMode;
1179
- switch (page->CacheMode ) {
1180
- case ECacheMode::Regular:
1181
- Counters.ActiveInMemoryBytes ->Sub (TPageTraits::GetSize (page));
1182
- break ;
1183
- case ECacheMode::TryKeepInMemory:
1184
- Counters.ActiveInMemoryBytes ->Add (TPageTraits::GetSize (page));
1185
- break ;
1186
- }
1180
+ AddActivePage (page);
1187
1181
Evict (Cache.Insert (page));
1188
1182
break ;
1189
1183
default :
@@ -1256,48 +1250,54 @@ class TSharedPageCache : public TActorBootstrapped<TSharedPageCache> {
1256
1250
}
1257
1251
1258
1252
inline void AddActivePage (const TPage* page) {
1259
- StatActiveBytes += sizeof (TPage) + page->Size ;
1253
+ auto pageSize = TPageTraits::GetSize (page);
1254
+ StatActiveBytes += pageSize;
1260
1255
Counters.ActivePages ->Inc ();
1261
- Counters.ActiveBytes ->Add (sizeof (TPage) + page-> Size );
1256
+ Counters.ActiveBytes ->Add (pageSize );
1262
1257
if (page->CacheMode == ECacheMode::TryKeepInMemory) {
1263
- Counters.ActiveInMemoryBytes ->Add (sizeof (TPage) + page-> Size );
1258
+ Counters.ActiveInMemoryBytes ->Add (pageSize );
1264
1259
}
1265
1260
}
1266
1261
1267
1262
inline void RemoveActivePage (const TPage* page) {
1268
- Y_DEBUG_ABORT_UNLESS (StatActiveBytes >= sizeof (TPage) + page->Size );
1269
- StatActiveBytes -= sizeof (TPage) + page->Size ;
1263
+ auto pageSize = TPageTraits::GetSize (page);
1264
+ Y_DEBUG_ABORT_UNLESS (StatActiveBytes >= pageSize);
1265
+ StatActiveBytes -= pageSize;
1270
1266
Counters.ActivePages ->Dec ();
1271
- Counters.ActiveBytes ->Sub (sizeof (TPage) + page-> Size );
1267
+ Counters.ActiveBytes ->Sub (pageSize );
1272
1268
if (page->CacheMode == ECacheMode::TryKeepInMemory) {
1273
- Counters.ActiveInMemoryBytes ->Sub (sizeof (TPage) + page-> Size );
1269
+ Counters.ActiveInMemoryBytes ->Sub (pageSize );
1274
1270
}
1275
1271
}
1276
1272
1277
1273
inline void AddPassivePage (const TPage* page) {
1278
- StatPassiveBytes += sizeof (TPage) + page->Size ;
1274
+ auto pageSize = TPageTraits::GetSize (page);
1275
+ StatPassiveBytes += pageSize;
1279
1276
Counters.PassivePages ->Inc ();
1280
- Counters.PassiveBytes ->Add (sizeof (TPage) + page-> Size );
1277
+ Counters.PassiveBytes ->Add (pageSize );
1281
1278
}
1282
1279
1283
1280
inline void RemovePassivePage (const TPage* page) {
1284
- Y_DEBUG_ABORT_UNLESS (StatPassiveBytes >= sizeof (TPage) + page->Size );
1285
- StatPassiveBytes -= sizeof (TPage) + page->Size ;
1281
+ auto pageSize = TPageTraits::GetSize (page);
1282
+ Y_DEBUG_ABORT_UNLESS (StatPassiveBytes >= pageSize);
1283
+ StatPassiveBytes -= pageSize;
1286
1284
Counters.PassivePages ->Dec ();
1287
- Counters.PassiveBytes ->Sub (sizeof (TPage) + page-> Size );
1285
+ Counters.PassiveBytes ->Sub (pageSize );
1288
1286
}
1289
1287
1290
1288
inline void AddInFlyPages (ui64 count, ui64 size) {
1291
- StatLoadInFlyBytes += size;
1289
+ ui64 totalBytes = size + sizeof (TPage) * count;
1290
+ StatLoadInFlyBytes += totalBytes;
1292
1291
Counters.LoadInFlyPages ->Add (count);
1293
- Counters.LoadInFlyBytes ->Add (size );
1292
+ Counters.LoadInFlyBytes ->Add (totalBytes );
1294
1293
}
1295
1294
1296
1295
inline void RemoveInFlyPages (ui64 count, ui64 size) {
1297
- Y_ENSURE (StatLoadInFlyBytes >= size);
1298
- StatLoadInFlyBytes -= size;
1296
+ ui64 totalBytes = size + sizeof (TPage) * count;
1297
+ Y_ENSURE (StatLoadInFlyBytes >= totalBytes);
1298
+ StatLoadInFlyBytes -= totalBytes;
1299
1299
Counters.LoadInFlyPages ->Sub (count);
1300
- Counters.LoadInFlyBytes ->Sub (size );
1300
+ Counters.LoadInFlyBytes ->Sub (totalBytes );
1301
1301
}
1302
1302
1303
1303
public:
0 commit comments