@@ -310,12 +310,37 @@ const TVector<i64>& TTabletInfo::GetTabletAllowedMetricIds() const {
310
310
return Hive.GetTabletTypeAllowedMetricIds (GetLeader ().Type );
311
311
}
312
312
313
+ bool TTabletInfo::HasAllowedMetric (const TVector<i64>& allowedMetricIds, EResourceToBalance resource) {
314
+ switch (resource) {
315
+ case EResourceToBalance::ComputeResources: {
316
+ auto isComputeMetric = [](i64 metricId) {
317
+ return metricId == NKikimrTabletBase::TMetrics::kCPUFieldNumber ||
318
+ metricId == NKikimrTabletBase::TMetrics::kMemoryFieldNumber ||
319
+ metricId == NKikimrTabletBase::TMetrics::kNetworkFieldNumber ;
320
+ };
321
+ return AnyOf (allowedMetricIds.begin (), allowedMetricIds.end (), isComputeMetric);
322
+ }
323
+ case EResourceToBalance::Counter:
324
+ return true ;
325
+ case EResourceToBalance::CPU:
326
+ return Find (allowedMetricIds, NKikimrTabletBase::TMetrics::kCPUFieldNumber ) != allowedMetricIds.end ();
327
+ case EResourceToBalance::Memory:
328
+ return Find (allowedMetricIds, NKikimrTabletBase::TMetrics::kMemoryFieldNumber ) != allowedMetricIds.end ();
329
+ case EResourceToBalance::Network:
330
+ return Find (allowedMetricIds, NKikimrTabletBase::TMetrics::kNetworkFieldNumber ) != allowedMetricIds.end ();
331
+ }
332
+ }
333
+
334
+ bool TTabletInfo::HasAllowedMetric (EResourceToBalance resource) const {
335
+ return HasAllowedMetric (GetTabletAllowedMetricIds (), resource);
336
+ }
337
+
313
338
void TTabletInfo::UpdateResourceUsage (const NKikimrTabletBase::TMetrics& metrics) {
314
339
TInstant now = TActivationContext::Now ();
315
340
const TVector<i64>& allowedMetricIds (GetTabletAllowedMetricIds ());
316
341
auto before = ResourceValues;
317
342
auto maximum = GetResourceMaximumValues ();
318
- if (Find (allowedMetricIds, NKikimrTabletBase::TMetrics:: kCPUFieldNumber ) != allowedMetricIds. end ( )) {
343
+ if (HasAllowedMetric (allowedMetricIds, EResourceToBalance::CPU )) {
319
344
if (metrics.HasCPU ()) {
320
345
if (metrics.GetCPU () > static_cast <ui64>(std::get<NMetrics::EResource::CPU>(maximum))) {
321
346
BLOG_W (" Ignoring too high CPU metric (" << metrics.GetCPU () << " ) for tablet " << ToString ());
@@ -325,7 +350,7 @@ void TTabletInfo::UpdateResourceUsage(const NKikimrTabletBase::TMetrics& metrics
325
350
}
326
351
}
327
352
}
328
- if (Find (allowedMetricIds, NKikimrTabletBase::TMetrics:: kMemoryFieldNumber ) != allowedMetricIds. end ( )) {
353
+ if (HasAllowedMetric (allowedMetricIds, EResourceToBalance::Memory )) {
329
354
if (metrics.HasMemory ()) {
330
355
if (metrics.GetMemory () > static_cast <ui64>(std::get<NMetrics::EResource::Memory>(maximum))) {
331
356
BLOG_W (" Ignoring too high Memory metric (" << metrics.GetMemory () << " ) for tablet " << ToString ());
@@ -335,7 +360,7 @@ void TTabletInfo::UpdateResourceUsage(const NKikimrTabletBase::TMetrics& metrics
335
360
}
336
361
}
337
362
}
338
- if (Find (allowedMetricIds, NKikimrTabletBase::TMetrics:: kNetworkFieldNumber ) != allowedMetricIds. end ( )) {
363
+ if (HasAllowedMetric (allowedMetricIds, EResourceToBalance::Network )) {
339
364
if (metrics.HasNetwork ()) {
340
365
if (metrics.GetNetwork () > static_cast <ui64>(std::get<NMetrics::EResource::Network>(maximum))) {
341
366
BLOG_W (" Ignoring too high Network metric (" << metrics.GetNetwork () << " ) for tablet " << ToString ());
@@ -396,13 +421,13 @@ TResourceRawValues TTabletInfo::GetResourceMaximumValues() const {
396
421
}
397
422
398
423
i64 TTabletInfo::GetCounterValue (const NKikimrTabletBase::TMetrics& metrics, const TVector<i64>& allowedMetricIds) {
399
- if (Find (allowedMetricIds, NKikimrTabletBase::TMetrics:: kCPUFieldNumber ) != allowedMetricIds. end ( ) && THive::IsValidMetricsCPU (metrics)) {
424
+ if (HasAllowedMetric (allowedMetricIds, EResourceToBalance::CPU ) && THive::IsValidMetricsCPU (metrics)) {
400
425
return 0 ;
401
426
}
402
- if (Find (allowedMetricIds, NKikimrTabletBase::TMetrics:: kMemoryFieldNumber ) != allowedMetricIds. end ( ) && THive::IsValidMetricsMemory (metrics)) {
427
+ if (HasAllowedMetric (allowedMetricIds, EResourceToBalance::Memory ) && THive::IsValidMetricsMemory (metrics)) {
403
428
return 0 ;
404
429
}
405
- if (Find (allowedMetricIds, NKikimrTabletBase::TMetrics:: kNetworkFieldNumber ) != allowedMetricIds. end ( ) && THive::IsValidMetricsNetwork (metrics)) {
430
+ if (HasAllowedMetric (allowedMetricIds, EResourceToBalance::Network ) && THive::IsValidMetricsNetwork (metrics)) {
406
431
return 0 ;
407
432
}
408
433
return 1 ;
@@ -414,13 +439,13 @@ void TTabletInfo::FilterRawValues(TResourceRawValues& values) const {
414
439
if (metrics.GetCounter () == 0 ) {
415
440
std::get<NMetrics::EResource::Counter>(values) = 0 ;
416
441
}
417
- if (Find (allowedMetricIds, NKikimrTabletBase::TMetrics:: kCPUFieldNumber ) == allowedMetricIds. end ( ) || !THive::IsValidMetricsCPU (metrics)) {
442
+ if (! HasAllowedMetric (allowedMetricIds, EResourceToBalance::CPU ) || !THive::IsValidMetricsCPU (metrics)) {
418
443
std::get<NMetrics::EResource::CPU>(values) = 0 ;
419
444
}
420
- if (Find (allowedMetricIds, NKikimrTabletBase::TMetrics:: kMemoryFieldNumber ) == allowedMetricIds. end ( ) || !THive::IsValidMetricsMemory (metrics)) {
445
+ if (! HasAllowedMetric (allowedMetricIds, EResourceToBalance::Memory ) || !THive::IsValidMetricsMemory (metrics)) {
421
446
std::get<NMetrics::EResource::Memory>(values) = 0 ;
422
447
}
423
- if (Find (allowedMetricIds, NKikimrTabletBase::TMetrics:: kNetworkFieldNumber ) == allowedMetricIds. end ( ) || !THive::IsValidMetricsNetwork (metrics)) {
448
+ if (! HasAllowedMetric (allowedMetricIds, EResourceToBalance::Network ) || !THive::IsValidMetricsNetwork (metrics)) {
424
449
std::get<NMetrics::EResource::Network>(values) = 0 ;
425
450
}
426
451
}
@@ -431,13 +456,13 @@ void TTabletInfo::FilterRawValues(TResourceNormalizedValues& values) const {
431
456
if (metrics.GetCounter () == 0 ) {
432
457
std::get<NMetrics::EResource::Counter>(values) = 0 ;
433
458
}
434
- if (Find (allowedMetricIds, NKikimrTabletBase::TMetrics:: kCPUFieldNumber ) == allowedMetricIds. end ( ) || !THive::IsValidMetricsCPU (metrics)) {
459
+ if (! HasAllowedMetric (allowedMetricIds, EResourceToBalance::CPU ) || !THive::IsValidMetricsCPU (metrics)) {
435
460
std::get<NMetrics::EResource::CPU>(values) = 0 ;
436
461
}
437
- if (Find (allowedMetricIds, NKikimrTabletBase::TMetrics:: kMemoryFieldNumber ) == allowedMetricIds. end ( ) || !THive::IsValidMetricsMemory (metrics)) {
462
+ if (! HasAllowedMetric (allowedMetricIds, EResourceToBalance::Memory ) || !THive::IsValidMetricsMemory (metrics)) {
438
463
std::get<NMetrics::EResource::Memory>(values) = 0 ;
439
464
}
440
- if (Find (allowedMetricIds, NKikimrTabletBase::TMetrics:: kNetworkFieldNumber ) == allowedMetricIds. end ( ) || !THive::IsValidMetricsNetwork (metrics)) {
465
+ if (! HasAllowedMetric (allowedMetricIds, EResourceToBalance::Network ) || !THive::IsValidMetricsNetwork (metrics)) {
441
466
std::get<NMetrics::EResource::Network>(values) = 0 ;
442
467
}
443
468
}
0 commit comments