qapi: Add burst length parameters to block_set_io_throttle
This patch adds the new bps_*_max_length and iops_*_max_length parameters to the block_set_io_throttle command. Signed-off-by: Alberto Garcia <berto@igalia.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
8a0fc18d88
commit
dce13204a0
31
blockdev.c
31
blockdev.c
@ -2598,6 +2598,18 @@ void qmp_block_set_io_throttle(const char *device, int64_t bps, int64_t bps_rd,
|
||||
int64_t iops_rd_max,
|
||||
bool has_iops_wr_max,
|
||||
int64_t iops_wr_max,
|
||||
bool has_bps_max_length,
|
||||
int64_t bps_max_length,
|
||||
bool has_bps_rd_max_length,
|
||||
int64_t bps_rd_max_length,
|
||||
bool has_bps_wr_max_length,
|
||||
int64_t bps_wr_max_length,
|
||||
bool has_iops_max_length,
|
||||
int64_t iops_max_length,
|
||||
bool has_iops_rd_max_length,
|
||||
int64_t iops_rd_max_length,
|
||||
bool has_iops_wr_max_length,
|
||||
int64_t iops_wr_max_length,
|
||||
bool has_iops_size,
|
||||
int64_t iops_size,
|
||||
bool has_group,
|
||||
@ -2652,6 +2664,25 @@ void qmp_block_set_io_throttle(const char *device, int64_t bps, int64_t bps_rd,
|
||||
cfg.buckets[THROTTLE_OPS_WRITE].max = iops_wr_max;
|
||||
}
|
||||
|
||||
if (has_bps_max_length) {
|
||||
cfg.buckets[THROTTLE_BPS_TOTAL].burst_length = bps_max_length;
|
||||
}
|
||||
if (has_bps_rd_max_length) {
|
||||
cfg.buckets[THROTTLE_BPS_READ].burst_length = bps_rd_max_length;
|
||||
}
|
||||
if (has_bps_wr_max_length) {
|
||||
cfg.buckets[THROTTLE_BPS_WRITE].burst_length = bps_wr_max_length;
|
||||
}
|
||||
if (has_iops_max_length) {
|
||||
cfg.buckets[THROTTLE_OPS_TOTAL].burst_length = iops_max_length;
|
||||
}
|
||||
if (has_iops_rd_max_length) {
|
||||
cfg.buckets[THROTTLE_OPS_READ].burst_length = iops_rd_max_length;
|
||||
}
|
||||
if (has_iops_wr_max_length) {
|
||||
cfg.buckets[THROTTLE_OPS_WRITE].burst_length = iops_wr_max_length;
|
||||
}
|
||||
|
||||
if (has_iops_size) {
|
||||
cfg.op_size = iops_size;
|
||||
}
|
||||
|
12
hmp.c
12
hmp.c
@ -1414,6 +1414,18 @@ void hmp_block_set_io_throttle(Monitor *mon, const QDict *qdict)
|
||||
0,
|
||||
false,
|
||||
0,
|
||||
false, /* no burst length via HMP */
|
||||
0,
|
||||
false,
|
||||
0,
|
||||
false,
|
||||
0,
|
||||
false,
|
||||
0,
|
||||
false,
|
||||
0,
|
||||
false,
|
||||
0,
|
||||
false, /* No default I/O size */
|
||||
0,
|
||||
false,
|
||||
|
@ -1298,17 +1298,53 @@
|
||||
#
|
||||
# @iops_wr: write I/O operations per second
|
||||
#
|
||||
# @bps_max: #optional total max in bytes (Since 1.7)
|
||||
# @bps_max: #optional total throughput limit during bursts,
|
||||
# in bytes (Since 1.7)
|
||||
#
|
||||
# @bps_rd_max: #optional read max in bytes (Since 1.7)
|
||||
# @bps_rd_max: #optional read throughput limit during bursts,
|
||||
# in bytes (Since 1.7)
|
||||
#
|
||||
# @bps_wr_max: #optional write max in bytes (Since 1.7)
|
||||
# @bps_wr_max: #optional write throughput limit during bursts,
|
||||
# in bytes (Since 1.7)
|
||||
#
|
||||
# @iops_max: #optional total I/O operations max (Since 1.7)
|
||||
# @iops_max: #optional total I/O operations per second during bursts,
|
||||
# in bytes (Since 1.7)
|
||||
#
|
||||
# @iops_rd_max: #optional read I/O operations max (Since 1.7)
|
||||
# @iops_rd_max: #optional read I/O operations per second during bursts,
|
||||
# in bytes (Since 1.7)
|
||||
#
|
||||
# @iops_wr_max: #optional write I/O operations max (Since 1.7)
|
||||
# @iops_wr_max: #optional write I/O operations per second during bursts,
|
||||
# in bytes (Since 1.7)
|
||||
#
|
||||
# @bps_max_length: #optional maximum length of the @bps_max burst
|
||||
# period, in seconds. It must only
|
||||
# be set if @bps_max is set as well.
|
||||
# Defaults to 1. (Since 2.6)
|
||||
#
|
||||
# @bps_rd_max_length: #optional maximum length of the @bps_rd_max
|
||||
# burst period, in seconds. It must only
|
||||
# be set if @bps_rd_max is set as well.
|
||||
# Defaults to 1. (Since 2.6)
|
||||
#
|
||||
# @bps_wr_max_length: #optional maximum length of the @bps_wr_max
|
||||
# burst period, in seconds. It must only
|
||||
# be set if @bps_wr_max is set as well.
|
||||
# Defaults to 1. (Since 2.6)
|
||||
#
|
||||
# @iops_max_length: #optional maximum length of the @iops burst
|
||||
# period, in seconds. It must only
|
||||
# be set if @iops_max is set as well.
|
||||
# Defaults to 1. (Since 2.6)
|
||||
#
|
||||
# @iops_rd_max_length: #optional maximum length of the @iops_rd_max
|
||||
# burst period, in seconds. It must only
|
||||
# be set if @iops_rd_max is set as well.
|
||||
# Defaults to 1. (Since 2.6)
|
||||
#
|
||||
# @iops_wr_max_length: #optional maximum length of the @iops_wr_max
|
||||
# burst period, in seconds. It must only
|
||||
# be set if @iops_wr_max is set as well.
|
||||
# Defaults to 1. (Since 2.6)
|
||||
#
|
||||
# @iops_size: #optional an I/O size in bytes (Since 1.7)
|
||||
#
|
||||
@ -1325,6 +1361,9 @@
|
||||
'*bps_max': 'int', '*bps_rd_max': 'int',
|
||||
'*bps_wr_max': 'int', '*iops_max': 'int',
|
||||
'*iops_rd_max': 'int', '*iops_wr_max': 'int',
|
||||
'*bps_max_length': 'int', '*bps_rd_max_length': 'int',
|
||||
'*bps_wr_max_length': 'int', '*iops_max_length': 'int',
|
||||
'*iops_rd_max_length': 'int', '*iops_wr_max_length': 'int',
|
||||
'*iops_size': 'int', '*group': 'str' } }
|
||||
|
||||
##
|
||||
|
@ -2006,7 +2006,7 @@ EQMP
|
||||
|
||||
{
|
||||
.name = "block_set_io_throttle",
|
||||
.args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l,bps_max:l?,bps_rd_max:l?,bps_wr_max:l?,iops_max:l?,iops_rd_max:l?,iops_wr_max:l?,iops_size:l?,group:s?",
|
||||
.args_type = "device:B,bps:l,bps_rd:l,bps_wr:l,iops:l,iops_rd:l,iops_wr:l,bps_max:l?,bps_rd_max:l?,bps_wr_max:l?,iops_max:l?,iops_rd_max:l?,iops_wr_max:l?,bps_max_length:l?,bps_rd_max_length:l?,bps_wr_max_length:l?,iops_max_length:l?,iops_rd_max_length:l?,iops_wr_max_length:l?,iops_size:l?,group:s?",
|
||||
.mhandler.cmd_new = qmp_marshal_block_set_io_throttle,
|
||||
},
|
||||
|
||||
@ -2025,14 +2025,20 @@ Arguments:
|
||||
- "iops": total I/O operations per second (json-int)
|
||||
- "iops_rd": read I/O operations per second (json-int)
|
||||
- "iops_wr": write I/O operations per second (json-int)
|
||||
- "bps_max": total max in bytes (json-int)
|
||||
- "bps_rd_max": read max in bytes (json-int)
|
||||
- "bps_wr_max": write max in bytes (json-int)
|
||||
- "iops_max": total I/O operations max (json-int)
|
||||
- "iops_rd_max": read I/O operations max (json-int)
|
||||
- "iops_wr_max": write I/O operations max (json-int)
|
||||
- "iops_size": I/O size in bytes when limiting (json-int)
|
||||
- "group": throttle group name (json-string)
|
||||
- "bps_max": total throughput limit during bursts, in bytes (json-int, optional)
|
||||
- "bps_rd_max": read throughput limit during bursts, in bytes (json-int, optional)
|
||||
- "bps_wr_max": write throughput limit during bursts, in bytes (json-int, optional)
|
||||
- "iops_max": total I/O operations per second during bursts (json-int, optional)
|
||||
- "iops_rd_max": read I/O operations per second during bursts (json-int, optional)
|
||||
- "iops_wr_max": write I/O operations per second during bursts (json-int, optional)
|
||||
- "bps_max_length": maximum length of the @bps_max burst period, in seconds (json-int, optional)
|
||||
- "bps_rd_max_length": maximum length of the @bps_rd_max burst period, in seconds (json-int, optional)
|
||||
- "bps_wr_max_length": maximum length of the @bps_wr_max burst period, in seconds (json-int, optional)
|
||||
- "iops_max_length": maximum length of the @iops_max burst period, in seconds (json-int, optional)
|
||||
- "iops_rd_max_length": maximum length of the @iops_rd_max burst period, in seconds (json-int, optional)
|
||||
- "iops_wr_max_length": maximum length of the @iops_wr_max burst period, in seconds (json-int, optional)
|
||||
- "iops_size": I/O size in bytes when limiting (json-int, optional)
|
||||
- "group": throttle group name (json-string, optional)
|
||||
|
||||
Example:
|
||||
|
||||
@ -2049,6 +2055,7 @@ Example:
|
||||
"iops_max": 0,
|
||||
"iops_rd_max": 0,
|
||||
"iops_wr_max": 0,
|
||||
"bps_max_length": 60,
|
||||
"iops_size": 0 } }
|
||||
<- { "return": {} }
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user