Skip to content

Commit 6ff8427

Browse files
committed
add config
1 parent 76a2799 commit 6ff8427

File tree

4 files changed

+23
-11
lines changed

4 files changed

+23
-11
lines changed

ydb/core/mind/hive/balancer.cpp

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -253,25 +253,30 @@ class THiveBalancer : public NActors::TActorBootstrapped<THiveBalancer>, public
253253
BLOG_TRACE("Balancer on node " << node->Id << ": " << tablets.size() << "/" << nodeTablets.size() << " tablets are suitable for balancing");
254254
if (!tablets.empty()) {
255255
// avoid moving system tablets if possible
256-
auto systemIt = std::partition(tablets.begin(), tablets.end(), [](TTabletInfo* tablet) {
257-
return !THive::IsSystemTablet(tablet->GetTabletType());
258-
});
256+
std::vector<TTabletInfo*>::iterator partitionIt;
257+
if (Hive->GetLessSystemTabletsMoves()) {
258+
partitionIt = std::partition(tablets.begin(), tablets.end(), [](TTabletInfo* tablet) {
259+
return !THive::IsSystemTablet(tablet->GetTabletType());
260+
});
261+
} else {
262+
partitionIt = tablets.end();
263+
}
259264
switch (Hive->GetTabletBalanceStrategy()) {
260265
case NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_OLD_WEIGHTED_RANDOM:
261-
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_OLD_WEIGHTED_RANDOM>(tablets.begin(), systemIt, Settings.ResourceToBalance);
262-
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_OLD_WEIGHTED_RANDOM>(systemIt, tablets.end(), Settings.ResourceToBalance);
266+
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_OLD_WEIGHTED_RANDOM>(tablets.begin(), partitionIt, Settings.ResourceToBalance);
267+
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_OLD_WEIGHTED_RANDOM>(partitionIt, tablets.end(), Settings.ResourceToBalance);
263268
break;
264269
case NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_WEIGHTED_RANDOM:
265-
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_WEIGHTED_RANDOM>(tablets.begin(), systemIt, Settings.ResourceToBalance);
266-
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_WEIGHTED_RANDOM>(systemIt, tablets.end(), Settings.ResourceToBalance);
270+
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_WEIGHTED_RANDOM>(tablets.begin(), partitionIt, Settings.ResourceToBalance);
271+
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_WEIGHTED_RANDOM>(partitionIt, tablets.end(), Settings.ResourceToBalance);
267272
break;
268273
case NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_HEAVIEST:
269-
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_HEAVIEST>(tablets.begin(), systemIt, Settings.ResourceToBalance);
270-
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_HEAVIEST>(systemIt, tablets.end(), Settings.ResourceToBalance);
274+
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_HEAVIEST>(tablets.begin(), partitionIt, Settings.ResourceToBalance);
275+
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_HEAVIEST>(partitionIt, tablets.end(), Settings.ResourceToBalance);
271276
break;
272277
case NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_RANDOM:
273-
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_RANDOM>(tablets.begin(), systemIt, Settings.ResourceToBalance);
274-
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_RANDOM>(systemIt, tablets.end(), Settings.ResourceToBalance);
278+
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_RANDOM>(tablets.begin(), partitionIt, Settings.ResourceToBalance);
279+
BalanceTablets<NKikimrConfig::THiveConfig::HIVE_TABLET_BALANCE_STRATEGY_RANDOM>(partitionIt, tablets.end(), Settings.ResourceToBalance);
275280
break;
276281
}
277282
Tablets.clear();

ydb/core/mind/hive/hive_impl.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -939,6 +939,10 @@ TTabletInfo* FindTabletEvenInDeleting(TTabletId tabletId, TFollowerId followerId
939939
return CurrentConfig.GetNodeUsageRangeToKick();
940940
}
941941

942+
bool GetLessSystemTabletsMoves() const {
943+
return CurrentConfig.GetLessSystemTabletsMoves();
944+
}
945+
942946
static void ActualizeRestartStatistics(google::protobuf::RepeatedField<google::protobuf::uint64>& restartTimestamps, ui64 barrier);
943947
static ui64 GetRestartsPerPeriod(const google::protobuf::RepeatedField<google::protobuf::uint64>& restartTimestamps, ui64 barrier);
944948
static bool IsSystemTablet(TTabletTypes::EType type);

ydb/core/mind/hive/monitoring.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -836,6 +836,7 @@ class TTxMonEvent_Settings : public TTransactionBase<THive>, public TLoggedMonTr
836836
UpdateConfig(db, "MinStorageScatterToBalance", configUpdates);
837837
UpdateConfig(db, "MinGroupUsageToBalance", configUpdates);
838838
UpdateConfig(db, "StorageBalancerInflight", configUpdates);
839+
UpdateConfig(db, "LessSystemTabletsMoves", configUpdates);
839840

840841
if (params.contains("BalancerIgnoreTabletTypes")) {
841842
auto value = params.Get("BalancerIgnoreTabletTypes");
@@ -1182,6 +1183,7 @@ class TTxMonEvent_Settings : public TTransactionBase<THive>, public TLoggedMonTr
11821183
ShowConfig(out, "MinStorageScatterToBalance");
11831184
ShowConfig(out, "MinGroupUsageToBalance");
11841185
ShowConfig(out, "StorageBalancerInflight");
1186+
ShowConfig(out, "LessSystemTabletsMoves");
11851187
ShowConfigForBalancerIgnoreTabletTypes(out);
11861188

11871189
out << "<div class='row' style='margin-top:40px'>";

ydb/core/protos/config.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1471,6 +1471,7 @@ message THiveConfig {
14711471
optional uint64 StorageBalancerInflight = 73 [default = 1];
14721472
optional bool EnableDestroyOperations = 74 [default = false];
14731473
optional double NodeUsageRangeToKick = 75 [default = 0.2];
1474+
optional bool LessSystemTabletsMoves = 77 [default = true];
14741475
}
14751476

14761477
message TBlobCacheConfig {

0 commit comments

Comments
 (0)