abhishekrb19 commented on code in PR #19422:
URL: https://github.com/apache/druid/pull/19422#discussion_r3336913719


##########
docs/design/coordinator.md:
##########
@@ -88,7 +88,7 @@ But in a tier with several Historicals (or a low replication 
factor), segment re
 Thus, the Coordinator constantly monitors the set of segments present on each 
Historical in a tier and employs one of the following strategies to identify 
segments that may be moved from one Historical to another to retain balance.
 
 - `cost` (default): For a given segment in a tier, this strategy picks the 
server with the minimum "cost" of placing that segment. The cost is a function 
of the data interval of the segment and the data intervals of all the segments 
already present on the candidate server. In essence, this strategy tries to 
avoid placing segments with adjacent or overlapping data intervals on the same 
server. This is based on the premise that adjacent-interval segments are more 
likely to be used together in a query and placing them on the same server may 
lead to skewed CPU usages of Historicals.
-- `diskNormalized`: A derivative of the `cost` strategy that multiplies the 
cost of placing a segment on a server by the server's disk usage ratio 
(`diskUsed / maxSize`). This penalizes fuller servers and drives disk 
utilization to equalize across the tier, which is useful when historicals 
within a tier hold segments of widely varying sizes. To prevent oscillation 
when servers have similar utilization, a segment that is already placed on a 
server receives a cost discount; a move only fires when the destination saves 
at least `druid.coordinator.balancer.diskNormalized.moveCostSavingsThreshold` 
(default `0.05`, i.e. 5%) of the source's cost.
+- `diskWeighted`: A derivative of the `cost` strategy that divides the cost of 
placing a segment on a server by the server's projected available disk 
headroom. The projected usage ratio is `(diskUsed + 
segmentSizeIfNotAlreadyProjected) / maxSize`, so the disk-adjusted cost is 
`cost / max(EPSILON, 1 - projectedUsageRatio)`. This strongly penalizes servers 
that would be nearly full after placement and drives disk utilization to 
equalize across the tier, which is useful when historicals within a tier hold 
segments of widely varying sizes. To prevent oscillation when servers have 
similar headroom, a segment that is already placed on a server receives a cost 
discount; a move only fires when the destination saves at least 
`druid.coordinator.balancer.diskWeighted.moveCostSavingsThreshold` (default 
`0.05`, i.e. 5%) of the source's cost.

Review Comment:
   IMO, it’d be best to leave the rename out since it would break operators’ 
configurations since it's technically a breaking change that I'm not sure is 
worth doing at this point. Even though the docs say it’s not recommended for 
production use, it has been documented for a while and doesn’t carry an 
experimental tag.
   
   Two thoughts:
   1. Introduce a new balancer strategy 
   2. Or use jackson to handle both types like @maytasm may have noted 
`diskNormalized` / `diskWeighted` and deprecate `diskNormalized`
   
   



-- 
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]

Reply via email to