diff options
| author | chrislu <chris.lu@gmail.com> | 2024-10-10 10:00:30 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2024-10-10 10:00:30 -0700 |
| commit | 35fd1e1c9af62df7ca50324a0db2983ac4af4176 (patch) | |
| tree | dd0be4f5fb6799ec522094a82e37daf91525d015 /weed/topology/disk_ec.go | |
| parent | b28b1a34025a2f2ed80883e245250d00783bfea7 (diff) | |
| download | seaweedfs-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_ec.go')
| -rw-r--r-- | weed/topology/disk_ec.go | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/weed/topology/disk_ec.go b/weed/topology/disk_ec.go index 4f950025f..1fea29272 100644 --- a/weed/topology/disk_ec.go +++ b/weed/topology/disk_ec.go @@ -29,10 +29,12 @@ func (d *Disk) AddOrUpdateEcShard(s *erasure_coding.EcVolumeInfo) { delta = existing.ShardBits.ShardIdCount() - oldCount } - deltaDiskUsages := newDiskUsages() - deltaDiskUsage := deltaDiskUsages.getOrCreateDisk(types.ToDiskType(string(d.Id()))) - deltaDiskUsage.ecShardCount = int64(delta) - d.UpAdjustDiskUsageDelta(deltaDiskUsages) + if delta == 0 { + return + } + d.UpAdjustDiskUsageDelta(types.ToDiskType(string(d.Id())), &DiskUsageCounts{ + ecShardCount: int64(delta), + }) } @@ -45,10 +47,11 @@ func (d *Disk) DeleteEcShard(s *erasure_coding.EcVolumeInfo) { existing.ShardBits = existing.ShardBits.Minus(s.ShardBits) delta := existing.ShardBits.ShardIdCount() - oldCount - deltaDiskUsages := newDiskUsages() - deltaDiskUsage := deltaDiskUsages.getOrCreateDisk(types.ToDiskType(string(d.Id()))) - deltaDiskUsage.ecShardCount = int64(delta) - d.UpAdjustDiskUsageDelta(deltaDiskUsages) + if delta != 0 { + d.UpAdjustDiskUsageDelta(types.ToDiskType(string(d.Id())), &DiskUsageCounts{ + ecShardCount: int64(delta), + }) + } if existing.ShardBits.ShardIdCount() == 0 { delete(d.ecShards, s.VolumeId) |
