[ 
https://issues.apache.org/jira/browse/HDDS-16179?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sreeja updated HDDS-16179:
--------------------------
    Description: 
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)
iterationsWithBuffer   = ceil(estimatedIterations × 1.3) // 1.3 for buffer
cycleTime = planning + 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.

  was:
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.


> 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
>            Priority: Major
>
> 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)
> iterationsWithBuffer   = ceil(estimatedIterations × 1.3) // 1.3 for buffer
> cycleTime = planning + 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]

Reply via email to