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

Sreeja updated HDDS-16173:
--------------------------
    Description: 
We are adding three new CLI commands — assessment, dry-run, and recommend — 
that all need the same cluster view. These commands run at client-side and 
fetch datanode usage info via the existing getDatanodeUsageInfo RPC.

 

This Jira builds the shared foundation that is a common module that takes 
datanode usage protos,

Responsibilities:
 * Apply include/exclude filters on the proto list
 * Compute cluster average utilization
 * Compute upper/lower utilization limits from cluster average and threshold
 * Compute each eligible node’s utilization (utilization = (capacity - 
remaining) / capacity) and classify each as source, target, or balanced by 
comparing with the upper/lower limits.
 * Accumulate source/target counts and 
totalOverUtilizedBytes/totalUnderUtilizedBytes
 * Compute MaxUtilization, MinUtilization
 * Compute cluster imbalance and bytes to move
 * Build and return ContainerBalancerClusterSnapshot

The logic should match the way the running balancer uses in 
ContainerBalancerTask.initializeIteration(), so CLI output and actual balancer 
behaviour stay consistent.

Analyzer should return an object(ContainerBalancerClusterSnapshot) containing 
totalEligibleDatanodes count, clusterAvgUtilization, clusterCapacityBytes, 
MaxUtilization, MinUtilization, upperLimit, lowerLimit, sourceCount, 
targetCount, totalOverUtilizedBytes, totalUnderUtilizedBytes, bytesToMove, 
Imbalance (drift), top 5 sourceNodes hostnames, bottom 5 targetNodes hostnames.

We should also test this analysis.

  was:
We are adding three new CLI commands — assessment, dry-run, and recommend — 
that all need the same cluster view before any balancing runs. Those commands 
run client-side and fetch datanode usage info via the existing 
getDatanodeUsageInfo RPC.

 

This Jira builds the shared foundation that is a common module that takes 
datanode usage protos, 

Responsibilities:
 * Apply include/exclude filters on the proto list
 * Compute cluster average utilization
 * Compute upper/lower utilization limits from cluster average and threshold
 * Compute each eligible node’s utilization (utilization = (capacity - 
remaining) / capacity) and classify each as source, target, or balanced by 
comparing with the upper/lower limits.
 * Accumulate source/target counts and 
totalOverUtilizedBytes/totalUnderUtilizedBytes
 * Compute MaxUtilization, MinUtilization
 * Compute cluster imbalance and bytes to move
 * Build and return ContainerBalancerClusterSnapshot

The logic should match what the running balancer uses in 
ContainerBalancerTask.initializeIteration(), so CLI output and actual balancer 
behavior stay consistent.


Analyzer should return an object(ContainerBalancerClusterSnapshot) containing 
totalEligibleDatanodes count, clusterAvgUtilization, clusterCapacityBytes, 
MaxUtilization, MinUtilization, upperLimit, lowerLimit, sourceCount, 
targetCount, totalOverUtilizedBytes, totalUnderUtilizedBytes, bytesToMove, 
Imbalance (drift), top 5 sourceNodes hostnames, bottom 5 targetNodes hostnames.

We should also test this analysis.


> Add cluster utilization analysis for container balancer CLI commands
> --------------------------------------------------------------------
>
>                 Key: HDDS-16173
>                 URL: https://issues.apache.org/jira/browse/HDDS-16173
>             Project: Apache Ozone
>          Issue Type: Sub-task
>            Reporter: Sreeja
>            Assignee: Sravani Revuri
>            Priority: Major
>
> We are adding three new CLI commands — assessment, dry-run, and recommend — 
> that all need the same cluster view. These commands run at client-side and 
> fetch datanode usage info via the existing getDatanodeUsageInfo RPC.
>  
> This Jira builds the shared foundation that is a common module that takes 
> datanode usage protos,
> Responsibilities:
>  * Apply include/exclude filters on the proto list
>  * Compute cluster average utilization
>  * Compute upper/lower utilization limits from cluster average and threshold
>  * Compute each eligible node’s utilization (utilization = (capacity - 
> remaining) / capacity) and classify each as source, target, or balanced by 
> comparing with the upper/lower limits.
>  * Accumulate source/target counts and 
> totalOverUtilizedBytes/totalUnderUtilizedBytes
>  * Compute MaxUtilization, MinUtilization
>  * Compute cluster imbalance and bytes to move
>  * Build and return ContainerBalancerClusterSnapshot
> The logic should match the way the running balancer uses in 
> ContainerBalancerTask.initializeIteration(), so CLI output and actual 
> balancer behaviour stay consistent.
> Analyzer should return an object(ContainerBalancerClusterSnapshot) containing 
> totalEligibleDatanodes count, clusterAvgUtilization, clusterCapacityBytes, 
> MaxUtilization, MinUtilization, upperLimit, lowerLimit, sourceCount, 
> targetCount, totalOverUtilizedBytes, totalUnderUtilizedBytes, bytesToMove, 
> Imbalance (drift), top 5 sourceNodes hostnames, bottom 5 targetNodes 
> hostnames.
> We should also test this analysis.



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