timothy-e opened a new pull request, #18807:
URL: https://github.com/apache/pinot/pull/18807
### Summary
Makes three adaptive routing parameters adjustable at runtime via cluster
config changes:
- `hybrid.score.exponent` — the exponent used in the hybrid score formula
`(O+A+B)^N * C`
- `ewma.alpha` — the smoothing factor for exponential moving averages
(latency and in-flight requests)
- `autodecay.window.ms` — the time threshold after which EMA values
auto-decay toward zero
When any of these configs change, the new value is propagated to all
existing `ServerRoutingStatsEntry` instances in both the SSE and MSE stats
maps. New entries created after the change also use the updated values.
### Motivation
Make it easier to tune adaptive routing!
### Testing
We've deployed this internally and used it to tune all three variables.
The testing we did before merging internally:
Deployed to a QA cluster.
```
curl -X POST localhost:9000/cluster/configs -H "Content-Type:
application/json" -d '{"pinot.broker.adaptive.server.selector.ewma.alpha": "0"}'
{"status":"Updated cluster config."}
```
<img width="1482" height="458" alt="image"
src="https://github.com/user-attachments/assets/194a890f-8e43-4337-909b-5400fb761635"
/>
```
curl -X POST localhost:9000/cluster/configs -H "Content-Type:
application/json" -d
'{"pinot.broker.adaptive.server.selector.hybrid.score.exponent": "0"}'
{"status":"Updated cluster config."}
```
Harder to prove it worked, but we do see `Updated EWMA alpha to 0.0 and
propagated to all entries.` in the logs.
```
curl -X POST localhost:9000/cluster/configs -H "Content-Type:
application/json" -d
'{"pinot.broker.adaptive.server.selector.autodecay.window.ms": "100000"}'
{"status":"Updated cluster config."}
```
<img width="1476" height="520" alt="image"
src="https://github.com/user-attachments/assets/d0581026-4684-402e-b6b3-8cfd032b6ad0"
/>
We can see the stats stay high for a lot longer before they drop down.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]