Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions ydb/core/mind/hive/tx__update_tablet_metrics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class TTxUpdateTabletMetrics : public TTransactionBase<THive> {
}
TNodeInfo* node = Self->FindNode(nodeId);
if (node != nullptr) {
node->UpdateResourceMaximum(record.GetResourceMaximum());
node->UpdateResourceTotalUsage(record);
node->Statistics.SetLastAliveTimestamp(now.MilliSeconds());
node->ActualizeNodeStatistics(now);
Expand Down
36 changes: 20 additions & 16 deletions ydb/core/mind/local.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ class TLocalNodeRegistrar : public TActorBootstrapped<TLocalNodeRegistrar> {
ui64 UserPoolUsage = 0; // (usage uS x threads) / sec
ui64 MemUsage = 0;
ui64 MemLimit = 0;
ui64 CpuLimit = 0; // PotentialMaxThreadCount of UserPool
double NodeUsage = 0;

bool SentDrainNode = false;
Expand Down Expand Up @@ -271,27 +272,28 @@ class TLocalNodeRegistrar : public TActorBootstrapped<TLocalNodeRegistrar> {
HandlePipeDestroyed(ctx);
}

void SendStatusOk(const TActorContext &ctx) {
LOG_DEBUG_S(ctx, NKikimrServices::LOCAL, "TLocalNodeRegistrar SendStatusOk");
TAutoPtr<TEvLocal::TEvStatus> eventStatus = new TEvLocal::TEvStatus(TEvLocal::TEvStatus::StatusOk);
auto& record = eventStatus->Record;
record.SetStartTime(StartTime.GetValue());
record.MutableResourceMaximum()->CopyFrom(ResourceLimit);
NActors::TExecutorPoolState userPoolState;
ctx.ExecutorThread.ActorSystem->GetExecutorPoolState(AppData()->UserPoolId, userPoolState);

if (!record.GetResourceMaximum().HasCPU()) {
if (userPoolState.PossibleMaxLimit) {
record.MutableResourceMaximum()->SetCPU(userPoolState.PossibleMaxLimit * 1000000);
void FillResourceMaximum(NKikimrTabletBase::TMetrics* record) {
record->CopyFrom(ResourceLimit);
if (!record->HasCPU()) {
if (CpuLimit != 0) {
record->SetCPU(CpuLimit);
}
}
if (!record.GetResourceMaximum().HasMemory()) {
if (!record->HasMemory()) {
if (MemLimit != 0) {
record.MutableResourceMaximum()->SetMemory(MemLimit);
record->SetMemory(MemLimit);
} else {
record.MutableResourceMaximum()->SetMemory(NSystemInfo::TotalMemorySize());
record->SetMemory(NSystemInfo::TotalMemorySize());
}
}
}

void SendStatusOk(const TActorContext &ctx) {
LOG_DEBUG_S(ctx, NKikimrServices::LOCAL, "TLocalNodeRegistrar SendStatusOk");
TAutoPtr<TEvLocal::TEvStatus> eventStatus = new TEvLocal::TEvStatus(TEvLocal::TEvStatus::StatusOk);
auto& record = eventStatus->Record;
record.SetStartTime(StartTime.GetValue());
FillResourceMaximum(record.MutableResourceMaximum());
NTabletPipe::SendData(ctx, HivePipeClient, eventStatus.Release());
}

Expand Down Expand Up @@ -585,6 +587,7 @@ class TLocalNodeRegistrar : public TActorBootstrapped<TLocalNodeRegistrar> {
record.MutableTotalResourceUsage()->SetMemory(MemUsage);
}
record.SetTotalNodeUsage(NodeUsage);
FillResourceMaximum(record.MutableResourceMaximum());
NTabletPipe::SendData(ctx, HivePipeClient, event.Release());
SendTabletMetricsTime = ctx.Now();
} else {
Expand Down Expand Up @@ -647,7 +650,8 @@ class TLocalNodeRegistrar : public TActorBootstrapped<TLocalNodeRegistrar> {
const NKikimrWhiteboard::TSystemStateInfo& info = record.GetSystemStateInfo(0);
if (static_cast<ui32>(info.PoolStatsSize()) > AppData()->UserPoolId) {
const auto& poolStats(info.GetPoolStats(AppData()->UserPoolId));
UserPoolUsage = poolStats.usage() * poolStats.limit() * 1000000; // uS
CpuLimit = poolStats.limit() * 1'000'000; // microseconds
UserPoolUsage = poolStats.usage() * CpuLimit; // microseconds
}

// Note: we use allocated memory because MemoryUsed(AnonRSS) has lag
Expand Down
1 change: 1 addition & 0 deletions ydb/core/protos/hive.proto
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,7 @@ message TEvTabletMetrics {
repeated TTabletMetrics TabletMetrics = 1;
optional NKikimrTabletBase.TMetrics TotalResourceUsage = 2;
optional double TotalNodeUsage = 3;
optional NKikimrTabletBase.TMetrics ResourceMaximum = 4;
}

message TEvReassignTablet {
Expand Down