diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2025-08-02 02:16:49 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-02 02:16:49 -0700 |
| commit | 9d013ea9b8edbd6cf3030730a8a0ab02d00a47da (patch) | |
| tree | c7a78ef6e2e9ed5784b58568a89d9c86fff8e569 /weed/pb | |
| parent | 3d4e8409a53cf8103c9b93e2fde13be8e8652a25 (diff) | |
| download | seaweedfs-9d013ea9b8edbd6cf3030730a8a0ab02d00a47da.tar.xz seaweedfs-9d013ea9b8edbd6cf3030730a8a0ab02d00a47da.zip | |
Admin UI: include ec shard sizes into volume server info (#7071)
* show ec shards on dashboard, show max in its own column
* master collect shard size info
* master send shard size via VolumeList
* change to more efficient shard sizes slice
* include ec shard sizes into volume server info
* Eliminated Redundant gRPC Calls
* much more efficient
* Efficient Counting: bits.OnesCount32() uses CPU-optimized instructions to count set bits in O(1)
* avoid extra volume list call
* simplify
* preserve existing shard sizes
* avoid hard coded value
* Update weed/storage/erasure_coding/ec_volume_info.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update weed/admin/dash/volume_management.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update ec_volume_info.go
* address comments
* avoid duplicated functions
* Update weed/admin/dash/volume_management.go
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
* simplify
* refactoring
* fix compilation
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Diffstat (limited to 'weed/pb')
| -rw-r--r-- | weed/pb/master.proto | 1 | ||||
| -rw-r--r-- | weed/pb/master_pb/master.pb.go | 14 |
2 files changed, 13 insertions, 2 deletions
diff --git a/weed/pb/master.proto b/weed/pb/master.proto index 403dbb278..f8049c466 100644 --- a/weed/pb/master.proto +++ b/weed/pb/master.proto @@ -129,6 +129,7 @@ message VolumeEcShardInformationMessage { string disk_type = 4; uint64 expire_at_sec = 5; // used to record the destruction time of ec volume uint32 disk_id = 6; + repeated int64 shard_sizes = 7; // optimized: sizes for shards in order of set bits in ec_index_bits } message StorageBackend { diff --git a/weed/pb/master_pb/master.pb.go b/weed/pb/master_pb/master.pb.go index 0f772f0dc..19df43d71 100644 --- a/weed/pb/master_pb/master.pb.go +++ b/weed/pb/master_pb/master.pb.go @@ -560,6 +560,7 @@ type VolumeEcShardInformationMessage struct { DiskType string `protobuf:"bytes,4,opt,name=disk_type,json=diskType,proto3" json:"disk_type,omitempty"` ExpireAtSec uint64 `protobuf:"varint,5,opt,name=expire_at_sec,json=expireAtSec,proto3" json:"expire_at_sec,omitempty"` // used to record the destruction time of ec volume DiskId uint32 `protobuf:"varint,6,opt,name=disk_id,json=diskId,proto3" json:"disk_id,omitempty"` + ShardSizes []int64 `protobuf:"varint,7,rep,packed,name=shard_sizes,json=shardSizes,proto3" json:"shard_sizes,omitempty"` // optimized: sizes for shards in order of set bits in ec_index_bits unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -636,6 +637,13 @@ func (x *VolumeEcShardInformationMessage) GetDiskId() uint32 { return 0 } +func (x *VolumeEcShardInformationMessage) GetShardSizes() []int64 { + if x != nil { + return x.ShardSizes + } + return nil +} + type StorageBackend struct { state protoimpl.MessageState `protogen:"open.v1"` Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` @@ -4098,7 +4106,7 @@ const file_master_proto_rawDesc = "" + "\x03ttl\x18\n" + " \x01(\rR\x03ttl\x12\x1b\n" + "\tdisk_type\x18\x0f \x01(\tR\bdiskType\x12\x17\n" + - "\adisk_id\x18\x10 \x01(\rR\x06diskId\"\xcf\x01\n" + + "\adisk_id\x18\x10 \x01(\rR\x06diskId\"\xf0\x01\n" + "\x1fVolumeEcShardInformationMessage\x12\x0e\n" + "\x02id\x18\x01 \x01(\rR\x02id\x12\x1e\n" + "\n" + @@ -4107,7 +4115,9 @@ const file_master_proto_rawDesc = "" + "\rec_index_bits\x18\x03 \x01(\rR\vecIndexBits\x12\x1b\n" + "\tdisk_type\x18\x04 \x01(\tR\bdiskType\x12\"\n" + "\rexpire_at_sec\x18\x05 \x01(\x04R\vexpireAtSec\x12\x17\n" + - "\adisk_id\x18\x06 \x01(\rR\x06diskId\"\xbe\x01\n" + + "\adisk_id\x18\x06 \x01(\rR\x06diskId\x12\x1f\n" + + "\vshard_sizes\x18\a \x03(\x03R\n" + + "shardSizes\"\xbe\x01\n" + "\x0eStorageBackend\x12\x12\n" + "\x04type\x18\x01 \x01(\tR\x04type\x12\x0e\n" + "\x02id\x18\x02 \x01(\tR\x02id\x12I\n" + |
