aboutsummaryrefslogtreecommitdiff
path: root/weed/topology/disk.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2024-10-10 10:00:30 -0700
committerchrislu <chris.lu@gmail.com>2024-10-10 10:00:30 -0700
commit35fd1e1c9af62df7ca50324a0db2983ac4af4176 (patch)
treedd0be4f5fb6799ec522094a82e37daf91525d015 /weed/topology/disk.go
parentb28b1a34025a2f2ed80883e245250d00783bfea7 (diff)
downloadseaweedfs-35fd1e1c9af62df7ca50324a0db2983ac4af4176.tar.xz
seaweedfs-35fd1e1c9af62df7ca50324a0db2983ac4af4176.zip
optimize memory usage for large number of volumes
1. unwrap the map to avoid extra map object creation 2. fix ec shard counting in UpdateEcShards
Diffstat (limited to 'weed/topology/disk.go')
-rw-r--r--weed/topology/disk.go7
1 files changed, 3 insertions, 4 deletions
diff --git a/weed/topology/disk.go b/weed/topology/disk.go
index 4597bfc29..6d789e34b 100644
--- a/weed/topology/disk.go
+++ b/weed/topology/disk.go
@@ -152,8 +152,7 @@ func (d *Disk) AddOrUpdateVolume(v storage.VolumeInfo) (isNew, isChanged bool) {
}
func (d *Disk) doAddOrUpdateVolume(v storage.VolumeInfo) (isNew, isChanged bool) {
- deltaDiskUsages := newDiskUsages()
- deltaDiskUsage := deltaDiskUsages.getOrCreateDisk(types.ToDiskType(v.DiskType))
+ deltaDiskUsage := &DiskUsageCounts{}
if oldV, ok := d.volumes[v.Id]; !ok {
d.volumes[v.Id] = v
deltaDiskUsage.volumeCount = 1
@@ -164,7 +163,7 @@ func (d *Disk) doAddOrUpdateVolume(v storage.VolumeInfo) (isNew, isChanged bool)
deltaDiskUsage.activeVolumeCount = 1
}
d.UpAdjustMaxVolumeId(v.Id)
- d.UpAdjustDiskUsageDelta(deltaDiskUsages)
+ d.UpAdjustDiskUsageDelta(types.ToDiskType(v.DiskType), deltaDiskUsage)
isNew = true
} else {
if oldV.IsRemote() != v.IsRemote() {
@@ -174,7 +173,7 @@ func (d *Disk) doAddOrUpdateVolume(v storage.VolumeInfo) (isNew, isChanged bool)
if oldV.IsRemote() {
deltaDiskUsage.remoteVolumeCount = -1
}
- d.UpAdjustDiskUsageDelta(deltaDiskUsages)
+ d.UpAdjustDiskUsageDelta(types.ToDiskType(v.DiskType), deltaDiskUsage)
}
isChanged = d.volumes[v.Id].ReadOnly != v.ReadOnly
d.volumes[v.Id] = v