diff options
| author | chrislu <chris.lu@gmail.com> | 2022-10-09 18:58:10 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2022-10-09 18:58:10 -0700 |
| commit | f9383aa726771b9bd9027cf5e9d62fcaecad9cee (patch) | |
| tree | 1bbba371016de151bb2348a250d9c0b0b096812a /weed/shell/command_volume_balance.go | |
| parent | 0f522da367b85820aa0fb1e8b2efb769cecff7af (diff) | |
| download | seaweedfs-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.go | 18 |
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 |
