aboutsummaryrefslogtreecommitdiff
path: root/weed/pb
diff options
context:
space:
mode:
authorChris Lu <chrislusf@users.noreply.github.com>2025-08-02 02:16:49 -0700
committerGitHub <noreply@github.com>2025-08-02 02:16:49 -0700
commit9d013ea9b8edbd6cf3030730a8a0ab02d00a47da (patch)
treec7a78ef6e2e9ed5784b58568a89d9c86fff8e569 /weed/pb
parent3d4e8409a53cf8103c9b93e2fde13be8e8652a25 (diff)
downloadseaweedfs-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.proto1
-rw-r--r--weed/pb/master_pb/master.pb.go14
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" +