1
+ # This test verifies that the allocator correctly handles IO overload by
2
+ # avoiding placement of replicas on stores that exceed the IO threshold. It
3
+ # sets up a 5-node cluster where store 5 has an IO threshold of 1, causing it
4
+ # to be considered overloaded and excluded from replica placement decisions.
5
+ # It is expected that s5 will start with 0 replicas and stay at 0 replicas for
6
+ # the duration of the test.
1
7
skip_under_ci
2
8
----
3
9
4
10
gen_cluster nodes=5
5
11
----
6
12
7
- gen_ranges ranges=500 placement_type=skewed
13
+ gen_ranges ranges=500 placement_type=replica_placement
14
+ {s1,s2,s3}:1
15
+ {s1,s2,s4}:1
8
16
----
17
+ {s1:*,s2,s3}:1
18
+ {s1:*,s2,s4}:1
9
19
10
20
set_capacity store=5 io_threshold=1
11
21
----
@@ -14,37 +24,21 @@ set_capacity store=5 io_threshold=1
14
24
assertion type=stat stat=replicas stores=(5) exact_bound=0 ticks=5
15
25
----
16
26
17
- eval duration=10m seed=42 metrics=(replicas,leases) cfgs=(sma-count,mma-only)
27
+ eval duration=5m seed=42 metrics=(replicas,leases) cfgs=(sma-count,mma-only)
18
28
----
19
- leases#1: first: [s1=259, s2=129, s3=64, s4=32, s5=16] (stddev=88.43, mean=100.00, sum=500)
20
- leases#1: last: [s1=180, s2=102, s3=106, s4=106, s5=6] (stddev=55.34, mean=100.00, sum=500)
21
- leases#1: thrash_pct: [s1=23%, s2=23%, s3=20%, s4=27%, s5=0%] (sum=93%)
22
- replicas#1: first: [s1=500, s2=456, s3=262, s4=165, s5=117] (stddev=153.29, mean=300.00, sum=1500)
23
- replicas#1: last: [s1=347, s2=343, s3=348, s4=345, s5=117] (stddev=91.52, mean=300.00, sum=1500)
24
- replicas#1: thrash_pct: [s1=47%, s2=44%, s3=46%, s4=48%, s5=0%] (sum=184%)
25
- artifacts[sma-count]: 937f126429994d65
26
- failed assertion sample 1
27
- stat=replicas value=(=0.00) ticks=5
28
- store=5 stat=117.00
29
- store=5 stat=117.00
30
- store=5 stat=117.00
31
- store=5 stat=117.00
32
- store=5 stat=117.00
33
- store=5 stat=117.00
29
+ leases#1: first: [s1=500, s2=0, s3=0, s4=0, s5=0] (stddev=200.00, mean=100.00, sum=500)
30
+ leases#1: last: [s1=329, s2=25, s3=75, s4=71, s5=0] (stddev=117.93, mean=100.00, sum=500)
31
+ leases#1: thrash_pct: [s1=0%, s2=0%, s3=0%, s4=0%, s5=0%] (sum=0%)
32
+ replicas#1: first: [s1=500, s2=500, s3=250, s4=250, s5=0] (stddev=187.08, mean=300.00, sum=1500)
33
+ replicas#1: last: [s1=375, s2=375, s3=375, s4=375, s5=0] (stddev=150.00, mean=300.00, sum=1500)
34
+ replicas#1: thrash_pct: [s1=0%, s2=0%, s3=3%, s4=0%, s5=0%] (sum=3%)
35
+ artifacts[sma-count]: 742eaa2acee55191
34
36
==========================
35
- leases#1: first: [s1=259 , s2=129 , s3=64 , s4=32 , s5=16 ] (stddev=88.43 , mean=100.00, sum=500)
36
- leases#1: last: [s1=259 , s2=145 , s3=64 , s4=32 , s5=0] (stddev=92.98 , mean=100.00, sum=500)
37
+ leases#1: first: [s1=500 , s2=0 , s3=0 , s4=0 , s5=0 ] (stddev=200.00 , mean=100.00, sum=500)
38
+ leases#1: last: [s1=500 , s2=0 , s3=0 , s4=0 , s5=0] (stddev=200.00 , mean=100.00, sum=500)
37
39
leases#1: thrash_pct: [s1=0%, s2=0%, s3=0%, s4=0%, s5=0%] (sum=0%)
38
- replicas#1: first: [s1=500, s2=456 , s3=262 , s4=165 , s5=117 ] (stddev=153.29 , mean=300.00, sum=1500)
39
- replicas#1: last: [s1=500, s2=456 , s3=262 , s4=165 , s5=117 ] (stddev=153.29 , mean=300.00, sum=1500)
40
+ replicas#1: first: [s1=500, s2=500 , s3=250 , s4=250 , s5=0 ] (stddev=187.08 , mean=300.00, sum=1500)
41
+ replicas#1: last: [s1=500, s2=500 , s3=250 , s4=250 , s5=0 ] (stddev=187.08 , mean=300.00, sum=1500)
40
42
replicas#1: thrash_pct: [s1=0%, s2=0%, s3=0%, s4=0%, s5=0%] (sum=0%)
41
- artifacts[mma-only]: 88981cebae8fb4b9
42
- failed assertion sample 1
43
- stat=replicas value=(=0.00) ticks=5
44
- store=5 stat=117.00
45
- store=5 stat=117.00
46
- store=5 stat=117.00
47
- store=5 stat=117.00
48
- store=5 stat=117.00
49
- store=5 stat=117.00
43
+ artifacts[mma-only]: d6dfa8b63a078f25
50
44
==========================
0 commit comments