Sreeja created HDDS-16179:
-----------------------------
Summary: Add logic to estimate balancer duration and iteration
count
Key: HDDS-16179
URL: https://issues.apache.org/jira/browse/HDDS-16179
Project: Apache Ozone
Issue Type: Sub-task
Reporter: Sreeja
Assignee: Sreeja
The assessment command in HDDS-16174 tells users how much cluster imbalance
there is. The next step is estimating how long balancing will take and how many
iterations it will need — without actually moving containers or calling SCM
planning logic.
Introduce three profiles slow / medium / fast with default bandwidth caps
similar to HDFS i.e:
SLOW => 10MB/s
Medium => 100MB/s
Fast => 10GB/s
And will also have the following defaults for each profile:
Max datanode involvement cap
SLOW => 10%
Medium => 20%
Fast => 40%
Default max entering target
SLOW => 10 GB
Medium => 26 GB
Fast => 100 GB
Given the cluster summary from analyzer(HDDS-16173) and either default values
or values given by user for configs -> timeouts, balancing interval, threshold,
include/exclude nodes,
compute per profile: bytes to move, bytes to move per iteration, estimated
iterations, cycle time, and total estimated duration.
Formulas are size-based approximations — they do not simulate which containers
would move.
{code:java}
perNodeData = balancingBandwidth × moveReplicationTimeout_seconds
upperBound = min(perNodeData x sourceCount,perNodeData x
targetCount,MAX_SIZE_CEILING, BytesToMove)
maxSizeToMovePerIteration = max(containerSize + 1, upperBound)
estimatedIterations = ceil(bytesToMove / maxSizeToMovePerIteration)
cycleTime = moveTimeout + balancingInterval
totalTime = estimatedIterations × cycleTime
{code}
Validation: there must be at least one source and one target, bytes to move
must be positive and larger than container size, and timeout values must be
internally consistent. A balanced cluster should fail with a clear message here.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]