Skip to content

Commit 30b2663

Browse files
committed
Update documentation
Signed-off-by: Loic Marchal <lmarchal@redhat.com>
1 parent eabf7c2 commit 30b2663

2 files changed

Lines changed: 64 additions & 0 deletions

File tree

pkg/epp/framework/plugins/flowcontrol/usagelimits/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@ flowControl:
2525
---
2626
2727
## Related Documentation
28+
- [Priority Holdback Policy](priorityholdback/README.md)
2829
- [Flow Control Overview](../fairness/README.md)
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Priority Holdback Policy Plugin
2+
3+
**Type:** `priority-holdback-policy`
4+
5+
A usage limit policy that computes differentiated admission ceilings per priority level. As pool saturation rises, lower-priority traffic is gated first, reserving capacity for higher-priority work.
6+
7+
This replaces the default static usage limit policy (which applies a single ceiling to all priorities) with priority-aware stepped gating.
8+
9+
## What It Does
10+
11+
Each active priority level receives an admission ceiling in [0.0, 1.0]. During each dispatch cycle, the Flow Controller compares current pool saturation against each priority's ceiling. When saturation exceeds a priority's ceiling, that priority's traffic is held back.
12+
13+
Higher-priority traffic continues to flow until saturation reaches its own (higher) ceiling, providing quality-of-service differentiation under load.
14+
15+
## Strategies
16+
17+
Two strategies are available for computing per-priority ceilings. Both produce `maxCeiling` for the highest priority and `minCeiling` for the lowest.
18+
19+
### `stepwise-spread`
20+
21+
Distributes ceilings in equal steps by rank, ignoring numerical priority values.
22+
23+
c_i = maxCeiling - i * (maxCeiling - minCeiling) / (N - 1)
24+
25+
Where `i` is the index in descending priority order (0 = highest) and `N` is the count of active priorities.
26+
27+
Use when priorities represent ordinal categories (e.g., "critical", "normal", "batch") where the numerical values are arbitrary labels.
28+
29+
### `linear-proportional`
30+
31+
Scales ceilings proportionally to the numerical priority value within the observed active range.
32+
33+
r_i = (p_i - pMin) / (pMax - pMin)
34+
c_i = minCeiling + r_i * (maxCeiling - minCeiling)
35+
36+
Use when the numerical spacing between priority values carries meaning and priorities that are numerically close should behave similarly under pressure.
37+
38+
**Parameters:**
39+
40+
- `strategy` (string, required, no default): Gating algorithm: `"stepwise-spread"` or `"linear-proportional"`.
41+
- `minCeiling` (float64, required, no default): Ceiling for the lowest priority. Must be in `[0.0, 1.0)`.
42+
- `maxCeiling` (float64, required, default: `1.0`): Ceiling for the highest priority. Must be in `(0.0, 1.0]`.
43+
44+
`minCeiling` is required because it determines how aggressively low-priority traffic is gated and there is no universally correct default.
45+
46+
**Configuration Example:**
47+
```yaml
48+
plugins:
49+
- type: priority-holdback-policy
50+
name: my-holdback-policy
51+
parameters:
52+
strategy: stepwise-spread
53+
minCeiling: 0.4
54+
maxCeiling: 0.9
55+
flowControl:
56+
usageLimitPolicyPluginRef: my-holdback-policy
57+
```
58+
59+
---
60+
61+
## Related Documentation
62+
- [Static Usage Limit Policy](../README.md)
63+
- [Flow Control Overview](../../fairness/README.md)

0 commit comments

Comments
 (0)