qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v7 2/6] qmp: Create IOThrottle structure


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v7 2/6] qmp: Create IOThrottle structure
Date: Mon, 07 Aug 2017 16:48:38 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)

Pradeep Jagadeesh <address@hidden> writes:

> On 7/6/2017 7:55 PM, Markus Armbruster wrote:
>> Pradeep Jagadeesh <address@hidden> writes:
>>
>>> This patch enables qmp interfaces for the fsdev
>>> devices. This provides two interfaces one
>>> for querying info of all the fsdev devices. The second one
>>> to set the IO limits for the required fsdev device.
>>>
>>> Signed-off-by: Pradeep Jagadeesh <address@hidden>
>>> Reviewed-by: Greg Kurz <address@hidden>
>>> Reviewed-by: Eric Blake <address@hidden>
>>> Reviewed-by: Alberto Garcia <address@hidden>
>>> ---
>>>  qapi/block-core.json | 76 ++-------------------------------------------
>>>  qapi/iothrottle.json | 88 
>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>  2 files changed, 91 insertions(+), 73 deletions(-)
>>>  create mode 100644 qapi/iothrottle.json
>>>
>>> diff --git a/qapi/block-core.json b/qapi/block-core.json
>>> index f85c223..9320974 100644
>>> --- a/qapi/block-core.json
>>> +++ b/qapi/block-core.json
>>> @@ -6,6 +6,7 @@
>>>
>>>  # QAPI common definitions
>>>  { 'include': 'common.json' }
>>> +{ 'include': 'iothrottle.json' }
>>>
>>>  ##
>>>  # @SnapshotInfo:
>>> @@ -1761,84 +1762,13 @@
>>>  #
>>>  # @device: Block device name (deprecated, use @id instead)
>>>  #
>>> -# @id: The name or QOM path of the guest device (since: 2.8)
>>> -#
>>> -# @bps: total throughput limit in bytes per second
>>> -#
>>> -# @bps_rd: read throughput limit in bytes per second
>>> -#
>>> -# @bps_wr: write throughput limit in bytes per second
>>> -#
>>> -# @iops: total I/O operations per second
>>> -#
>>> -# @iops_rd: read I/O operations per second
>>> -#
>>> -# @iops_wr: write I/O operations per second
>>> -#
>>> -# @bps_max: total throughput limit during bursts,
>>> -#                     in bytes (Since 1.7)
>>> -#
>>> -# @bps_rd_max: read throughput limit during bursts,
>>> -#                        in bytes (Since 1.7)
>>> -#
>>> -# @bps_wr_max: write throughput limit during bursts,
>>> -#                        in bytes (Since 1.7)
>>> -#
>>> -# @iops_max: total I/O operations per second during bursts,
>>> -#                      in bytes (Since 1.7)
>>> -#
>>> -# @iops_rd_max: read I/O operations per second during bursts,
>>> -#                         in bytes (Since 1.7)
>>> -#
>>> -# @iops_wr_max: write I/O operations per second during bursts,
>>> -#                         in bytes (Since 1.7)
>>> -#
>>> -# @bps_max_length: 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: 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: 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: 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: 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: 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: an I/O size in bytes (Since 1.7)
>>> -#
>>>  # @group: throttle group name (Since 2.4)
>>>  #
>>>  # Since: 1.1
>>>  ##
>>>  { 'struct': 'BlockIOThrottle',
>>> -  'data': { '*device': 'str', '*id': 'str', 'bps': 'int', 'bps_rd': 'int',
>>> -            'bps_wr': 'int', 'iops': 'int', 'iops_rd': 'int', 'iops_wr': 
>>> 'int',
>>> -            '*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' } }
>>> +  'base': 'IOThrottle',
>>> +  'data': { '*device': 'str', '*group': 'str' } }
>>>
>>>  ##
>>>  # @block-stream:
>>> diff --git a/qapi/iothrottle.json b/qapi/iothrottle.json
>>> new file mode 100644
>>> index 0000000..0f067c3
>>> --- /dev/null
>>> +++ b/qapi/iothrottle.json
>>> @@ -0,0 +1,88 @@
>>> +# -*- Mode: Python -*-
>>> +
>>> +##
>>> +# == QAPI IOThrottle definitions
>>> +##
>>> +
>>> +##
>>> +# @IOThrottle:
>>> +#
>>> +# A set of parameters describing IO throttling
>>> +#
>>> +# @id: The name or QOM path of the guest device (since: 2.8)
>>> +#
>>> +# @bps: total throughput limit in bytes per second
>>> +#
>>> +# @bps_rd: read throughput limit in bytes per second
>>> +#
>>> +# @bps_wr: write throughput limit in bytes per second
>>> +#
>>> +# @iops: total I/O operations per second
>>> +#
>>> +# @iops_rd: read I/O operations per second
>>> +#
>>> +# @iops_wr: write I/O operations per second
>>> +#
>>> +# @bps_max: total throughput limit during bursts,
>>> +#                     in bytes (Since 1.7)
>>> +#
>>> +# @bps_rd_max: read throughput limit during bursts,
>>> +#                        in bytes (Since 1.7)
>>> +#
>>> +# @bps_wr_max: write throughput limit during bursts,
>>> +#                        in bytes (Since 1.7)
>>> +#
>>> +# @iops_max: total I/O operations per second during bursts,
>>> +#                      in bytes (Since 1.7)
>>> +#
>>> +# @iops_rd_max: read I/O operations per second during bursts,
>>> +#                         in bytes (Since 1.7)
>>> +#
>>> +# @iops_wr_max: write I/O operations per second during bursts,
>>> +#                         in bytes (Since 1.7)
>>> +#
>>> +# @bps_max_length: 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: 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: 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: 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: 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: 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: an I/O size in bytes (Since 1.7)
>>> +#
>>> +#
>>> +# Since: 2.10
>>> +##
>>> +{ 'struct': 'IOThrottle',
>>> +  'data': { '*id': 'str', 'bps': 'int', 'bps_rd': 'int',
>>> +            'bps_wr': 'int', 'iops': 'int', 'iops_rd': 'int', 'iops_wr': 
>>> 'int',
>>> +            '*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' } }
>>
>> Awkward question for a v7, but here goes anyway: why is IOThrottle worth
>> its very own .json file?
> I feel this is a common throttle structure that is used by block
> devices as well as fsdev, so moved to a separate file.

I'm not sure that's a good idea.  Kevin, Berto, what do you think?

>
> -Pradeep
>>
>> Diff can't show the differences (if any), because you factor IOThrottle
>> out of BlockIOThrottle and move it in a single patch.  I had to extract
>> and diff by hand.
>>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]