mirror of https://github.com/tikv/client-rust.git
234 lines
5.2 KiB
Protocol Buffer
234 lines
5.2 KiB
Protocol Buffer
syntax = "proto3";
|
|
package resource_manager;
|
|
|
|
import "gogoproto/gogo.proto";
|
|
import "rustproto.proto";
|
|
|
|
option (gogoproto.sizer_all) = true;
|
|
option (gogoproto.marshaler_all) = true;
|
|
option (gogoproto.unmarshaler_all) = true;
|
|
option (rustproto.lite_runtime_all) = true;
|
|
|
|
service ResourceManager {
|
|
rpc ListResourceGroups(ListResourceGroupsRequest) returns (ListResourceGroupsResponse) {}
|
|
|
|
rpc GetResourceGroup(GetResourceGroupRequest) returns (GetResourceGroupResponse) {}
|
|
|
|
rpc AddResourceGroup(PutResourceGroupRequest) returns (PutResourceGroupResponse) {}
|
|
|
|
rpc ModifyResourceGroup(PutResourceGroupRequest) returns (PutResourceGroupResponse) {}
|
|
|
|
rpc DeleteResourceGroup(DeleteResourceGroupRequest) returns (DeleteResourceGroupResponse) {}
|
|
|
|
rpc AcquireTokenBuckets(stream TokenBucketsRequest) returns (stream TokenBucketsResponse) {}
|
|
}
|
|
|
|
message ListResourceGroupsRequest{}
|
|
|
|
message ListResourceGroupsResponse{
|
|
Error error = 1;
|
|
repeated ResourceGroup groups = 2;
|
|
}
|
|
|
|
message GetResourceGroupRequest {
|
|
string resource_group_name = 1;
|
|
}
|
|
|
|
message GetResourceGroupResponse{
|
|
Error error = 1;
|
|
ResourceGroup group = 2;
|
|
}
|
|
|
|
message DeleteResourceGroupRequest {
|
|
string resource_group_name = 1;
|
|
}
|
|
|
|
message DeleteResourceGroupResponse{
|
|
Error error = 1;
|
|
string body = 2;
|
|
}
|
|
|
|
message PutResourceGroupRequest {
|
|
ResourceGroup group = 1;
|
|
}
|
|
|
|
message PutResourceGroupResponse {
|
|
Error error = 1;
|
|
string body = 2;
|
|
}
|
|
|
|
message TokenBucketsRequest {
|
|
repeated TokenBucketRequest requests = 1;
|
|
uint64 target_request_period_ms = 2;
|
|
uint64 client_unique_id = 3;
|
|
}
|
|
|
|
message TokenBucketRequest {
|
|
message RequestRU {
|
|
repeated RequestUnitItem request_r_u = 1;
|
|
}
|
|
message RequestRawResource {
|
|
repeated RawResourceItem request_raw_resource = 1;
|
|
}
|
|
|
|
string resource_group_name = 1;
|
|
oneof request {
|
|
// RU mode, group settings with WRU/RRU etc resource abstract unit.
|
|
RequestRU ru_items = 2;
|
|
// Raw mode, group settings with CPU/IO etc resource unit.
|
|
RequestRawResource raw_resource_items = 3;
|
|
}
|
|
// Aggregate statistics in group level.
|
|
Consumption consumption_since_last_request = 4;
|
|
// label background request.
|
|
bool is_background = 5;
|
|
bool is_tiflash = 6;
|
|
}
|
|
|
|
message TokenBucketsResponse {
|
|
Error error = 1;
|
|
repeated TokenBucketResponse responses = 2;
|
|
}
|
|
|
|
message TokenBucketResponse {
|
|
string resource_group_name = 1;
|
|
// RU mode
|
|
repeated GrantedRUTokenBucket granted_r_u_tokens = 2;
|
|
// Raw mode
|
|
repeated GrantedRawResourceTokenBucket granted_resource_tokens = 3;
|
|
}
|
|
|
|
message GrantedRUTokenBucket {
|
|
RequestUnitType type = 1;
|
|
TokenBucket granted_tokens = 2;
|
|
int64 trickle_time_ms = 3;
|
|
}
|
|
|
|
message GrantedRawResourceTokenBucket {
|
|
RawResourceType type = 1;
|
|
TokenBucket granted_tokens = 2;
|
|
int64 trickle_time_ms = 3;
|
|
}
|
|
|
|
enum RequestUnitType {
|
|
RU = 0;
|
|
}
|
|
|
|
enum RawResourceType {
|
|
CPU = 0;
|
|
IOReadFlow = 1;
|
|
IOWriteFlow = 2;
|
|
}
|
|
|
|
message Consumption {
|
|
double r_r_u = 1;
|
|
double w_r_u = 2;
|
|
double read_bytes = 3;
|
|
double write_bytes = 4;
|
|
double total_cpu_time_ms = 5;
|
|
double sql_layer_cpu_time_ms = 6;
|
|
double kv_read_rpc_count = 7;
|
|
double kv_write_rpc_count = 8;
|
|
}
|
|
|
|
message RequestUnitItem {
|
|
RequestUnitType type = 1;
|
|
double value = 2;
|
|
}
|
|
|
|
message RawResourceItem {
|
|
RawResourceType type = 1;
|
|
double value = 2;
|
|
}
|
|
|
|
enum GroupMode {
|
|
Unknown = 0;
|
|
RUMode = 1;
|
|
RawMode = 2;
|
|
}
|
|
|
|
// ResourceGroup the settings definitions.
|
|
message ResourceGroup {
|
|
string name = 1;
|
|
GroupMode mode = 2;
|
|
// Used in RU mode, group settings with WRU/RRU etc resource abstract unit.
|
|
GroupRequestUnitSettings r_u_settings = 3;
|
|
// Used in Raw mode, group settings with CPU/IO etc resource unit.
|
|
GroupRawResourceSettings raw_resource_settings = 4;
|
|
// The task scheduling priority
|
|
uint32 priority = 5;
|
|
// Runaway queries settings
|
|
RunawaySettings runaway_settings = 6;
|
|
BackgroundSettings background_settings = 7;
|
|
}
|
|
|
|
message GroupRequestUnitSettings {
|
|
TokenBucket r_u = 1;
|
|
}
|
|
|
|
message GroupRawResourceSettings {
|
|
TokenBucket cpu = 1;
|
|
TokenBucket io_read = 2;
|
|
TokenBucket io_write = 3;
|
|
}
|
|
|
|
message TokenBucket {
|
|
TokenLimitSettings settings = 1;
|
|
// Once used to reconfigure, the tokens is delta tokens.
|
|
double tokens = 2;
|
|
}
|
|
|
|
message TokenLimitSettings {
|
|
uint64 fill_rate = 1;
|
|
int64 burst_limit = 2;
|
|
double max_tokens = 3;
|
|
}
|
|
|
|
message Error {
|
|
string message = 1;
|
|
}
|
|
|
|
enum RunawayAction {
|
|
NoneAction = 0;
|
|
DryRun = 1; // do nothing
|
|
CoolDown = 2; // deprioritize the task
|
|
Kill = 3; // kill the task
|
|
}
|
|
|
|
enum RunawayWatchType {
|
|
NoneWatch = 0;
|
|
Exact = 1;
|
|
Similar = 2;
|
|
Plan = 3;
|
|
}
|
|
|
|
message RunawayRule {
|
|
uint64 exec_elapsed_time_ms = 1;
|
|
}
|
|
|
|
message RunawayWatch {
|
|
// how long would the watch last
|
|
int64 lasting_duration_ms = 1;
|
|
RunawayWatchType type = 2;
|
|
}
|
|
|
|
message RunawaySettings {
|
|
RunawayRule rule = 1;
|
|
RunawayAction action = 2;
|
|
RunawayWatch watch = 3;
|
|
}
|
|
|
|
message BackgroundSettings {
|
|
repeated string job_types = 1;
|
|
}
|
|
|
|
message Participant {
|
|
// name is the unique name of the resource manager participant.
|
|
string name = 1;
|
|
// id is the unique id of the resource manager participant.
|
|
uint64 id = 2;
|
|
// listen_urls is the serivce endpoint list in the url format.
|
|
// listen_urls[0] is primary service endpoint.
|
|
repeated string listen_urls = 3;
|
|
}
|