All of lore.kernel.org
 help / color / mirror / Atom feed
From: Manos Pitsidianakis <el13635@mail.ntua.gr>
To: Kevin Wolf <kwolf@redhat.com>
Cc: Stefan Hajnoczi <stefanha@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	Alberto Garcia <berto@igalia.com>,
	qemu-block <qemu-block@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v3 4/7] block: convert ThrottleGroup to object with QOM
Date: Thu, 3 Aug 2017 15:29:23 +0300	[thread overview]
Message-ID: <20170803122923.5wqeper3cqlsatky@postretch> (raw)
In-Reply-To: <20170803111701.GG4456@dhcp-200-186.str.redhat.com>

[-- Attachment #1: Type: text/plain, Size: 5321 bytes --]

On Thu, Aug 03, 2017 at 01:17:01PM +0200, Kevin Wolf wrote:
>Am 03.08.2017 um 12:53 hat Stefan Hajnoczi geschrieben:
>> On Thu, Aug 03, 2017 at 10:08:01AM +0200, Kevin Wolf wrote:
>> > Am 02.08.2017 um 12:57 hat Manos Pitsidianakis geschrieben:
>> > > On Wed, Aug 02, 2017 at 11:39:22AM +0100, Stefan Hajnoczi wrote:
>> > > > On Tue, Aug 01, 2017 at 07:49:33PM +0300, Manos Pitsidianakis wrote:
>> > > > > On Tue, Aug 01, 2017 at 04:47:03PM +0100, Stefan Hajnoczi wrote:
>> > > > > > On Mon, Jul 31, 2017 at 12:54:40PM +0300, Manos Pitsidianakis wrote:
>> > > > > > > ThrottleGroup is converted to an object. This will allow the future
>> > > > > > > throttle block filter drive easy creation and configuration of throttle
>> > > > > > > groups in QMP and cli.
>> > > > > > >
>> > > > > > > A new QAPI struct, ThrottleLimits, is introduced to provide a shared
>> > > > > > > struct for all throttle configuration needs in QMP.
>> > > > > > >
>> > > > > > > ThrottleGroups can be created via CLI as
>> > > > > > >     -object throttle-group,id=foo,x-iops-total=100,x-..
>> > > > > > > where x-* are individual limit properties. Since we can't add non-scalar
>> > > > > > > properties in -object this interface must be used instead. However,
>> > > > > > > setting these properties must be disabled after initialization because
>> > > > > > > certain combinations of limits are forbidden and thus configuration
>> > > > > > > changes should be done in one transaction. The individual properties
>> > > > > > > will go away when support for non-scalar values in CLI is implemented
>> > > > > > > and thus are marked as experimental.
>> > > > > > >
>> > > > > > > ThrottleGroup also has a `limits` property that uses the ThrottleLimits
>> > > > > > > struct.  It can be used to create ThrottleGroups or set the
>> > > > > > > configuration in existing groups as follows:
>> > > > > > >
>> > > > > > > { "execute": "object-add",
>> > > > > > >   "arguments": {
>> > > > > > >     "qom-type": "throttle-group",
>> > > > > > >     "id": "foo",
>> > > > > > >     "props" : {
>> > > > > > >       "limits": {
>> > > > > > >           "iops-total": 100
>> > > > > > >       }
>> > > > > > >     }
>> > > > > > >   }
>> > > > > > > }
>> > > > > > > { "execute" : "qom-set",
>> > > > > > >     "arguments" : {
>> > > > > > >         "path" : "foo",
>> > > > > > >         "property" : "limits",
>> > > > > > >         "value" : {
>> > > > > > >             "iops-total" : 99
>> > > > > > >         }
>> > > > > > >     }
>> > > > > > > }
>> > > > > > >
>> > > > > > > This also means a group's configuration can be fetched with qom-get.
>> > > > > > >
>> > > > > > > ThrottleGroups can be anonymous which means they can't get accessed by
>> > > > > > > other users ie they will always be units instead of group (Because they
>> > > > > > > have one ThrottleGroupMember).
>> > > > > >
>> > > > > > blockdev.c automatically assigns -drive id= to the group name if
>> > > > > > throttling.group= wasn't given.  So who will use anonymous single-drive
>> > > > > > mode?
>> > > > >
>> > > > > Manual filter nodes. It's possible to not pass a group name value and the
>> > > > > resulting group will be anonymous. Are you suggesting to move this change to
>> > > > > the throttle filter patch?
>> > > >
>> > > > What is the use case?  Human users will stick to the legacy syntax
>> > > > because it's convenient.  Management tools will use the filter
>> > > > explicitly in the future, and it's easy for them to choose a name.
>> > > >
>> > > > Unless there is a need for this case I'd prefer to make the group name
>> > > > mandatory.  That way there are less code paths to worry about.
>> > >
>> > > I think Kevin requested this though I don't really remember the use case.
>> >
>> > There is no legacy syntax for putting a throttle node anywhere but at
>> > the root of a BlockBackend. If you want to throttle e.g. only a specific
>> > backing file, you need to manually create a throttle node.
>> >
>> > (We tend to forget this occasionally, but the work you're doing is not
>> > only cleanup just for fun, but it's actually new features that enable
>> > new use cases by making everything more flexible.)
>>
>> It's not clear to me from your reply whether you support anonymous
>> throttle groups or not.  It is possible to throttle arbitrary nodes in
>> the graph either way.
>
>I think it would be nice for human users to have them, but on second
>thought you're right that it's just syntactic sugar for an explicit
>-object, so if you think there is any difficulty with supporting
>anonymous groups, feel free to drop them.
>
>Hm, actually... Does this mean that then the whole 'limits' option in
>the throttle driver could go away, with all of the parsing code, and the
>group name becomes mandatory? That certainly does look tempting.


Anonymous groups don't pose any difficulty. The only problem with groups 
not created with -object or object-add in general is that their limits 
cannot be set with qom-set afterwards; the throttle node will require a 
reopen or replacement with a new one. This is a good argument against 
doing throttle group manipulation in the driver. I don't know if that's 
very user friendly though.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2017-08-03 12:30 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-31  9:54 [Qemu-devel] [PATCH v3 0/7] add throttle block driver filter Manos Pitsidianakis
2017-07-31  9:54 ` [Qemu-devel] [PATCH v3 1/7] block: move ThrottleGroup membership to ThrottleGroupMember Manos Pitsidianakis
2017-08-04 11:59   ` Alberto Garcia
2017-07-31  9:54 ` [Qemu-devel] [PATCH v3 2/7] block: add aio_context field in ThrottleGroupMember Manos Pitsidianakis
2017-08-04 12:14   ` Alberto Garcia
2017-07-31  9:54 ` [Qemu-devel] [PATCH v3 3/7] block: tidy ThrottleGroupMember initializations Manos Pitsidianakis
2017-08-04 12:35   ` Alberto Garcia
2017-07-31  9:54 ` [Qemu-devel] [PATCH v3 4/7] block: convert ThrottleGroup to object with QOM Manos Pitsidianakis
2017-08-01 15:47   ` Stefan Hajnoczi
2017-08-01 16:49     ` Manos Pitsidianakis
2017-08-02 10:39       ` Stefan Hajnoczi
2017-08-02 10:57         ` Manos Pitsidianakis
2017-08-02 14:43           ` Stefan Hajnoczi
2017-08-03  8:08           ` Kevin Wolf
2017-08-03 10:53             ` Stefan Hajnoczi
2017-08-03 11:17               ` Kevin Wolf
2017-08-03 12:29                 ` Manos Pitsidianakis [this message]
2017-08-08 13:01           ` Alberto Garcia
2017-07-31  9:54 ` [Qemu-devel] [PATCH v3 5/7] block: add throttle block filter driver Manos Pitsidianakis
2017-08-01 16:14   ` Stefan Hajnoczi
2017-08-03  8:07   ` Kevin Wolf
2017-08-03 11:48     ` Manos Pitsidianakis
2017-08-03 12:05       ` Kevin Wolf
2017-08-03 11:58     ` Eric Blake
2017-08-03 13:56       ` Manos Pitsidianakis
2017-08-08 13:13   ` Alberto Garcia
2017-08-08 13:45     ` Manos Pitsidianakis
2017-08-08 14:53       ` Alberto Garcia
2017-08-08 14:56         ` Manos Pitsidianakis
2017-08-08 15:04           ` Alberto Garcia
2017-08-09  9:36             ` Manos Pitsidianakis
2017-08-09 12:36               ` Alberto Garcia
2017-08-09 13:42                 ` Manos Pitsidianakis
2017-08-09 14:45                   ` Alberto Garcia
2017-08-09 15:39                     ` Kevin Wolf
2017-08-14 12:15                       ` Manos Pitsidianakis
2017-07-31  9:54 ` [Qemu-devel] [PATCH v3 6/7] block: add BlockDevOptionsThrottle to QAPI Manos Pitsidianakis
2017-08-01 16:16   ` Stefan Hajnoczi
2017-07-31  9:54 ` [Qemu-devel] [PATCH v3 7/7] block: add throttle block filter driver interface tests Manos Pitsidianakis
2017-08-03  8:07   ` Kevin Wolf
2017-08-03 13:24     ` Manos Pitsidianakis
2017-08-03 13:32       ` Kevin Wolf
2017-08-03 13:52         ` Manos Pitsidianakis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170803122923.5wqeper3cqlsatky@postretch \
    --to=el13635@mail.ntua.gr \
    --cc=berto@igalia.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.