Skip to content

Commit ecf7e68

Browse files
authored
Return MemoryStats to node whiteboard (#8455)
1 parent 72213a0 commit ecf7e68

File tree

4 files changed

+32
-24
lines changed

4 files changed

+32
-24
lines changed

ydb/core/memory_controller/memory_controller.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,6 @@ class TMemoryController : public TActorBootstrapped<TMemoryController> {
224224
memoryStats.SetHardLimit(hardLimitBytes);
225225
memoryStats.SetSoftLimit(softLimitBytes);
226226
memoryStats.SetTargetUtilization(targetUtilizationBytes);
227-
memoryStats.SetConsumersConsumption(consumersConsumption);
228-
memoryStats.SetOtherConsumption(otherConsumption);
229227
if (hasMemTotalHardLimit) memoryStats.SetExternalConsumption(externalConsumption);
230228

231229
ui64 consumersLimitBytes = 0;
@@ -251,7 +249,6 @@ class TMemoryController : public TActorBootstrapped<TMemoryController> {
251249
}
252250

253251
Counters->GetCounter("Stats/ConsumersLimit")->Set(consumersLimitBytes);
254-
memoryStats.SetConsumersLimit(consumersLimitBytes);
255252

256253
ui64 queryExecutionConsumption = TAlignedPagePool::GetGlobalPagePoolSize();
257254
ui64 queryExecutionLimitBytes = ResourceBrokerSelfConfig.QueryExecutionLimitBytes

ydb/core/protos/memory_stats.proto

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ message TMemoryStats {
1414
optional uint64 SoftLimit = 8;
1515
optional uint64 TargetUtilization = 9;
1616

17-
optional uint64 ConsumersConsumption = 10;
18-
optional uint64 ConsumersLimit = 11;
19-
optional uint64 OtherConsumption = 12;
17+
reserved 10;
18+
reserved 11;
19+
reserved 12;
2020
optional uint64 ExternalConsumption = 13;
2121

2222
optional uint64 SharedCacheConsumption = 14;

ydb/core/protos/node_whiteboard.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import "ydb/library/actors/protos/interconnect.proto";
22
import "ydb/core/protos/tablet.proto";
33
import "ydb/core/protos/subdomains.proto";
44
import "ydb/core/protos/blobstorage_disk.proto";
5+
import "ydb/core/protos/memory_stats.proto";
56
import "google/protobuf/descriptor.proto";
67
import "ydb/core/protos/tracing.proto";
78

@@ -339,6 +340,7 @@ message TSystemStateInfo {
339340
optional TNodeSharedCache SharedCacheStats = 35; // TODO: use memory stats
340341
optional uint32 TotalSessions = 36 [(DefaultField) = true];
341342
optional string NodeName = 37 [(DefaultField) = true];
343+
optional NKikimrMemory.TMemoryStats MemoryStats = 38;
342344
}
343345

344346
message TEvSystemStateRequest {

ydb/core/tablet/node_whiteboard.cpp

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@ class TNodeWhiteboardService : public TActorBootstrapped<TNodeWhiteboardService>
7777
i64 MaxClockSkewWithPeerUs;
7878
ui32 MaxClockSkewPeerId;
7979
NKikimrWhiteboard::TSystemStateInfo SystemStateInfo;
80-
NKikimrMemory::TMemoryStats MemoryStats;
8180
THolder<NTracing::ITraceCollection> TabletIntrospectionData;
8281

8382
::NMonitoring::TDynamicCounters::TCounterPtr MaxClockSkewWithPeerUsCounter;
@@ -691,31 +690,41 @@ class TNodeWhiteboardService : public TActorBootstrapped<TNodeWhiteboardService>
691690
}
692691

693692
void Handle(TEvWhiteboard::TEvMemoryStatsUpdate::TPtr &ev, const TActorContext &ctx) {
694-
MemoryStats.Swap(&ev->Get()->Record);
693+
const auto& memoryStats = ev->Get()->Record;
695694

696695
// Note: copy stats to sys info fields for backward compatibility
697-
NKikimrWhiteboard::TSystemStateInfo systemStateUpdate;
698-
if (MemoryStats.HasAnonRss()) {
699-
systemStateUpdate.SetMemoryUsed(MemoryStats.GetAnonRss());
696+
if (memoryStats.HasAnonRss()) {
697+
SystemStateInfo.SetMemoryUsed(memoryStats.GetAnonRss());
698+
} else {
699+
SystemStateInfo.ClearMemoryUsed();
700700
}
701-
if (MemoryStats.HasHardLimit()) {
702-
systemStateUpdate.SetMemoryLimit(MemoryStats.GetHardLimit());
701+
if (memoryStats.HasHardLimit()) {
702+
SystemStateInfo.SetMemoryLimit(memoryStats.GetHardLimit());
703+
} else {
704+
SystemStateInfo.ClearMemoryLimit();
703705
}
704-
if (MemoryStats.HasAllocatedMemory()) {
705-
systemStateUpdate.SetMemoryUsedInAlloc(MemoryStats.GetAllocatedMemory());
706+
if (memoryStats.HasAllocatedMemory()) {
707+
SystemStateInfo.SetMemoryUsedInAlloc(memoryStats.GetAllocatedMemory());
708+
} else {
709+
SystemStateInfo.ClearMemoryUsedInAlloc();
706710
}
707-
708-
// Note: is rendered in UI as 'Caches', so let's pass aggregated caches stats (not only Shared Cache stats)
709-
if (MemoryStats.HasConsumersConsumption()) {
710-
systemStateUpdate.MutableSharedCacheStats()->SetUsedBytes(MemoryStats.GetConsumersConsumption());
711+
if (memoryStats.HasSharedCacheConsumption()) {
712+
SystemStateInfo.MutableSharedCacheStats()->SetUsedBytes(memoryStats.GetSharedCacheConsumption());
713+
} else {
714+
SystemStateInfo.MutableSharedCacheStats()->ClearUsedBytes();
711715
}
712-
if (MemoryStats.HasConsumersLimit()) {
713-
systemStateUpdate.MutableSharedCacheStats()->SetLimitBytes(MemoryStats.GetConsumersLimit());
716+
if (memoryStats.HasSharedCacheLimit()) {
717+
SystemStateInfo.MutableSharedCacheStats()->SetLimitBytes(memoryStats.GetSharedCacheLimit());
718+
} else {
719+
SystemStateInfo.MutableSharedCacheStats()->ClearLimitBytes();
714720
}
715721

716-
if (CheckedMerge(SystemStateInfo, systemStateUpdate)) {
717-
SystemStateInfo.SetChangeTime(ctx.Now().MilliSeconds());
718-
}
722+
SystemStateInfo.MutableMemoryStats()->Swap(&ev->Get()->Record);
723+
724+
// Note: there is no big reason (and an easy way) to compare the previous and the new memory stats
725+
// and allocated memory stat is expected to change every time
726+
// so always update change time unconditionally
727+
SystemStateInfo.SetChangeTime(ctx.Now().MilliSeconds());
719728
}
720729

721730
void Handle(TEvWhiteboard::TEvSystemStateAddEndpoint::TPtr &ev, const TActorContext &ctx) {

0 commit comments

Comments
 (0)