Skip to content

Commit c64e2c3

Browse files
committed
asim: check for LBRebalancingMultiMetric in ShouldRebalanceStore
This commit updates the old store rebalancer's ShouldRebalanceStore to check the LBRebalancingMultiMetric cluster setting. asim still invokes this method when checking changes from the old store rebalancer. Epic: none Release note: none
1 parent d1dad0f commit c64e2c3

File tree

2 files changed

+42
-33
lines changed

2 files changed

+42
-33
lines changed

pkg/kv/kvserver/asim/tests/testdata/non_rand/load_distribution_movement_disabled.txt

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -63,25 +63,25 @@ last store values: [s1=39, s2=39, s3=39, s4=9, s5=9, s6=9, s7=9, s8=9, s9=9, s10
6363

6464
plot stat=leases
6565
----
66-
33.00 ┼───────────────
67-
31.00 ┤ ╰╮
68-
29.00 ┤
69-
27.00 ┤
70-
25.00 ┤ ╰╮
71-
23.00 ┤
72-
21.00 ┤
73-
19.00 ┤
74-
17.00 ┤ ╰╮
75-
15.00 ┤
76-
13.00 ┤ ╭────────────╮
77-
11.00 ┤ │────────────╰───────────────────────────────────────────────
78-
9.00 ┤ ╭╯ ╰──────────────────────────────
79-
7.00 ┤ ╭╯
80-
5.00 ┤ │╯ ╭──────────────────────────────────────────────
66+
33.00 ┼───────────────────────────────────────────────────────────────────────────────
67+
31.00 ┤
68+
29.00 ┤
69+
27.00 ┤
70+
25.00 ┤
71+
23.00 ┤
72+
21.00 ┤
73+
19.00 ┤
74+
17.00 ┤
75+
15.00 ┤
76+
13.00 ┤
77+
11.00 ┤
78+
9.00 ┤
79+
7.00 ┤
80+
5.00 ┤
8181
3.00 ┼───────────────────────────────────────────────────────────────────────────────
8282
leases
8383
initial store values: [s1=33, s2=3, s3=3, s4=3, s5=3, s6=3, s7=3, s8=3, s9=3, s10=3] (stddev=9.00, mean=6.00, sum=60)
84-
last store values: [s1=12, s2=10, s3=11, s4=3, s5=5, s6=5, s7=3, s8=3, s9=4, s10=4] (stddev=3.38, mean=6.00, sum=60)
84+
last store values: [s1=33, s2=3, s3=3, s4=3, s5=3, s6=3, s7=3, s8=3, s9=3, s10=3] (stddev=9.00, mean=6.00, sum=60)
8585

8686
# Next setup a cluster such that there will be imbalanced CPU usage but
8787
# balanced write load.
@@ -140,22 +140,22 @@ last store values: [s1=39, s2=39, s3=39, s4=9, s5=9, s6=9, s7=9, s8=9, s9=9, s10
140140

141141
plot stat=leases sample=2
142142
----
143-
33.00 ┼───────────────
144-
31.00 ┤ ╰╮
145-
29.00 ┤
146-
27.00 ┤
147-
25.00 ┤ ╰╮
148-
23.00 ┤
149-
21.00 ┤
150-
19.00 ┤
151-
17.00 ┤ ╰╮
152-
15.00 ┤
153-
13.00 ┤ ╭────────────╮
154-
11.00 ┤ │────────────╰───────────────────────────────────────────────
155-
9.00 ┤ ╭╯
156-
7.00 ┤ ╭╯
157-
5.00 ┤ │╯ ╭──────────────────────────────────────────────
143+
33.00 ┼───────────────────────────────────────────────────────────────────────────────
144+
31.00 ┤
145+
29.00 ┤
146+
27.00 ┤
147+
25.00 ┤
148+
23.00 ┤
149+
21.00 ┤
150+
19.00 ┤
151+
17.00 ┤
152+
15.00 ┤
153+
13.00 ┤
154+
11.00 ┤
155+
9.00 ┤
156+
7.00 ┤
157+
5.00 ┤
158158
3.00 ┼───────────────────────────────────────────────────────────────────────────────
159159
leases
160160
initial store values: [s1=33, s2=3, s3=3, s4=3, s5=3, s6=3, s7=3, s8=3, s9=3, s10=3] (stddev=9.00, mean=6.00, sum=60)
161-
last store values: [s1=11, s2=11, s3=11, s4=3, s5=5, s6=5, s7=3, s8=3, s9=4, s10=4] (stddev=3.35, mean=6.00, sum=60)
161+
last store values: [s1=33, s2=3, s3=3, s4=3, s5=3, s6=3, s7=3, s8=3, s9=3, s10=3] (stddev=9.00, mean=6.00, sum=60)

pkg/kv/kvserver/store_rebalancer.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,8 @@ func NewStoreRebalancer(
216216
return !rq.store.cfg.SpanConfigSubscriber.LastUpdated().IsEmpty()
217217
},
218218
disabled: func() bool {
219-
return LoadBasedRebalancingMode.Get(&st.SV) == LBRebalancingOff ||
219+
mode := LoadBasedRebalancingMode.Get(&st.SV)
220+
return mode == LBRebalancingOff || mode == LBRebalancingMultiMetric ||
220221
rq.store.cfg.TestingKnobs.DisableStoreRebalancer
221222
},
222223
}
@@ -503,6 +504,14 @@ func (sr *StoreRebalancer) ShouldRebalanceStore(ctx context.Context, rctx *Rebal
503504
return false
504505
}
505506

507+
if !(rctx.mode == LBRebalancingLeasesOnly || rctx.mode == LBRebalancingLeasesAndReplicas) {
508+
// There's nothing to do, the store rebalancer is disabled. Note that this
509+
// is redundant when called via the store rebalancer's Start method, but
510+
// it's necessary when called from tests, which don't start the store
511+
// rebalancer loop, such as the asim pkg.
512+
return false
513+
}
514+
506515
// We only bother rebalancing stores that are fielding more than the
507516
// cluster-level overfull threshold of load.
508517
if rctx.LessThanMaxThresholds() {

0 commit comments

Comments
 (0)