Commit 7eaf468
feat: Adapt flow control to per-request saturation (kubernetes-sigs#1622)
This commit refactors the flow control `ShardProcessor` to align with
the new `SaturationDetector` contract (introduced in 7d84fb9), which
evaluates saturation for a specific set of candidate pods rather than
for the entire pool.
This change fundamentally alters the dispatching logic to prioritize
strict fairness and priority over work conservation.
The `BandFilter` abstraction has been removed, and the `ShardProcessor`
now performs a post-selection viability check. After policies select
the fairest request, the `SaturationDetector` is called with the
candidate pods for only that specific request. If the check fails, the
processor stops the entire dispatch cycle for the current tick,
enforcing Head-of-Line blocking to prevent priority inversion.
This new model correctly upholds a strict fairness and priority
contract. However, it introduces a known trade-off where the system may
leave resources idle if the fairest request is blocked, rather than
finding other viable work (the "noisy neighbor" problem).1 parent 0c63011 commit 7eaf468
File tree
10 files changed
+95
-463
lines changed- pkg/epp/flowcontrol
- contracts
- mocks
- controller
- internal
- types
- mocks
10 files changed
+95
-463
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
37 | 38 | | |
38 | 39 | | |
39 | 40 | | |
| |||
112 | 113 | | |
113 | 114 | | |
114 | 115 | | |
115 | | - | |
| 116 | + | |
116 | 117 | | |
117 | 118 | | |
118 | | - | |
| 119 | + | |
119 | 120 | | |
120 | | - | |
| 121 | + | |
121 | 122 | | |
122 | 123 | | |
123 | 124 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
19 | | - | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
20 | 24 | | |
21 | 25 | | |
22 | 26 | | |
| |||
32 | 36 | | |
33 | 37 | | |
34 | 38 | | |
35 | | - | |
| 39 | + | |
36 | 40 | | |
37 | 41 | | |
38 | | - | |
| 42 | + | |
39 | 43 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
58 | 58 | | |
59 | 59 | | |
60 | 60 | | |
61 | | - | |
| 61 | + | |
62 | 62 | | |
63 | 63 | | |
64 | 64 | | |
| |||
130 | 130 | | |
131 | 131 | | |
132 | 132 | | |
133 | | - | |
| 133 | + | |
134 | 134 | | |
135 | 135 | | |
136 | 136 | | |
137 | 137 | | |
138 | 138 | | |
139 | 139 | | |
140 | 140 | | |
141 | | - | |
| 141 | + | |
142 | 142 | | |
143 | 143 | | |
144 | 144 | | |
| |||
310 | 310 | | |
311 | 311 | | |
312 | 312 | | |
313 | | - | |
314 | 313 | | |
315 | 314 | | |
316 | | - | |
| 315 | + | |
317 | 316 | | |
318 | 317 | | |
319 | 318 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
209 | 209 | | |
210 | 210 | | |
211 | 211 | | |
212 | | - | |
| 212 | + | |
213 | 213 | | |
214 | 214 | | |
215 | 215 | | |
| |||
640 | 640 | | |
641 | 641 | | |
642 | 642 | | |
643 | | - | |
| 643 | + | |
644 | 644 | | |
645 | 645 | | |
646 | 646 | | |
| |||
This file was deleted.
0 commit comments