qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: Markus Armbruster <armbru@redhat.com>, Peter Xu <peterx@redhat.com>
Cc: "Marc-André Lureau" <marcandre.lureau@redhat.com>,
	qemu-devel@nongnu.org,
	"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
	"Daniel P. Berrangé" <berrange@redhat.com>
Subject: Re: [Qemu-devel] [PATCH v7 4/7] qapi: remove COMMAND_DROPPED event
Date: Mon, 3 Sep 2018 09:30:52 -0500	[thread overview]
Message-ID: <55829207-b0f7-0869-6ec7-90bc2fb67e3a@redhat.com> (raw)
In-Reply-To: <87k1o2671t.fsf@dusky.pond.sub.org>

On 09/03/2018 08:31 AM, Markus Armbruster wrote:

> Example:
> 
>      client sends in-band command #1
>      QEMU reads and queues
>      QEMU dequeues in-band command #1
>      in-band command #1 starts executing, but it's slooow
>      client sends in-band command #2
>      QEMU reads and queues
>      ...
>      client sends in-band command #8
>      QEMU reads, queues and suspends the monitor
>      client sends out-of-band command
> --> time passes...
>      in-band command #1 completes, QEMU sends reply
>      QEMU dequeues in-band command #2, resumes the monitor
>      in-band command #2 starts executing
>      QEMU reads and executes out-of-band command
>      out-of-band command completes, QEMU sends reply
>      in-band command #2 completes, QEMU sends reply
>      ... same for remaining in-band commands ...
> 
> The out-of-band command gets stuck behind the in-band commands.
> 
> The client can avoid this by managing the flow of in-band commands: have
> no more than 7 in flight, so the monitor never gets suspended.
> 
> This is a potentially useful thing to do for clients, isn't it?
> 
> Eric, Daniel, is it something libvirt would do?

Right now, libvirt serializes commands - it never sends a QMP command 
until the previous command's response has been processed. But that may 
not help much, since libvirt does not send OOB commands.

I guess when we are designing what libvirt should do, and deciding WHEN 
it should send OOB commands, we have the luxury of designing libvirt to 
enforce how many in-flight in-band commands it will ever have pending at 
once (whether the current 'at most 1', or even if we make it more 
parallel to 'at most 7'), so that we can still be ensured that the OOB 
command will be processed without being stuck in the queue of suspended 
in-band commands.  If we never send more than one in-band at a time, 
then it's not a concern how deep the qemu queue is; but if we do want 
libvirt to start parallel in-band commands, then you are right that 
having a way to learn the qemu queue depth is programmatically more 
precise than just guessing the maximum depth.  But it's also hard to 
argue we need that complexity if we don't have an immediate use 
envisioned for it.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

  reply	other threads:[~2018-09-03 14:31 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-03  4:31 [Qemu-devel] [PATCH v7 0/7] monitor: enable OOB by default Peter Xu
2018-09-03  4:31 ` [Qemu-devel] [PATCH v7 1/7] qapi: Fix build_params() for empty parameter list Peter Xu
2018-09-03  4:31 ` [Qemu-devel] [PATCH v7 2/7] qapi: Drop qapi_event_send_FOO()'s Error ** argument Peter Xu
2018-09-03  4:31 ` [Qemu-devel] [PATCH v7 3/7] monitor: suspend monitor instead of send CMD_DROP Peter Xu
2018-09-03  7:38   ` Markus Armbruster
2018-09-03  7:56     ` Markus Armbruster
2018-09-03  9:06     ` Peter Xu
2018-09-03 13:16       ` Markus Armbruster
2018-09-04  3:33         ` Peter Xu
2018-09-04  6:17           ` Markus Armbruster
2018-09-04  7:01             ` Peter Xu
2018-09-03  4:31 ` [Qemu-devel] [PATCH v7 4/7] qapi: remove COMMAND_DROPPED event Peter Xu
2018-09-03  7:49   ` Markus Armbruster
2018-09-03 10:16     ` Peter Xu
2018-09-03 13:31       ` Markus Armbruster
2018-09-03 14:30         ` Eric Blake [this message]
2018-09-03 14:41           ` Daniel P. Berrangé
2018-09-04  5:30             ` Peter Xu
2018-09-04  8:04               ` Markus Armbruster
2018-09-05  3:53                 ` Peter Xu
2018-09-04  6:39             ` Markus Armbruster
2018-09-04  8:23               ` Daniel P. Berrangé
2018-09-04 11:46                 ` Markus Armbruster
2018-09-05 11:45                   ` Dr. David Alan Gilbert
2018-09-03  4:31 ` [Qemu-devel] [PATCH v7 5/7] monitor: remove "x-oob", turn oob on by default Peter Xu
2018-09-03  4:31 ` [Qemu-devel] [PATCH v7 6/7] Revert "tests: Add parameter to qtest_init_without_qmp_handshake" Peter Xu
2018-09-03  4:31 ` [Qemu-devel] [PATCH v7 7/7] tests: add oob functional test for test-qmp-cmds Peter Xu
2018-09-03  5:36 ` [Qemu-devel] [PATCH v7 0/7] monitor: enable OOB by default Markus Armbruster

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=55829207-b0f7-0869-6ec7-90bc2fb67e3a@redhat.com \
    --to=eblake@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).