aboutsummaryrefslogtreecommitdiff
path: root/weed/shell/command_volume_balance.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2022-10-09 18:58:10 -0700
committerchrislu <chris.lu@gmail.com>2022-10-09 18:58:10 -0700
commitf9383aa726771b9bd9027cf5e9d62fcaecad9cee (patch)
tree1bbba371016de151bb2348a250d9c0b0b096812a /weed/shell/command_volume_balance.go
parent0f522da367b85820aa0fb1e8b2efb769cecff7af (diff)
downloadseaweedfs-f9383aa726771b9bd9027cf5e9d62fcaecad9cee.tar.xz
seaweedfs-f9383aa726771b9bd9027cf5e9d62fcaecad9cee.zip
refactor to change capacity data type
Diffstat (limited to 'weed/shell/command_volume_balance.go')
-rw-r--r--weed/shell/command_volume_balance.go18
1 files changed, 9 insertions, 9 deletions
diff --git a/weed/shell/command_volume_balance.go b/weed/shell/command_volume_balance.go
index bc0adfc5f..980a8d7d1 100644
--- a/weed/shell/command_volume_balance.go
+++ b/weed/shell/command_volume_balance.go
@@ -183,34 +183,34 @@ type Node struct {
rack string
}
-type CapacityFunc func(*master_pb.DataNodeInfo) int
+type CapacityFunc func(*master_pb.DataNodeInfo) float64
func capacityByMaxVolumeCount(diskType types.DiskType) CapacityFunc {
- return func(info *master_pb.DataNodeInfo) int {
+ return func(info *master_pb.DataNodeInfo) float64 {
diskInfo, found := info.DiskInfos[string(diskType)]
if !found {
return 0
}
- return int(diskInfo.MaxVolumeCount)
+ return float64(diskInfo.MaxVolumeCount)
}
}
func capacityByFreeVolumeCount(diskType types.DiskType) CapacityFunc {
- return func(info *master_pb.DataNodeInfo) int {
+ return func(info *master_pb.DataNodeInfo) float64 {
diskInfo, found := info.DiskInfos[string(diskType)]
if !found {
return 0
}
- return int(diskInfo.MaxVolumeCount - diskInfo.VolumeCount)
+ return float64(diskInfo.MaxVolumeCount - diskInfo.VolumeCount)
}
}
func (n *Node) localVolumeRatio(capacityFunc CapacityFunc) float64 {
- return divide(len(n.selectedVolumes), capacityFunc(n.info))
+ return float64(len(n.selectedVolumes)) / capacityFunc(n.info)
}
func (n *Node) localVolumeNextRatio(capacityFunc CapacityFunc) float64 {
- return divide(len(n.selectedVolumes)+1, capacityFunc(n.info))
+ return float64(len(n.selectedVolumes)+1) / capacityFunc(n.info)
}
func (n *Node) isOneVolumeOnly() bool {
@@ -243,7 +243,7 @@ func sortWritableVolumes(volumes []*master_pb.VolumeInformationMessage) {
}
func balanceSelectedVolume(commandEnv *CommandEnv, diskType types.DiskType, volumeReplicas map[uint32][]*VolumeReplica, nodes []*Node, capacityFunc CapacityFunc, sortCandidatesFn func(volumes []*master_pb.VolumeInformationMessage), applyBalancing bool) (err error) {
- selectedVolumeCount, volumeMaxCount := 0, 0
+ selectedVolumeCount, volumeMaxCount := 0, float64(0)
var nodesWithCapacity []*Node
for _, dn := range nodes {
selectedVolumeCount += len(dn.selectedVolumes)
@@ -254,7 +254,7 @@ func balanceSelectedVolume(commandEnv *CommandEnv, diskType types.DiskType, volu
volumeMaxCount += capacity
}
- idealVolumeRatio := divide(selectedVolumeCount, volumeMaxCount)
+ idealVolumeRatio := float64(selectedVolumeCount) / volumeMaxCount
hasMoved := true