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