sma: interface for configuring quality of service

Signed-off-by: Konrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I6907498e369b58d2b3dd96981dfdba79ba87f6d4
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14188
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
This commit is contained in:
Konrad Sztyber 2022-08-24 07:45:49 +02:00 committed by Tomasz Zawadzki
parent 11313c2090
commit f14c7d7578

View File

@ -94,6 +94,41 @@ message DetachVolumeRequest {
// Detach volume response // Detach volume response
message DetachVolumeResponse {} message DetachVolumeResponse {}
// QoS limit values. 0 means unlimited, while UINT64_MAX means to leave the
// current limit value unchanged. If one of the limits isn't supported by a
// given device/volume, it must be set to 0.
message QosLimit {
// Read kIOPS
uint64 rd_iops = 1;
// Write kIOPS
uint64 wr_iops = 2;
// Read/write kIOPS
uint64 rw_iops = 3;
// Read bandwidth (MB/s)
uint64 rd_bandwidth = 4;
// Write bandwidth (MB/s)
uint64 wr_bandwidth = 5;
// Read/write bandwidth (MB/s)
uint64 rw_bandwidth = 6;
}
// SetQos request
message SetQosRequest {
// Device handle
string device_handle = 1;
// GUID/UUID of a volume to configure QoS on. If this parameter is omitted,
// the QoS will be set up on the whole device (all volumes attached to that
// device will share QoS settings). Some device types might only support
// configuring QoS on per-device (volume_id must be empty) or per-volume level
// (volume_id cannot be empty).
bytes volume_id = 2;
// Maximum allowed IOPS/bandwidth
QosLimit maximum = 3;
}
// SetQos response
message SetQosResponse {}
// Storage Management Agent gRPC service definition // Storage Management Agent gRPC service definition
service StorageManagementAgent { service StorageManagementAgent {
// Creates a new device. A device is an entity that can be used to expose // Creates a new device. A device is an entity that can be used to expose
@ -113,4 +148,7 @@ service StorageManagementAgent {
// Detaches a volume from a device // Detaches a volume from a device
rpc DetachVolume (DetachVolumeRequest) rpc DetachVolume (DetachVolumeRequest)
returns (DetachVolumeResponse) {} returns (DetachVolumeResponse) {}
// Configures QoS on a device/volume
rpc SetQos (SetQosRequest)
returns (SetQosResponse) {}
} }