github.com/grafana/pyroscope@v1.18.0/pkg/segmentwriter/client/distributor/placement/adaptiveplacement/adaptive_placementpb/adaptive_placement.proto (about) 1 syntax = "proto3"; 2 3 package adaptive_placement; 4 5 // DistributionStats includes the data the Placement is built based on. 6 message DistributionStats { 7 repeated TenantStats tenants = 1; 8 repeated DatasetStats datasets = 2; 9 repeated ShardStats shards = 3; 10 int64 created_at = 4; 11 } 12 13 message TenantStats { 14 string tenant_id = 1; 15 } 16 17 message DatasetStats { 18 uint32 tenant = 1; // Reference to TenantStats. 19 string name = 2; 20 // Shard value is a reference to ShardStats. 21 repeated uint32 shards = 3; 22 // Data rate in bytes per second for each shard. 23 // The dataset size is measured after being encoded 24 // in the block wire format. 25 repeated uint64 usage = 4; 26 // Standard deviation of the data rate across shards 27 // aggregated within a sliding time window. 28 uint64 std_dev = 5; 29 } 30 31 message ShardStats { 32 // Shard ID. 33 uint32 id = 1; 34 // Owner represents the node that hosted the shard. 35 // There may be multiple entries for a single shard 36 // if it was relocated across different nodes. 37 string owner = 2; 38 } 39 40 enum LoadBalancing { 41 LOAD_BALANCING_UNSPECIFIED = 0; 42 LOAD_BALANCING_FINGERPRINT = 1; 43 LOAD_BALANCING_ROUND_ROBIN = 2; 44 } 45 46 message PlacementRules { 47 repeated TenantPlacement tenants = 1; 48 repeated DatasetPlacement datasets = 2; 49 int64 created_at = 3; 50 } 51 52 message TenantPlacement { 53 string tenant_id = 1; 54 } 55 56 message DatasetPlacement { 57 uint32 tenant = 1; 58 string name = 2; 59 uint64 tenant_shard_limit = 3; 60 uint64 dataset_shard_limit = 4; 61 LoadBalancing load_balancing = 5; 62 }